Algoritmos e Estrutura de Dados 1o bimestre.docx
Document Details
Uploaded by DiplomaticRaleigh
Tags
Related
- Object-Oriented Software Development Introduction PDF
- Gls University Object-Oriented Programming Notes PDF
- Python Unit 1 Notes - Introduction to Python & Clean Coding PDF
- Java Programming Principles PDF
- CAB201 Programming Principles Lecture Notes PDF
- CMPT 214 Programming Principles and Practice Lecture 19 PDF
Full Transcript
[**Antes de qualquer coisa todo os programas devem conter um cabeçalho 2**](#antes-de-qualquer-coisa-todo-os-programas-devem-conter-um-cabe%C3%A7alho) [**12 boas práticas da programação segundo o livro Código Limpo 2**](#boas-pr%C3%A1ticas-da-programa%C3%A7%C3%A3o-segundo-o-livro-c%C3%B3digo-limpo)...
[**Antes de qualquer coisa todo os programas devem conter um cabeçalho 2**](#antes-de-qualquer-coisa-todo-os-programas-devem-conter-um-cabe%C3%A7alho) [**12 boas práticas da programação segundo o livro Código Limpo 2**](#boas-pr%C3%A1ticas-da-programa%C3%A7%C3%A3o-segundo-o-livro-c%C3%B3digo-limpo) [**1. Escreva código legível 2**](#escreva-c%C3%B3digo-leg%C3%ADvel) [**2. Construa funções pequenas e coesas 2**](#construa-fun%C3%A7%C3%B5es-pequenas-e-coesas) [**3. Escolha nomes significativos para o código 2**](#escolha-nomes-significativos-para-o-c%C3%B3digo) [**4. Deixe comentários relevantes 2**](#deixe-coment%C3%A1rios-relevantes) [**5. Use uma formatação consistente 2**](#use-uma-formata%C3%A7%C3%A3o-consistente) [**6. Abuse dos testes unitários 2**](#abuse-dos-testes-unit%C3%A1rios) [**7. Adote o Princípio da Responsabilidade Única 3**](#adote-o-princ%C3%ADpio-da-responsabilidade-%C3%BAnica) [**8. Aposte no princípio Aberto/Fechado 3**](#aposte-no-princ%C3%ADpio-abertofechado) [**9. Garanta o Princípio da Substituição de Liskov 3**](#garanta-o-princ%C3%ADpio-da-substitui%C3%A7%C3%A3o-de-liskov) [**10. Mantenha o Princípio da Inversão de Dependência 3**](#mantenha-o-princ%C3%ADpio-da-invers%C3%A3o-de-depend%C3%AAncia) [**11. Elimine a duplicação de código 3**](#elimine-a-duplica%C3%A7%C3%A3o-de-c%C3%B3digo) [**12. Controle a complexidade 3**](#controle-a-complexidade) [**Estrutura básica de um programa em C 3**](#estrutura-b%C3%A1sica-de-um-programa-em-c) [**Tipos Básicos de Dados 4**](#tipos-b%C3%A1sicos-de-dados) [**Declaração (definição) de variáveis 5**](#declara%C3%A7%C3%A3o-defini%C3%A7%C3%A3o-de-vari%C3%A1veis) [**Operadores Aritméticos 5**](#operadores-aritm%C3%A9ticos) [**Operadores de incremento e decremento 6**](#operadores-de-incremento-e-decremento) [**Operadores Relacionais 7**](#operadores-relacionais) [**Funções de entrada e saída 8**](#fun%C3%A7%C3%B5es-de-entrada-e-sa%C3%ADda) [**Estruturas de decisão ou condicionais ou de seleção 10**](#estruturas-de-decis%C3%A3o-ou-condicionais-ou-de-sele%C3%A7%C3%A3o) **Antes de qualquer coisa todo os programas devem conter um cabeçalho** ======================================================================= As informações mínimas que seu cabeçalho deve conter são: **Objetivo: objetivo do código** **Autor: nome do programador** **Data de criação: data que o código foi criado** 12 boas práticas da programação segundo o livro Código Limpo ============================================================ 1. Escreva código legível ========================= O código legível é aquele que é fácil de entender à primeira vista. Isso envolve escolher nomes significativos para variáveis, funções e classes, de modo que o propósito e a função sejam claros. Além disso, o código deve ser formatado de maneira consistente e seguir convenções de estilo para facilitar a leitura e a manutenção. Essa prática pode ser difícil no início de carreira, mas deve ser uma busca constante. 2. Construa funções pequenas e coesas ===================================== Funções pequenas e coesas fazem uma única coisa e, geralmente, a fazem bem. Isso torna o código mais fácil de entender, testar e reutilizar. Funções grandes e complexas podem se tornar difíceis de compreender e podem acumular muitas responsabilidades, tornando a [[manutenção do software]](https://logap.com.br/blog/o-que-e-manutencao-software/) problemática. 3. Escolha nomes significativos para o código ============================================= Escolher nomes descritivos e significativos para variáveis, funções e classes é fundamental na criação de Código Limpo. Nomes bem escolhidos comunicam o propósito e a função do elemento no código, reduzindo a necessidade de comentários explicativos. Indo além, eles permitem que outros desenvolvedores entendam o código sem qualquer tipo de problema, o que é ótimo para evitar a perda de tempo e criação de novas falhas. 4. Deixe comentários relevantes =============================== Embora o objetivo seja escrever código autoexplicativo, como falamos acima, às vezes os comentários são necessários para esclarecer partes complexas ou decisões de design do código. Nesse sentido, os comentários devem explicar o porquê, a intenção ou a lógica por trás do código, em vez de simplesmente repetir o que o código faz. Quanto mais didático, melhor. 5. Use uma formatação consistente ================================= A formatação consistente é vital para a legibilidade do Código Limpo. Manter um estilo de formatação consistente em todo o projeto facilita a leitura e ajuda os desenvolvedores a se concentrarem no conteúdo em vez de se preocuparem com a formatação. A boa organização encurta o processo de compreensão do código, lembre-se disso. 6. Abuse dos testes unitários ============================= Os testes unitários são parte essencial da garantia de qualidade do software. Eles ajudam a verificar se as partes individuais do código funcionam como deveriam. Um código com testes bem escritos proporciona confiança aos desenvolvedores para fazer alterações sem medo de introduzir erros. Mas, caso isso aconteça, os testes ajudarão a detectar e eliminar as novas falhas. 7. Adote o Princípio da Responsabilidade Única ============================================== O Princípio da Responsabilidade Única prega que uma classe ou função deve ter apenas uma única responsabilidade. Isso facilita a manutenção, pois alterações em uma responsabilidade não afetarão as outras. Classes e funções com uma única responsabilidade também tendem a ser mais reutilizáveis e, de maneira geral, cooperam para o sistema ser construído com um Código Limpo. 8. Aposte no princípio Aberto/Fechado ===================================== Esse princípio sugere que o código deve estar aberto para extensão, mas fechado para modificação. Isso significa que você pode adicionar novos recursos ou comportamentos através da criação de novas classes ou funções sem alterar o código existente. Isso ajuda a evitar efeitos colaterais não desejados, muito comuns em processos de desenvolvimento com baixa organização e pouca cobertura de [[testes automatizados]](https://logap.com.br/blog/o-que-e-teste-automatizado/). 9. Garanta o Princípio da Substituição de Liskov ================================================ O Princípio da Substituição de Liskov estabelece que as classes derivadas (subclasses) devem ser substituíveis por suas classes base (superclasses) sem afetar a funcionalidade do programa. Na prática, isso garante que as substituições de classes não quebrem o comportamento esperado do código, ou simplesmente adicionem complexidade de leitura e manutenção para outros devs. 10. Mantenha o Princípio da Inversão de Dependência =================================================== Esse princípio defende que módulos de alto nível não devem depender de módulos de baixo nível, mas ambos devem depender de abstrações. Isso promove um design mais flexível e desacopla as partes do sistema, tornando-o mais fácil de modificar e manter. 11. Elimine a duplicação de código ================================== Duplicação de código resulta em manutenção difícil e inconsistências --- fatores que são contra as premissas do código limpo. Eliminar duplicações promove a consistência e evita a necessidade de fazer alterações em vários lugares quando requisitos mudam. E acredite, isso ainda acontece em muitos softwares criados por profissionais com pouca experiência. Então, internalize essa regra e evite cair nessa armadilha. 12. Controle a complexidade =========================== Controlar a complexidade do código é crucial em todos os sentidos. Funções pequenas, nomes significativos, princípios de design sólidos e escolha de abstrações adequadas contribuem para manter a complexidade sob controle. Isso facilita a manutenção e evita que o código se torne difícil de entender. Além disso, vai reduzir a chance de bugs inesperados aparecerem. Portanto, toda a complexidade deve ser abolida do sistema. Um bom desenvolvedor é aquele que tem condições de escrever um código fácil de compreender, sem complexidades e que não atrapalhe a evolução do sistema. Portanto, adotar a cultura do Código Limpo faz parte das boas práticas de programação que um profissional do desenvolvimento precisa ter. Estrutura básica de um programa em C ==================================== - - - - - **Exemplo de um programa bem simples** -------------------------------------- int a; main(){ a=10; printf("O valor de a é: %d", a ); Tipos Básicos de Dados ====================== -- -- -- -- -- -- -- -- Declaração (definição) de variáveis =================================== A linguagem C é *case sensitive* e interpreta letras minúsculas diferente de letras maiúsculas, sendo assim uma variável de nome VAR é diferente de de uma variável de nome var. As variáveis devem ser declaradas da seguinte forma: Tipo nome\_variavel; // onde o tipo deve ser igual a um dos tipos da tabela anterior e o nome da variável deve seguir as seguintes regras: - As variáveis devem ser nomeadas com nomes significativos, ou seja, devem refletir sua função no programa. - O nome deve começar por Letra: 'a' a 'z' ou 'A' a 'Z' ou algarismos de 0 a 9 - Não são permitidos nomes ou palavras reservadas **Constantes** -------------- São usadas para armazenar valores que NÃO podem ser modificados durante a execução de um programa. A declaração da constante deve ser feita no início do programa e usamos a diretiva \#define. Sintaxe: \#define \ \ Por padrão, o nome das variáveis constantes deve usar letras maiúsculas. Declarando as constantes como maiúsculas podemos facilmente diferenciá-las das variáveis que por convenção devem ser declaradas em letras minúsculas. Exemplos de declaração de constantes As constantes tem duas vantagens principais: 1 -- facilitam a modificação do programa 2 -- tornam o programa mais legível. Outra forma de utilizar constantes em C é usar o comando const. Ao usar const será declarada uma constante de um determinado tipo de dado obrigatoriamente, mas também seu valor não pode ser alterado em tempo de execução. Ao declarar o tipo devemos em seguida atribuir o valor para a constante. Por exemplo: const float frete = 10.50; Operadores Aritméticos ====================== **Operadores** **Símbolo** ---------------- ----------------------------------- \+ adição \- subtração \* multiplicação / divisão \% módulo (obtém o resto da divisão) Operadores de incremento e decremento ===================================== **Operadores** **Símbolo** ---------------- ------------------------ ++ adiciona um a variável -- subtrai um a variável Os operadores de incremento e decremento podem ser pós-fixados ou pré-fixados. Exemplo: O programa abaixo incrementa a variável var e coloca o valor na var2 que no nosso caso será 6. Saída do programa: var=6 var2=6 O programa abaixo coloca o valor da variável var na var2 que é 5 para depois incrementar a variável var. ![](media/image1.png) Saída do programa: var=6 var2=5 Você deve ter observado que é preciso total conhecimento e entendimento de como os operadores de incremento e decremento funcionam para não incorrer em erros nos resultados do seu programa. Operadores Relacionais ====================== Esses operadores são responsáveis pelas comparações de expressões nos programas. **Operador** **Descrição** -------------- --------------- \> Maior \>= Maior igual \< Menor \