Preview only show first 10 pages with watermark. For full document please download

Icc Aula 04 Algoritmos

Ciencia da computação

   EMBED


Share

Transcript

3/17/2011 Linguagens de Programação Representações de algoritmos Algoritmos com qualidade Professora: Tanara Lauschner Departamento de Ciência da Computação (DCC) Email: [email protected] Slides elaborados por Prfa. Fabíola Guerra Nakamura Estabelece regras de sintaxe para que o algoritmo possa ser entendido por uma máquina. Raciocínio Algoritmo int a, b, c; if (a > 2) a = b + c; else a = b – c; return; Programa é a codificação de um algoritmo em uma linguagem de programação. Um computador é uma máquina que, a partir de uma entrada, realiza um número de cálculos matemáticos e lógicos, gerando uma saída. Programa é o elemento que diz ao computador quais cálculos devem ser realizados. Programa 1 3/17/2011 É uma forma de programação de computadores que preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas: Sua principal característica é a utilização de blocos para solução de um problema. Seqüência Decisão Iteração :: Exemplo 1. Compreender o problema. 2. Esboçar um procedimento para resolver o problema. 3. Formular o algoritmo. 4. Traduzir o algoritmo para uma linguagem de programação (Codificação). 1. Calcular as raízes reais de: ax 2 + bx + c 2. Exemplo: Equação de 2o. grau Possibilidades de raízes:    02 raízes complexas; 02 raízes reais idênticas; 02 raízes reais distintas; Calcular Δ. Se Δ ≥ 0, calcular raízes reais. Caso contrário, informar que não há raízes reais. Condição para haver raízes reais: ∆ ≥ 0 2 3/17/2011 3. 4. ler(a,b,c) delta = b^2 – 4*a*c se (delta ≥ 0) então r1 = – b – (delta)^(–1/2) r2 = – b + (delta)^(–1/2) escrever(r1,r2) senão escrever(“Não há raiz real”) fim do se fim do algoritmo #include #include #include int main(void) { float a, b, c, delta, r1, r2; scanf("%f %f %f", &a, &b, &c); delta = b*b – 4*a*c; if (delta >= 0) { r1 = – b – sqrt(delta); r2 = – b + sqrt(delta); printf("r1 = %f \n r2 = %f", r1, r2); } else printf("Nao ha raiz real\n"); } Passos básicos para gerar um programa executável: Codificação A. Codificação B. Geração de Código Objeto C. Depuração (debug) Código fonte Depuração Geração de código objeto Código objeto Programa Executável A. É a escrita de um programa de acordo com uma linguagem de programação. Utiliza Editores de Texto. Resultado: código-fonte. B. Tradução do código-fonte para o código de máquina do processador. Realizado pelos Compiladores. Resultado: código executável pelo processador. 3 3/17/2011 C. Auxilia o programador a eliminar erros dos programas (“bugs”). Permite:   execução passo-a-passo. visualização do estado do programa através das variáveis. início Duas formas de representação de algoritmos: C1 Fluxograma Pseudo-código C2 C3 fim início separar ingredientes misturar ingredientes colocar massa no forno tirar bolo do forno fim início esperar assar separar ingredientes t ≥ 30min misturar ingredientes colocar massa no forno F V tirar bolo do forno fim 4 3/17/2011 Características: Sintaxe mais simples que a de uma Linguagem de Programação. Ênfase nas idéias e não nos detalhes. Facilita construir um programa em Linguagem de Programação. Algoritmo Ingredientes: farinha, açúcar, leite Separar os ingredientes Misturar os ingredientes Colocar massa no forno Esperar assar por 30 minutos Retirar bolo do forno Exemplo Algoritmo perimetro_circunferência // declaração de constantes e variáveis // comandos fim fim Exemplo Algoritmo perimetro_circunferência // declaração de constantes e variáveis const pi float raio float perim // comandos ler (raio) perim = 2 * pi * raio escrever (perim) = 3,1415 Dados (variáveis e constantes) Tipos de dados Operadores Comandos Funções Comentários fim 5 3/17/2011 Dados Algoritmo perimetro_circunferência // declaração de variáveis const PI float raio float perim = 3,1415 dado constante dado variável tipo de dado // comandos comentário ler (raio) perim = 2 * PI * raio operador Dados Constantes O valor de uma constante não se altera após sua definição. Exemplos: N_NEPERIANO = 2,7182 UNIVERSIDADE = 'UFAM' Dados Variáveis Elemento que têm a função de associar um nome a uma porção da memória onde um dado pode ser armazenado. escrever (perim (perim)) função fim :: Tipos de dados :: Operadores Definem a natureza do dado, as operações que podem ser realizadas com o dado e o espaço a ser ocupado na memória. Exemplos: Inteiro: Real (ponto flutuante): String de caracteres: Lógico: 10 -5 -128 1,34 13,4 -5,0 'quarta-feira’ 'Abril‘ Verdadeiro(1) Falso(0) :: Operador Atribuição :: Operadores Aritméticos Utilizado para atribuir um valor a uma variável nome da variável Notação: x1 ← 23; temp ← x2; Atribuição Aritméticos Relacionais Lógicos Valor Dados de entrada: tipo numérico (int ou float) Resultado: tipo numérico (int ou float) Exemplos: x_2 ← 2 + 3; alfa ← 1 / 5; ang ← 1 / 5.0; resto ← 10 % 3; resto ← 1 % 4; delta ← 5 * 5 – 4 * 1 * 4; 6 3/17/2011 :: Operadores Relacionais :: Operadores Relacionais Utilizados para realizar comparações entre dois valores de mesmo tipo primitivo. São comuns para a construção de equações. OPERADOR OPERAÇÃO EXEMPLO RESULTADO cond1 ← 2 == 3; 1 == 2 Falso cond2 ← 1.6 ≠ 5.0; Maior que 5>2 Verdadeiro cond3 ← 1 > 5; < Menor que 11 < 4 Falso >= Maior ou Igual a 3 >= 3 Verdadeiro cond4 ← (1 + 2) < 5; <= Menor ou igual a 5<= 3 Falso cond5 ← 10 ≥ 3; cond6 ← 1 ≤ (– 4 / 3); = Igual a > <> Diferente de 2 + 3 <> 5 Falso :: Operadores Lógicos :: Operadores Lógicos Servem para combinar resultados de expressões, retornando se o resultado final é verdadeiro ou falso. OPERAÇÃO CONJUNÇÃO SÍMBOLO DESCRICAO AND – E OR – ou Conjunto de todas as possibilidades combinatórias entre os valores de diversas variáveis lógicas  apenas duas situações (V ou F). OPERAÇÃO DE NEGAÇÃO Uma expressão OR (OU) é verdadeira se pelo menos uma condição for verdadeira NEGAÇÃO TABELAS-VERDADE Uma expressão AND (E) é verdadeira se todas as condições forem verdadeiras DISJUNÇÃO Dados de entrada: tipo numérico (int ou float ou cte) Resultado: tipo lógico Exemplos: NOT – não Uma expressão NOT (NÃO) inverte o valor da expressão ou condição, se verdadeira inverte para A não A F V V F falsa e vice-versa. :: Operadores Lógicos :: Operadores Lógicos OPERAÇÃO DE CONJUNÇÃO OPERAÇÃO DE DISJUNÇÃO A B AeB A B A ou B F F F F F F F V F F V V V F F V F V V V V V V V Dados de entrada: tipo lógico Resultado: tipo lógico Exemplos: cond1 cond2 cond3 cond4 ← ← ← ← V AND F; F OR F; NOT cond1; (V AND F) OR (5 > 3); 7 3/17/2011 :: Funções Pré-definidas Definidas pelo programador Exemplos: seno(angulo) pow(x,y) sqrt(resto) exp(tempo) ler(var1,var2,...) escrever(resul1,result2,...) :: Comentários Utilizados para descrever o algoritmo, esclarecendo trechos do código Notação em Linguagem C: // /* */ Devem ser feitos para serem lidos por seres humanos! Escreva os comentários no momento em que estiver escrevendo o algoritmo. Os comentários devem acrescentar alguma coisa, e não frasear o comando: Use comentários no prólogo: // Multiplicação de b por h: area ← b * h; /***************************************** UNIVERSIDADE FEDERAL DO AMAZONAS FULANO DA SILVA DATA: 08/11/2010 ÚLTIMA MODIFICAÇÃO: 26/12/2010 // Cálculo da área do retângulo: area ← b * h; ALGORITMO DE DEMONSTRAÇÃO *****************************************/ 8 3/17/2011 Use espaços em branco para melhorar a legibilidade: Escolha nomes representativos para as variáveis: p ← c + l; hip←sqrt(cat1*cat1+cat2*cat2); preco ← custo + lucro; hip ← sqrt(cat1 * cat1 + cat2 * cat2); Utilize um comando por linha. Utilize parênteses para melhorar a compreensão e evitar erros. 1. Escreva um algoritmo para ler um número inteiro e imprimir seu sucessor e seu antecessor. Utilize identação (recuo de texto). Atenção: identação ≠ endentação 52 Uma fábrica de arruelas precisa calcular o custo de envio de um conjunto de unidades sabendo que este custo leva em conta o peso das peças. Escreva um pseudo-código para tal. 1. 2. 3. 4. Calcular área Calcular volume (área × espessura) Calcular peso (volume × densidade × unidades) Calcular custo (peso × frete) 9 3/17/2011 2. Calcular volume: 1. Calcular área  d_int  Areaint = π    2  2 d_int  d _ ext  Areaext = π    2  Volume = Area × espessura 3. Calcular peso: Peso = Volume × densidade × unidades 2 4. Calcular custo (peso × frete) Custo = Peso × frete d_ext Area = Aext − Aint Algoritmo arruela ... // Constantes const PI ... // Início = 3,1415 ler(d_ext, d_int, espessura, densidade, unidades, frete) // Variáveis de entrada area_ext ← pi * (d_ext/2) * (d_ext/2) float d_ext, d_int area_int ← pi * (d_int/2) * (d_int/2) float espessura, densidade, unidades, frete area ← area_ext – area_int // Variável de saída volume ← area * espessura float custo peso ← volume * densidade * unidades // Variáveis do programa custo ← peso * frete float area, area_ext, area_int, volume, peso escrever (custo) fim 10