Escrita de Programas. António Rito Silva - João Pereira
|
|
- Cacilda Bergmann Marinho
- 6 Há anos
- Visualizações:
Transcrição
1 Escrita de Programas António Rito Silva - Rito.Silva@ist.utl.pt João Pereira Joao@inesc-id.pt
2 Sumário Caracterização Objectivos Qualidades Técnicas Casos Notáveis Conclusões Escrita de Programas 2
3 Objectivos O desenho pode não ter abordado todos os aspectos da plataforma e do ambiente de programação O código deve ser legível, não apenas por quem o escreveu, mas por todos os membros da equipa Deve-se tirar proveito das características do desenho, das estruturas de dados, e dos construtores da linguagem de programação Escrita de Programas 3
4 Qualidades Simplicidade Conformidade com o desenho Rastreabilidade Escrita de Programas 4
5 Qualidades o código é para ser lido!!!! Escrita de Programas 5
6 Do Desenho à Implementação As qualidades do desenho devem ser preservadas no código Independência Ligação fraca Coesão forte Manter a rastreabilidade, em ambos os sentidos, entre o desenho e o código Escrita de Programas 6
7 Técnicas Normas de codificação Regras de codificação Escrita de Programas 7
8 Normas de Codificação O código é desenvolvido em equipa, os membros da equipa vão Testar o código Modificar o código Reutilizar o código Rever o código É importante que os membros da equipa entendam o código, porque é que se escreveu, e qual é a relação com o seu trabalho É necessário usar as normas de codificação (standards) da empresa Escrita de Programas 8
9 Normas de Codificação Todo o código deve usar as mesmas normas Quais as normas não é tão importante como a sua utilização uniforme em todo o código Mais fácil de manter Mais fácil de entender Se alguém encontra um pedaço de código que não respeita as normas deve-o alterar de imediato Escrita de Programas 9
10 Vantagens das Normas Para quem escreve Ajuda a organizar as ideias Ajuda a evitar os erros Ajuda quando se fazem alterações Ajuda quando se quer recomeçar o trabalho após uma interrupção Ajuda na tradução do desenho para o código Para os outros Facilita os outros a entender o código quando Testam Integram Fazem manutenção Procuram reutilizar Escrita de Programas 10
11 Comentar Métodos Em princípio não é necessário comentar os métodos Se um método é pouco claro pode-se alterar o seu nome ou re-factorizar Apenas devem ser comentados quando: ainda não estão terminados não é claro e a alteração de nome e a re-factorização não foi eficaz se usa um algoritmo pouco usual ou que está publicado em algum lado se foi a causa de um mau desempenho e foi reescrito, deve ser comentado a assinalar esse facto Menos de 1% dos métodos necessitam de ter comentários Escrita de Programas 11
12 Regras de Codificação Estruturas de controlo Algoritmos Estruturas de dados Rever e re-escrever Escrita de Programas 12
13 Estruturas de Controlo A estrutura de controlo é sugerida pelo desenho A implementação deve preservar a estrutura de controlo do desenho Cada componente deve poder ser lido de cima para baixo, sem saltos de controlo Escrita de Programas 13
14 Estruturas de Controlo Generalidade é uma virtude que facilita a leitura, os casos especiais devem estar encapsulados em componentes em que as variações são expressas pelos seus parâmetros As estruturas de controlo resultantes da especificidade da implementação não devem intervir com a estrutura de controlo do desenho Escrita de Programas 14
15 Estruturas de Controlo benefit = minimum; if (age < 75) goto A; benefit = maximum; goto C; if (AGE < 65) goto B; if (AGE < 55) goto C; A: if (AGE < 65) goto B; benefit = benefit * bonus; goto C; B: if (age < 55) goto C; benefit = benefit * 1.5; C: next statement Escrita de Programas 15
16 Estruturas de Controlo if (age < 55) benefit = minimum; elseif (AGE < 65) benefit = minimum + bonus; elseif (AGE < 75) benefit = minimum * bonus; else benefit = maximum; Escrita de Programas 16
17 Algoritmos O desenho pode especificar a classe de algoritmo a usar mas o programador tem muita liberdade de implementação A eficiência e o desempenho são factores que influenciam a codificação dos algoritmos, contudo podem existir custos: Demora mais tempo a codificar É mais complexo de testar É mais difícil de entender É mais complicado de alterar Mais uma vez, é necessário fazer os compromissos necessários em função dos requisitos existentes Cuidado com a impacto dos geradores de código e do hardware sobre as optimizações Escrita de Programas 17
18 Estruturas de Dados Manter o programa simples Re-estruturar os dados pode simplificar os cálculos do programa Uma tabela indexada pode simplificar uma estrutura de controlo pois os indexes são usados num ciclo Usar a estrutura de dados para definir a estrutura do programa Uma estrutura de dados recursiva pode levar à definição de procedimentos recursivos Escrita de Programas 18
19 Estruturas de Dados 1. For the first $10,000 of income, the tax is 10% 2. For the next $10,000 of income above $10,000, the tax is 12 percent 3. For the next $10,000 of income above $20,000, the tax is 15 percent 4. For the next $10,000 of income above $30,000, the tax is 18 percent 5. For any income above $40,000, the tax is 20 percent tax = 0. if (taxable_income == 0) goto EXIT; if (taxable_income > 10000) tax = tax ; else{ tax = tax +.10*taxable_income; goto EXIT; if (taxable_income > 20000) tax = tax ; else{ tax = tax +.12*(taxable_income-10000): goto EXIT; if (taxable_income > 30000) tax = tax ; else{ tax = tax +.15*(taxable_income-20000); goto EXIT; if (taxable_income < 40000){ tax = tax +.18*(taxable_income-30000); goto EXIT; else tax = tax *(taxable_income-40000); EXIT; Escrita de Programas 19
20 Estruturas de Dados Define a tax table for each bracket of tax liability Bracket Base Percent , , , , Simplified algorithm for (int i=2; level=1; i <= 5; i++) if (taxable_income > bracket[i]) level = level + 1; tax = base[level]+percent[level]*(taxable_income bracket[level]);
21 Rever e Re-escrever Quando se verifica que o fluxo de controlo está confuso, ou o processo de decisão é difícil de entender, ou os saltos incondicionais difíceis de eliminar, deve-se retornar ao desenho para: Saber se o problema está no desenho Saber se o problema está na tradução Nunca remendar!! Escrita de Programas 21
22 Casos Notáveis Extrair método In Refactoring: Improving the Design of Existing Code. Martin Fowler. extractmethod.html Introduzir variáveis explicativas In Refactoring: Improving the Design of Existing Code. Martin Fowler. introduceexplainingvariable.html Escrita de Programas 22
23 Extrair Método void printowing() { Enumeration e = this.orders.elements(); double outstanding = 0.0; // print banner System.out.printin ("************************"); System.out.printin ("**** Customer Owes *****"); System.out.printin ("************************"); // calculate outstanding while (e.hasmoreelements()) { Order each = (Order) e.nextelement(); outstanding += each.getamount(); //print details System.out.println("name:" + this.name); System.out.println("amount" + outstanding); Escrita de Programas 23
24 Extrair Método void printowing() { Enumeration e = this.orders.elements(); double outstanding = 0.0; printbanner(); // calculate outstanding while (e.hasmoreelements()) { Order each = (Order) e.nextelement(); outstanding += each.getamount(); //print details System.out.println("name:" + this.name); System.out.println("amount" + outstanding); void printbanner() { System.out.printin ("************************"); System.out.printin ("**** Customer Owes *****"); System.out.printin ("************************"); Escrita de Programas 24
25 Extrair Método void printowing() { Enumeration e = this.orders.elements(); double outstanding = 0.0; printbanner(); // calculate outstanding while (e.hasmoreelements()) { Order each = (Order) e.nextelement(); outstanding += each.getamount(); printdetails(outstanding); void printdetails(double outstanding) { System.out.println("name:" + this.name); System.out.println("amount" + outstanding); Escrita de Programas 25
26 Extrair Método void printowing() { printbanner(); double outstanding = getoutstanding(); printdetails(outstanding); double getoutstanding() { Enumeration e = this.orders.elements(); double outstanding = 0.0; while (e.hasmoreelements()) { Order each = (Order) e.nextelement(); outstanding += each.getamount(); return outstanding; Escrita de Programas 26
27 Extrair Método Consequências Aumenta legibilidade do código Aumenta potencial de reutilização Facilita testes Reduz duplicação de código Escrita de Programas 27
28 Introduzir Variáveis Explicativas double price() { // price is base price - quantity discount + shipping return this.quantity * this.itemprice - Math.max(0, this.quantity - 500) * this.itemprice * Math.min(this.quantity * this.itemprice * 0.1, 100.0); double price() { // price is base price - quantity discount + shipping final double baseprice = this.quantity * this.itemprice; return baseprice - Math.max(0, this.quantity - 500) * _itemprice * Math.min(this.quantity * this.itemprice * 0.1, 100.0); Escrita de Programas 28
29 Introduzir Variáveis Explicativas double price() { // price is base price - quantity discount + shipping final double baseprice = this.quantity * this.itemprice; return baseprice - Math.max(0, this.quantity - 500) * this.itemprice * Math.min(basePrice * 0.1, 100.0); double price() { // price is base price - quantity discount + shipping final double baseprice = this.quantity * this.itemprice; final double quantitydiscount = Math.max(0, this.quantity - 500) * this.itemprice * 0.05; return baseprice - quantitydiscount + Math.min(basePrice * 0.1, 100.0); Escrita de Programas 29
30 Introduzir Variáveis Explicativas double price() { final double baseprice = this.quantity * this.itemprice; final double quantitydiscount = Math.max(0, this.quantity - 500) * this.itemprice * 0.05; final double shipping = Math.min(basePrice * 0.1, 100.0); return baseprice - quantitydiscount + shipping; Escrita de Programas 30
31 Introduzir Variáveis Explicativas if ((platform.touppercase().indexof("mac") > -1) && (browser.touppercase().indexof("ie") > -1) && wasinitialized() && resize > 0 ) { // do something final boolean ismacos = platform.touppercase().indexof("mac") > -1; final boolean isiebrowser = browser.touppercase().indexof("ie") > -1; final boolean wasresized = resize > 0; if (ismacos && isiebrowser && wasinitialized() && wasresized) { // do something Escrita de Programas 31
32 Conclusões P87 Evitar Truques Existem muitas formas de justificar a utilização de truques: Os programadores querem mostrar que são muito inteligentes Os responsáveis da manutenção do software quando se aperceberem dos truques vão perceber como o programador foi inteligente e também vão concluir acerca da sua própria esperteza Segurança Mas como afirma Allen Marco os truques são a utilização idiota da inteligência Escrita de Programas 32
33 Conclusões P88 Evitar Variáveis Globais Torna difícil identificar que parte do software corrompeu uma variável global P89 Escrever para Ler de Cima- Para-Baixo Torna o código mais legível P90 Evitar Efeitos Colaterais São muito difíceis de detectar Escrita de Programas 33
34 Conclusões P91 Utilizar Nomes com Significado Os programadores passam apenas 10-15% do tempo a escrever código Reduz o número de comentários P92 Escrever Programas para as Pessoas No início o recurso mais valioso era o computador mas hoje em dia são as pessoas Trabalho de desenvolvimento Trabalho de manutenção... Escrita de Programas 34
35 Conclusões P93 Utilizar as Estruturas de Dados Adequadas As estruturas de dados e a estrutura do programa que manipula esses dados estão intimamente relacionadas P94 Legível Antes de Eficiente É mais fácil adaptar um programa legível para ser mais eficiente do que adaptar um programa eficiente para ser legível Ambicionar o desenvolvimento iterativo Escrita de Programas 35
36 Conclusões P100 Código Estruturado Não é Necessariamente Bom Código Código com objectos não é necessariamente bom código... P101 Não Encaixar Comandos com Muita Profundidade Evitar ir para além de 3 níveis de profundidade Escrita de Programas 36
37 Conclusões P102 Usar as Linguagens Apropriadas... mas se cliente quiser uma linguagem que não é a mais apropriada do ponto vista técnico... P103 A Linguagem de Programação não pode Servir de Desculpa Bons programadores são bons programadores independentemente da linguagem Escrita de Programas 37
38 Conclusões P105 Formatar os Programas Indentação incoerente Indentação incorrecta (que parece estar coerente) pior que indentação incoerente (alinhar um else com o if errado) Escrita de Programas 38
39 Referências Pfleeger01, Capítulo6. David95, Alguns Princípios do Capítulo 5. Martin Fowler. Extract Method and Introduce Explaning Variable. In Refactoring: Improving the Design of Existing Code index.html Escrita de Programas 39
Escrita de Programas. António Rito Silva
Escrita de Programas António Rito Silva Rito.Silva@inesc-id.pt Sumário Caracterização Objectivos Qualidades Técnicas Casos Notáveis Conclusões Escrita de Programas 2 Objectivos O desenho pode não ter abordado
Leia maisSumário. Escrita de Programas. Qualidades. Objectivos. Engenharia de Software. Caracterização. Técnicas Casos Notáveis Conclusões
Engenharia de Software Escrita de Programas António Rito Silva Rito.Silva@inesc-id.pt Sumário Caracterização Objectivos Qualidades Técnicas Casos Notáveis Conclusões Escrita de Programas 2 Objectivos O
Leia maisO catálogo de refatorações é composto de 72 operações agrupadas em 5 categorias:
O catálogo de refatorações é composto de 72 operações agrupadas em 5 categorias: Composição de métodos Movendo responsabilidades entre métodos Organizando dados Simplificando expressões condicionais Transformando
Leia maisALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão
UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 3.1 - Definição 3.2 - Dividir para conquistar 3.3 - Problema da
Leia maisEvolução de Software e Refatoração. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 21 1
Evolução de Software e Refatoração Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 21 1 Mudança de software Mudança de software é inevitável Novos requisitos surgem quando o software
Leia maisJAVA. Tópicos Especiais de Programação Orientada a Objetos. sexta-feira, 26 de outubro de 12
JAVA Tópicos Especiais de Programação Orientada a Objetos 1 REFATORAÇÃO DE CÓDIGOS 2 REFATORAÇÃO O QUE É REFATORAR? Refatorar é alterar o código de um projeto existente, sem mudar o seu comportamento,
Leia maisSimplificando expressões condicionais
Simplificando expressões condicionais Expressões condicionais podem ser difíceis de serem entendidas na medida em que vão se tornando mais elaboradas. Há um grupo de refatorações capazes de lidar com essa
Leia maisFunções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
Prof. André Backes Função Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. print(): função que escreve na tela input (): função que lê o teclado 1 Função Facilitam
Leia maisRefatoração: uma introdução. Prof. André Luiz Peron Martins Lanna
Refatoração: uma introdução Prof. André Luiz Peron Martins Lanna Agenda Introdução Idéias preliminares Um primeiro exemplo Conclusões Bibliografia Introdução Em DSW o assunto principal foi o Projeto de
Leia maisEngenharia de Software
Sumário Engenharia de Software Modelos de desenvolvimento de software Fases de desenvolvimento Programação modular Abordagem top-down e bottom-up Linguagens de programação: Compilação / Interpretação Aplicação
Leia maisConceitos básicos de programação
Para aprender uma linguagem de programação podemos começar por conhecer os vocábulos ou símbolos que formam o seu léxico e depois aprender como esses vocábulos integram as instruções (frases) que compõe
Leia maisCapítulo 8. Estruturas de Controle no Nível de Sentença
Capítulo 8 Estruturas de Controle no Nível de Sentença Níveis de fluxo de controle Computações são realizadas por meio da avaliação de expressões e da atribuição dos valores a variáveis Para tornar a computação
Leia maisAula 3: Algoritmos: Formalização e Construção
Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de
Leia maisReengenharia, Refatoração e Bad Smell
DCC / ICEx / UFMG Reengenharia, Refatoração e Bad Smell Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Reengenharia de Sistemas Reestruturação ou reescrita de parte ou de todo um sistema legado
Leia maisAnálise de complexidade
Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura
Leia maisConjuntos disjuntos. Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida
Conjuntos disjuntos Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida Desempenho análise complicada Uso problemas de grafos equivalência
Leia maisAula 01 Algoritmos e lógica de programação e introdução ao C++
Aula 01 Algoritmos e lógica de programação e introdução ao C++ Autor: Max Rodrigues Marques Carga Horária: 2h 21 de julho de 2015 1 Algoritmo e lógica de programação Ementa do curso 1. Definições de algoritmo
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação
Leia maisLinguagens de Programação
Linguagens de Programação Propriedades Desejáveis Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 1 Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade: A implementação
Leia maisIntrodução à Programação em C
Introdução à Programação em C Tipos e Operadores Elementares Estruturas de Controlo Resumo Novidades em C Exemplo: Factorial Tipos de Dados Básicos Saltos Condicionais: if-then-else Valor de retorno de
Leia maisOportunidades de refatoração. Prof. André Luiz Peron Martins Lanna
Oportunidades de refatoração Prof. André Luiz Peron Martins Lanna Agenda Introdução Maus cheiros de código Código duplicado Método longo Classe inchada Lista de parâmetros longa demais Mudanças divergentes
Leia maisAula 01 Algoritmos e lógica de programação e introdução ao C++
Aula 01 Algoritmos e lógica de programação e introdução ao C++ Autor: José Martins de Castro Neto Carga Horária: 2h 21 de julho de 2015 1 Algoritmo e lógica de programação Ementa do curso 1. Definições
Leia maisLinguagens de Programação
Linguagens de Programação de Linguagens de Programação Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 11 Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade:
Leia maisEngenharia de Software
UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre 2 o Teste, 8 de Junho de 2016 Nome: Número: Este teste tem um conjunto de 10 perguntas de escolha
Leia maisQualidade. Ana Madureira
Qualidade Ana Madureira Qualidade da Informação A qualidade de uma informação é apreciada em função da sua pertinência (adaptação às necessidades do sistema de gestão). Três características permitem medir
Leia maisParadigmas de Linguagens de Programação. Expressões e Instruções de Atribuição
Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação
Leia maisEngenharia de Software
UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre Repescagem do 2 o Teste, 1 de Julho de 2016 Nome: Número: Este teste tem um conjunto de 10 perguntas
Leia maisArquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;
1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e
Leia maisVariáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Leia maisProgramação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 04 Algoritmos e Programação Estruturada
Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre T. 04 Algoritmos e Programação Estruturada Objectivos: Aprender o conceito de algoritmo e suas características fundamentais
Leia maisIntrodução à Análise e Projeto de Sistemas
Introdução à I. O Que vamos fazer na Disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente para criar sistemas OO Tem que saber Análise e Projeto OO (APOO) Isto é, Análise
Leia maisIntrodução aos Algoritmos
Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado
Leia maisElementos básicos das linguagens de programação
Elementos básicos das linguagens de programação Objetivos: Apresentar os últimos elementos básicos das linguagens de programação Elementos básicos já estudados Entrada (read, readln) Saída (write, writeln)
Leia maisIntrodução à Programação
Introdução à Programação Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina.
Leia maisIntrodução aos Algoritmos
Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado
Leia maisUm algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.
Programação Um programa é uma sequência de instruções de uma linguagem de programação (VB no nosso caso). Cada instrução representa uma qualquer acção que nós pretendemos ver executada. Programar consiste
Leia maisRegras de Estilo para Programação em Java TM
Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Regras de Estilo para Programação em Java TM João Paulo Barros Versão de 29 de Setembro de 2007 A linguagem de programação Java TM tem
Leia maisLINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Leia maisModulo 10 : Tipos especiais de dados: união, enumeração e...
PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 10 : Tipos especiais de dados: união, enumeração e... Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Union Enumerações Goto, label exercicios Roteiro
Leia maisFunções Finitas II: árvores AVL
Funções Finitas II: árvores AVL Métodos de Programação II 2004/2005 1 Objectivos Estender a biblioteca de árvores binárias para suportar Árvores AVL. 2 Motivação Pretende-se adaptar o programa apresentado
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Leia maisControle de Fluxo. Laços e Desvios incondicionais
Controle de Fluxo Laços e Desvios incondicionais Laços Em C, há três comandos de ITERAÇÃO ou LAÇOS: for while do... while Estes permitem que um conjunto de instruções seja executado até que ocorra uma
Leia maisAula 05. Modularização Função Subrotina Recursividade
Logo Aula 05 Modularização Função Subrotina Recursividade 2 Modularização A modularização é um processo que aborda os aspectos da decomposição de algoritmos em módulos. Módulo é um grupo de comandos, constituindo
Leia maisConjuntos disjuntos. Relações de equivalência
Conjuntos disjuntos Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida análise complicada Uso problemas de grafos equivalência de tipos
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: funções Prof. Renato Pimentel 1 Subprogramas Subprograma: programa que auxilia o programa principal na realização de uma determinada
Leia maisC Comandos de Controle
C Comandos de Controle Adriano Cruz adriano@nce.ufrj.br 19 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Revisão da Seção Introdução Comandos de Teste Comandos de
Leia maisLINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Leia maisIntrodução à Programação em C (I)
Introdução à Programação em C (I) IAED Tagus, 2009/2010 Organização de Ficheiros em C Organização Típica de Ficheiros em C Inclusão de bibliotecas de sistema Inclusão de bibliotecas locais Definição de
Leia maisRevisão: Tipo Abstrato de Dados Recursividade
Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estudo das estruturas de dados envolve dois objetivos complementares:
Leia maisTCC 00308: Programação de Computadores I Introdução
TCC 00308: Programação de Computadores I 2017.1 Introdução Processo de resolução de problemas Definição dos requisitos do problema (fazer o programa certo) Entradas Cálculos Casos especiais Saídas Desenvolvimento
Leia maisDELEGAÇÃO REGIONAL DO ALENTEJO CENTRO DE FORMAÇÃO PROFISSIONAL DE ÉVORA REFLEXÃO 5
REFLEXÃO 5 Módulos 0782, 0783, 0784 e 0785 1/5 23-05-2013 Esta reflexão tem como objectivo partilhar e dar a conhecer o que aprendi nos módulos 0782 Programação em C/C++ - Estrutura Básica e Conceitos
Leia maisEstruturas de Controle
Estruturas de Controle mleal@inf.puc-rio.br 1 Expressões Expressões são as construções básicas de qualquer LP. São utilizadas para a atribuição de valores a variáveis, ou em estruturas de controle condicionais.
Leia maisAula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias
SCC 124 - Introdução à Programação para Engenharias Comandos Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes 1 Aula de
Leia maisCAL ( ) MIEIC/FEUP Estruturas de Dados ( )
Conjuntos Disjuntos R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CPAL, 2010/2011 1 Conjuntos Disjuntos Objectivo resolver eficientemente o problema da equivalência estrutura
Leia maisSobre Programação Estruturada
Sobre Programação Estruturada Pedro Ribeiro DCC/FCUP 2017/2018 Pedro Ribeiro (DCC/FCUP) Sobre Programação Estruturada 2017/2018 1 / 13 Sobre Programação Estruturada Este capítulo serve essencialmente para
Leia maisParadigmas de Linguagens
Paradigmas de Linguagens Paradigma Imperativo Professora Sheila Cáceres Paradigma Imperativo Um pouco de historia Paradigma fundamentado no conceito de máquina de Turing. A máquina de Turing é uma abstração
Leia maisIntrodução à Programação Estruturada Parte 2. Material da Prof. Ana Eliza
Introdução à Programação Estruturada Parte 2 Material da Prof. Ana Eliza programa Passo 1: Definir o problema O que fazer? Passo 2: Especificar a solução Como fazer? Passo 3: Codificar a solução Passo
Leia maisLINGUAGEM C: COMANDOS DE REPETIÇÃO
LINGUAGEM C: COMANDOS DE REPETIÇÃO Prof. André Backes ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição permite que uma sequência de comandos seja executada repetidamente, enquanto determinadas condições
Leia maisLista de Linguagens de Programação 16
Lista de Linguagens de Programação 16 Nome: Matrícula: 1. Abaixo existem duas implementações diferentes to Crivo de Erastótenes, um algoritmo bastante conhecido para a listagem de números primos: def sieveprimes0(candidates):
Leia maisUnidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano
Linguagem de Programação 1 Unidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano Objetivo: Desenvolver a habilidade de comentar código adequadamente INTRODUÇÃO Até o momento
Leia maisUNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação
SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 11 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de Refatoração e Padrões. DESENVOLVIMENTO PADRÕES
Leia maisIntrodução à Programação
Introdução à Programação 1.Ano LCC-MIERSI DCC - FCUP Nelma Moreira Aula 2 Etapas para o desenvolvimento dum programa 1. Perceber o problema 2. Encontrar um procedimento algorítmico para o resolver. Estratégias:
Leia maisAlgoritmos e Modelação Computacional. Paulo Mateus MEBiom LMAC 2018
Algoritmos e Modelação Computacional Paulo Mateus MEBiom LMAC 2018 Objetivos Edição e compilação de programas Tipos e expressões Declaração de variáveis Atribuição, composição sequencial, iterativa e alternativa
Leia maisIntrodução à Computação Parte 2
Introdução à Computação Parte 2 José Gustavo de Souza Paiva Computação Objetivo básico auxiliar os seres humanos em trabalhos repetitivos e bra çais, diminuindo esfor ços e economizando tempo O computador
Leia maisProgramação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Vetores vs Estruturas Dinâmicas Vetores (arrays): Ocupa um espaço contíguo de memória Permite acesso randômico
Leia maisEstruturas condicionais
Estruturas condicionais David Déharbe 1 1 Objetivos da aula Revisar os primeiros elementos de linguagem C já vistos. Condicionais simples Condicionais compostas Operadores lógicos 2 2 Objetivos da aula
Leia maisA linguagem C (visão histórica)
A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,
Leia maisDesenvolvimento Modular de Procedimentos
Desenvolvimento Modular de Procedimentos Em Java os Procedimentos implementam-se com Métodos Desenho Modular de Procedimentos A melhor metodologia para o desenvolvimento de procedimentos com alguma dimensão
Leia maisAula 2 - Introdução Cleverton Hentz
Aula 2 - Introdução Cleverton Hentz Sumário de Aula } Programas } Linguagens de Programação } Formas de Estruturação de Algoritmos 2 Programas } Os algoritmos são utilizados na construção de programas
Leia maisLinguagens de Programação. Introdução. Carlos Bazilio
Linguagens de Programação Introdução Carlos Bazilio carlosbazilio@id.uff.br http://www.ic.uff.br/~bazilio/cursos/lp ??? Pascal aux := 0 for i:=1 to 10 do aux := aux + i 10: i = 1 20: if i > 10 goto 60
Leia maisSCC-202 Algoritmos e Estruturas de Dados I. Profa. Graça Nunes 2º. Semestre 2010
SCC-202 Algoritmos e Estruturas de Dados I Profa. Graça Nunes 2º. Semestre 2010 Objetivos Introduzir conceitos de Estruturas de Dados básicas e seus algoritmos, que são frequentemente usados na construção
Leia maisTAD: Tipo Abstrato de Dados (parte 1)
TAD: Tipo Abstrato de Dados (parte 1) SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo TADs e termos relacionados Termos relacionados, mas diferentes Tipo de dados Tipo abstrato de dados
Leia maisTAD: Tipo Abstrato de Dados (parte 1)
TAD: Tipo Abstrato de Dados (parte 1) SCC0502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo TADs e termos relacionados Termos relacionados, mas diferentes Tipo de dados Tipo abstrato de dados
Leia maisSumário. Processo de Desenvolvimento. Objectivos. Problemas. Engenharia de Software. Caracterização. Técnicas Avaliação e Validação Exemplo Conclusões
Engenharia de Software Processo de Desenvolvimento António Rito Silva Rito.Silva@inesc-id.pt Sumário Caracterização Objectivos Problemas Qualidades Técnicas Avaliação e Validação Exemplo Conclusões Processo
Leia maisUNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
Leia maisProgramação de Computadores:
Instituto de C Programação de Computadores: Introdução a Linguagens de Programação Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Seis Camadas Problema
Leia maisTrabalho Linguagem e Programação de Compiladores
Trabalho Linguagem e Programação de Compiladores Responda as questões. Os exercícios deverão ser desenvolvidos utilizando as estruturas apresentadas em aula e adequadas para cada problema. Forma de entrega:
Leia maisAED2 - Aula 01 Apresentação, estruturas de dados, tabelas de símbolos e hash tables
AED2 - Aula 01 Apresentação, estruturas de dados, tabelas de símbolos e hash tables É esperado de um projetista de algoritmos que ele entenda o problema a resolver e compreenda as ferramentas a sua disposição,
Leia maisLinguagens de Programação
Linguagens de Programação Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Expressões Precedência e associatividade de operador Sobrecarga de operador Expressões de modo misto Várias formas de
Leia maisProgramação Estruturada Aula - Introdução a Linguagem C
Programação Estruturada Aula - Introdução a Linguagem C Prof. Flávio Barros flavioifma@gmail.com www.flaviobarros.com.br 2 HISTÓRICO DA LINGUAGEM C HISTÓRICO DA LINGUAGEM C Como tudo iniciou... C iniciou
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.7. Funções 3.7.1. Introdução 3.7.2. Uso de
Leia maisLegibilidade do código fonte
Sumário Legibilidade do código fonte Exemplos Normas Instrução switch Sintaxe e Semântica Exemplo Tipos enumerados Exemplo Programação 2007/2008 DEEC-IST 1 Legibilidade do código fonte Exemplo: Considere
Leia maisDesenho de Software. Sumário
(QJHQKDULDGD3URJUDPDomR Desenho de Software Carla Ferreira Carla.Ferreira@dei.ist.utl.pt Sumário Objectivos Problemas Qualidades Técnicas Avaliação e Validação Casos Notáveis Exemplo Conclusões Desenho
Leia maisCapítulo 6: Linguagens de Programação
Capítulo 6: Linguagens de Programação Ciência da Computação: Uma Visão Abrangente 11a Edição by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Capítulo 6: Linguagens de programação 6.1 Perspectiva
Leia maisPROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012
Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012 Mestrado Integrado em Engenharia Electrotécnica e Computadores 1º ano 1º semestre Trabalho nº 5 Funções http://tele1.dee.fct.unl.pt/pm
Leia maisC Comandos de Controle
C Comandos de Controle Adriano Cruz adriano@nce.ufrj.br Instituto de Matemática Departamento de Ciência da Computação UFRJ 15 de agosto de 2013 Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Comandos
Leia maisLista de Linguagens de Programação 7
Lista de Linguagens de Programação 7 Nome: Matrícula: 1. Dizemos que uma linguagem é segura quando esta linguagem não permite que operações sejam aplicadas a argumentos que não possuam os tipos previstos
Leia maisPROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010
Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010 Mestrado Integrado em Engenharia Electrotécnica e Computadores 1º ano 2º semestre Trabalho nº 5 Funções e Vectores
Leia maisAlgoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer
Algoritmos e Estrutura de Dados I Conceitos de Algoritmos Prof. Elyssandro Piffer CONCEITO DE ALGORITMO O computador pode auxiliar em muitas tarefas, contudo ele não possui independência, não é inteligente,
Leia maisInstituto Politécnico de Setúbal. Escola Superior de Tecnologia. Departamento de Sistemas e Informática. Guia para codificação em JAVA
Instituto Politécnico de Setúbal Escola Superior de Tecnologia Departamento de Sistemas e Informática Guia para codificação em JAVA Disciplina de Introdução à Programação Ano Lectivo 2003/2004 CONTEÚDO
Leia maisEngenharia de Software 2006/2007
Instituto Superior Técnico Engenharia de Software 2006/2007 Segundo Teste (perguntas 5-10, 70 minutos) Primeiro Exame (perguntas 1-10, 120 minutos) 29/6/2007 Nome: Número: Escreva o seu número em todas
Leia maisFundamentos da Programação
Fundamentos da Programação Segundo Teste 10 de Janeiro de 2014 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 8 páginas com 12 perguntas. A cotação de cada pergunta está assinalada
Leia maisPROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017
PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017 Resumo Definição Tipos de Exemplos Exercícios Em linguagens imperativas e estruturadas,
Leia maisIntrodução à Programação. Programação e Fatores de Qualidade
Introdução à Programação Programação e Fatores de Qualidade Qualidade de Software Ferrou! Sem problema, chefe. Quero que você escreva rapidamente um sistema de folha de pagamento que funcione corretamente,
Leia maisLinguagens de Programação
Linguagens de Programação Fabio Mascarenhas - 2015.2 http://www.dcc.ufrj.br/~fabiom/lp Recursão mútua com pares Agora podemos definir o par de funções mutuamente recursivas: letrec pi = cons( if x < 1
Leia maisINF1005: Programação 1. Matrizes. 06/06/10 (c) Paula Rodrigues 1
INF1005: Programação 1 Matrizes 06/06/10 (c) Paula Rodrigues 1 Tópicos Principais Conjuntos bidimensionais Exemplos de manipulação de matrizes Representação de tabelas Funções algébricas 08/03/10 (c) Paula
Leia maisParadigmas de Programação
Paradigmas de Programação Fabrício Olivetti de França 07 de Junho de 2018 1 Paradigmas de Programação 2 Paradigmas de Programação Definição: estilo de programação, a forma como você descreve a solução
Leia mais