Skip to content

Instantly share code, notes, and snippets.

@MoisesDuarte
Last active June 3, 2020 23:57
Show Gist options
  • Save MoisesDuarte/48592042005763b1182328a028eaf834 to your computer and use it in GitHub Desktop.
Save MoisesDuarte/48592042005763b1182328a028eaf834 to your computer and use it in GitHub Desktop.
ConteudoAulasUnisepe

Programação Estruturada

  • Linkedição: Compilação das bibliotecas externas junto do código fonte

TAD (Tipos Abstratos de Dados)

Organização de arquivos (uso de functions e typedefs para organizar o código)

  • Tipos de Dados: Variaveis | Constantes
  • Definição / Assinatura: Funções | Métodos
int soma(int n1, int n2) {
    return n1 + n2;
}
  • arquivos .h e .c

Lista encadeada

  • Inserção e remoção no inicio, meio e fim.
    • Inserção no fim: Checa o elemento que aponta como proximo null e faz este apontar para o novo elemento
    • Inserção no meio:
      • Variavel Auxiliar: Utilizada para inserção entre dois registros (recebe o elemento anterior, efetuando uma copia, para romper a ligação entre este e o próximo, guardando as informações para linkar o novo elemento)
    • Inserção no inicio: Procura para qual endereço proximo a cabeça esta apontando, que apontara para o novo elemento, que apontara para o antigo inicio da lista

Pilhas

  • LIFO: Last in, First Out
    • Para remover determinado objeto da pilha, necessário remover todos que estão 'acima' dele.
    • Inserção é feito no ultimo, retirada feita no ultimo

Filas

  • FIFO: First in, first out
    • Primeiro objeto é processado e finalizado, próximo processo então passa por mesmo processo, subsequentemente.

Programação Orientada a Objetos

Desenvolvimento atualmente

  • Sistemas sem setores
  • Acesso Online
  • Necessidade de criação e melhoria de padrões de desenvolvimento
  • Gerar valor (financeiro, social, educativo, etc)
  • O que é um escopo?

O que define o sucesso de um projeto?

  • Concluido dentro do prazo previsto
  • Concluido dentro do orçamento previsto
  • Ter atingido a qualidade e o desempenho desejados
  • Concluído com o minimo possível de alterações em seu escopo
  • Ter sido aceito sem restrições pelo contratante ou cliente

ISO/IEC 9162

  • Qualidade Interna (Construção)
  • Qualidade Externa (Testes)
  • Qualidade em Uso (Custo-Benefício, habilidade para operar em ambiente colaborativo)

Acurácia: O que se espera do projeto x O que o projeto entregou;

Segurança de acesso: Proteção de informações,

Qualidade Interna e Externa

  • Confiabilidade
  • Recuperabilidade
  • Usabilidade
  • Atratividade
  • Modificabilidade
  • Testabilidade

Engenharia de Requisitos

Técnicas de Levantamento de Requisitos

  • Documentação
  • Observação
  • Questionário
  • Entrevista

Níveis de descrição

  • Requisitos de usuário: serviços referentes a relação usuário-sistema, feito para leitura pelo usuário (não-técnico, informal, nas palavras do usuário);
  • Requisitos de sistema: implementação e estrutura do sistema, feito para leitura pelos colaboradores do projeto (técnico, formal, funções e requisitos internos do sistema, definido pelo desenvolvedor);

Requisitos de software

  • Requisitos funcionais: Declarações de serviços que o sistema deve fornecer (requisitos de sistema, requisitos de usuário);
  • Requisitos não-funcionais: Restrições aos serviços e funções oferecidos pelo sistema (requisitos que o usuário não visualiza, não pede, se encaixam em 3 categorias: de produto, organizacionais, externos);
    • Requisitos de produto: Especificam ou restringem o comportamento de software. Configuração mínima, de hardware e software (Placas Gráfica, Softwares, bibliotecas, internet, etc);
    • Requisitos organizacionais: Derivados das políticas e procedimentos da organização e\ou cliente. Funções restrita a determinados departamentos (consulta de boletos apenas para financeiro, etc);
    • Requisitos externos: Derivam de fatores externo ao sistema e seu processo de desenvolvimento. Regras de adequação, normas júridicas, nota fiscal;

Diagrama de Caso de Uso

  • Ator: Qualquer elemento externo que interaja com o software;

Herança, Generalização

  • Generalização: Agrupamento de informações atreladas a uma determinada ação

POO - Conceitos de OO

  • Classificação: Nível do objeto (ex: admin, superadmin, convidado);
  • Abstração: Características (Atributos) e Ações (Métodos) da classe;
  • Instância: Item de conjunto representado pela classe, com as mesmas características e comportamentos da classe;

Visibilidade

  • # = Protected
  • + = Public
  • - = Private
  • ~ = Package

Tipos de associação

  • Associação Binária: Duas classes interconectadas, sem dependência uma da outra (um não depende do outro para existir, apenas uma linha simples);
  • Agregação: Um objeto todo toma informações de um objeto-parte, não necessariamente dependente (classe não depende da outra para existir, losango vazio);
  • Composição: Semelhante a agregação, mais com um vinculo mais forte, implicando em dependência (classe depende da outra para existir, losango preenchido);
  • Generalização: Ocorrência de herança de classes, agrupamento de classes e seus atributos à uma entidade todo (seta conectada à entidade-todo);

Tipos de diagramas

Diagrama de Pacotes

  • Serve para deixar o projeto organizado. Dentro de cada pacote vai as classes referentes (ex: interfaces, classe, etc).
    • Dependência: Um pacote depende do outro para funcionar (ex: pacote de telas depende de pacote de dados)

Diagrama de Atividades

  • Serve para demonstrar as atividades efetuadas pelo algoritmo desde seu ínicio até o fim.

Atividade Extra

  • Gravar videos explicando o funcionamento do seguintes algoritmos:

    • MergeSort
    • QuickSort
    • ShellSort
  • Tópicos do vídeo:

    • Introdução: Apresentação da história do algoritmo, criador e especificações.
    • Pseudocódigo: Demonstração do pseudocodigo que representa o algoritmo.
    • Exemplo: Mostrar funcionamento do algoritmo com exemplo em C.

Ordenação

  • Conceito: Operação de rearranjar os dados em uma determinada ordem (alfabético, crescente, decrescente, etc.).
  • Observações: Devem ser considerados tempo gasto pela ordenação e uso econômico de memória na escolha do algoritmo.

Principais Algoritmos

  • Bubble Sort ou trocas sucessivas: Método simples de ordenação que faz trocas sucessivas com base em comparações, flutuando o elemento pelo vetor, trocando ele pelo seu 'parente' em caso positivo da comparação, até esse alcançar o fim do vetor. Esse processo é repetido sucessivamente até o vetor ser organizado. A cada iteração, o indice é decrementando em um, evitando repetir a troca em campos já ordenados.
  • Selection Sort:
  • Insertion Sort:
  • Merge Sort:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment