BOAS PRÁTICAS DE PROGRAMAÇÃO Semana da FEUP, Porto 27 de Outubro de 2008 #include // main int main()‏ { bool var; if(var == false)‏ // whatever printf(“I.

Slides:



Advertisements
Apresentações semelhantes
Funções em C Prof. Fabiano Utiyama.
Advertisements

Curso de aprofundamento na linguagem C
ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Laboratório de Programação
Estruturas de Repetição
Linguagem C Marco Reis.
OpenMP.
Programação de Computadores I Prof. Eduardo 2011
INTRODUÇÃO AOS APLICATIVOS JAVA
Documentos Digitais Aula 6.
Programação Orientada aos Objectos Paulo Marques Departamento de Eng. Informática Universidade de Coimbra Out/2005 Core C++: Uma abordagem.
Programação para Engenharia I
Introdução à Computação - Jorge Macêdo
Sistemas Operacionais
Algoritmos Escher.
LPG - I: Alocação Dinâmica de Memória - Ponteiros
Linguagem C Estruturas de Controle de Fluxos
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
LINGUAGEM ESTRUTURADA TURBO C
1 Professor Rogério B. de Andrade - Aula 001- Dez/2008 Técnicas e Linguagem de Programação.
Universidade Federal do Espírito Santo
Universidade Federal do Espírito Santo Programação II Professora: Norminda Luiza.
Linguagem C Strings.
Prof. Msc. Raul Paradeda Aula 3 Fundamentos
Revisão da Linguagem C.
Classes e objetos P. O. O. Prof. Grace.
Strings Definição: Não confundir caracteres com strings
Iniciação à linguagem C++
Paradigmas de programação
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
O Portal do Estudante de Computação
Introdução a Computação e Cálculo Numérico
Introdução a Computação e Cálculo Numérico
Programação Avançada Prof. Natalia Castro Fernandes
1 Funções (versão C) Funções são pedaços de código encapsulados para fácil acesso. Em C e C++ o processo de construção de uma função passa por 2 etapas.
Representação de Algoritmos
© 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C (continuação)
Tópicos avançados em internet A
Desenvolvimento de Jogos e Entretenimento Digital
Entendendo as definições de classe
Estruturas de Dados Módulo 3 – Controle de Fluxo
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Prof. Daniel Aula 03.  Criar Projeto  Criar Pacote  Criando classes  Meu primeiro programa  Compilar  Comentários  Variáveis.
Linguagem de programação
Programação em C++ Compiladores
Algoritmo e Programação
Técnicas de Desenvolvimento de Programas
Estrutura de decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições.
Linguagem Pascal Prof. Sérgio Rodrigues.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Introdução à Linguagem C
Algumas notas sobre a linguagem de programação C
Algoritmos e Estrutura de Dados I Jean Carlo Mendes
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Programação de PIC em C Exposição das funções básicas para
18/19 de Maio de 2004Registos em Ficheiros1 Pedro Barahona DI/FCT/UNL Maio 2004.
Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
Joaquim José Hangalo  Podemos entender a memória do computador como um conjunto de células que armazenam informações.  Cada célula.
Wellington Felix.  Criada por Brian Kernighan e Denis Ritchie, na década de 1970, para uso em um computador DEC PDP-11 em Unix  C++ é uma extensão da.
Linguagem C.
Introdução à Programação
BCC221 Programação Orientada a Objetos Prof. Marco Antonio M. Carvalho 2014/2.
Profa. Maria Augusta Constante Puget
Linguagem de Programação
PSW1 Prof. Rafael. Persistência Atividade que permite que o estado de um objeto exista mesmo após a extinção do processo computacional que o criou. Em.
ALGORITMOS Profº Antonio Carlos Marcelino de Paula 1.
Engenharia de Controle e Automação Computação Para Engenharia Semana /08/2011 Professor Leomir J. Borba- –
Prof. Tertuliano Operadores Variáveis em C++.
Transcrição da apresentação:

BOAS PRÁTICAS DE PROGRAMAÇÃO Semana da FEUP, Porto 27 de Outubro de 2008 #include // main int main()‏ { bool var; if(var == false)‏ // whatever printf(“I hate Hello World's\n”); }

#include // main function int main()‏ { bool var; if(var == false)‏ // whatever printf(“I hate Hello World's\n”); }

#include // main function int main()‏ { bool var; // if var, then whatever if(var == false)‏ printf(“I hate Hello World's\n”); }

// headers #include // main function int main()‏ { bool var = false; // if var, then whatever if(var == false)‏ printf(“I hate Hello World's\n”); }

#include // main int main()‏ { bool var; if(var == false)‏ // whatever printf(“I hate Hello World's\n”); } // hateHelloWorld.cpp // EN: I hate “Hello World” programs // 2008 FEUP // 2008 The boring guy tutoring you // ======================================= // EN: pre-processor // ======================================= // // EN: headers #include // // EN: main function to hate int main()‏ { bool l_condition = false; /** TODO */ if(l_condition == false)‏ printf(“I hate Hello World's\n”); } // ======================================= // == EOF ================================ // =======================================

1. comentar por blocos lógicos 2. evitar comentários desnecessários 3. texto coerente nos comentários 4. separar devidamente as instruções 5. evitar atalhos 6. inicializar variáveis 7. nomes descritivos em variáveis e funções 8. alinhamento do código por blocos

Boas práticas não se limitam a formatação É preciso ganhar disciplina.

// hateHelloWorld.cpp // EN: I hate “Hello World” programs // 2008 FEUP // 2008 The boring guy tutoring you // ======================================= // EN: pre-processor // ======================================= // // EN: headers #include // // EN: main function to hate int main()‏ { bool l_condition = false; /** TODO */ if(false == l_condition)‏ printf(“I hate Hello World's\n”); } // ======================================= // == EOF ================================ // ======================================= // hateHelloWorld.cpp // EN: I hate “Hello World” programs // 2008 FEUP // 2008 The boring guy tutoring you // ======================================= // EN: pre-processor // ======================================= // // EN: headers #include // // EN: main function to hate int main()‏ { bool l_condition = false; /** TODO */ if(l_condition == false)‏ printf(“I hate Hello World's\n”); } // ======================================= // == EOF ================================ // =======================================

Pontos chave  nome do ficheiro no cabeçalho facilita identificação em editores  descrição deve seguir de imediato  identificação da entidade que alberga o projecto é prioritária (a entidade alberga, promove, financia o projecto), ano em que nasceu o ficheiro  identificação dos elementos que alteraram o ficheiro e a data em que o fizeram pela primeira vez  separação do ficheiro por zonas lógicas  prefixo no nome da variável dá pistas sobre a origem  nome da variável é mais descritivo  variável inicializada  zona de código em falta está identificada, torna-se mais fácil detectar zonas incompletas (grep)‏  colocar o valor no lado esquerdo da comparação facilita a identificação potenciais erros // hateHelloWorld.cpp // EN: I hate “Hello World” programs // 2008 FEUP // 2008 The boring guy tutoring you // ======================================= // EN: pre-processor // ======================================= // // EN: headers #include // // EN: main function to hate int main()‏ { bool l_condition = false; /** TODO */ if(false == l_condition)‏ printf(“I hate Hello World's\n”); } // ======================================= // == EOF ================================ // =======================================

Plataforma API de Backend Camada de negócio Camada de apresentação

1. cuidado nas comparações 2. verificação dos resultados das operações 3. consistência na escolha de APIs 4. consistência na escolha de nomes para métodos, funções e variáveis 5. evitar juntar várias operações numa só expressão 6. evitar aglutinar demasiado o código

7. cuidado especial com construtores, destrutores, gestão de memória e excepções 8. quando necessário, gerar API's internas ao projecto, que mascaram o backend e protegem a camada de negócio ao portar para outras plataformas 9. um interface é um contrato e a implementação é (quase) sempre feita à volta do contrato 10. preparar com antecedência os elementos periféricos de que o projecto depende (makefiles?)‏

Desempenho

1. Programadores tendem a tratar o computador como se tivesse recursos infinitos – oops! 2. Armazenamento não é infinito 3. Capacidade de processamento não é infinta 4. Margem de processamento não é infinita 5. Velocidade de transferência não é infinita 6. Volume de transferência não é infinito Problemas

. for(int i = 0; i < 1000; ++ i)‏ { for(int j = 0; j < 1000; ++ j)‏ { for(int k = 0; k < 1000; ++ k)‏ { // algoritmo }. int i = 0; int j = 0; int k = 0; for(i = 0; i < 1000; ++ i)‏ { for(j = 0; j < 1000; ++ j)‏ { for(k = 0; k < 1000; ++ k)‏ { // algoritmo }.

1. Qual o grau de dependência do resto do projecto em relação ao pedaço do bloqueio? 2. É possível dar a volta temporariamente? 3. É importante resolver já ou qualquer decisão agora é irreversível/não viável após o avanço do projecto? Bloqueados?

Ping?