Baixe o app para aproveitar ainda mais
Prévia do material em texto
29/11/2016 1 Ciência da Computação Tecnologia em Análise e Desenvolvimento de Sistemas Construção de Algoritmos - INF1002 Prof. Eugênio Silva (parte 1/2) • ORGANIZAÇÃO DE COMPUTADORES; • ALGORITMOS; • DESCRIÇÃO DE ALGORITMOS; • EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS; • BIBLIOGRAFIA. CONTEÚDO 29/11/2016 2 • O que é um Computador: – durante séculos era uma pessoa que fazia cálculos; – hoje é um tipo de máquina capaz de armazenar, processar e disponibilizar dados e informações; – daqui a alguns anos pode se referir a um dispositivo com características e aplicações substancialmente diferentes das de hoje. ORGANIZAÇÃO DE COMPUTADORES 3 • Computador Simplificado (CS): – computador hipotético que utiliza objetos comuns de um escritório; – elementos do CS: 1. 16 escaninhos desenhados em um quadro negro; 2. cadeira para o operador; 3. bandeja com cartões com números; 4. máquina de calcular; 5. máquina de escrever. Adaptado de GUIMARÃES, LAGES (2001) ORGANIZAÇÃO DE COMPUTADORES 4 29/11/2016 3 • Computador Simplificado (CS): – funções dos elementos do CS: • escaninhos: são identificados por E01 a E16 e armazenam instruções ou números; • operador: interpreta e executa as instruções contidas nos escaninhos; • bandeja de cartões: pilha de cartões com números que podem ser copiados (pelo operador) para algum escaninho; • máquina de calcular: usada para executar todas as operações aritméticas; • máquina de escrever: usada escrever valores numéricos ou frases. ORGANIZAÇÃO DE COMPUTADORES 5 • Exemplo 1: – instruções: • E01: pegue um cartão na bandeja e copie o seu valor em E16; • E02: pegue um cartão na bandeja e copie seu valor em E15; • E03: some o conteúdo de E15 ao de E16 e coloque o resultado em E16; • E04: imprima o conteúdo de E16; • E05: pare. – cartões: • 5, 3. • Exercício: – escreva um conjunto de instruções para fazer o CS somar dois valores (contidos em dois cartões) e subtrair um terceiro valor (contido num terceiro cartão) e imprimir o resultado. ORGANIZAÇÃO DE COMPUTADORES 6 29/11/2016 4 • Exemplo 2: – instruções: • E01: pegue um cartão na bandeja e copie o seu valor em E16; • E02: pegue um cartão na bandeja e copie seu valor em E15; • E03: some o conteúdo de E15 ao de E16 e coloque o resultado em E16; • E04: volte a E02; • E05: pare. – cartões: • 7, 1, 4, 3, 5, 2. ORGANIZAÇÃO DE COMPUTADORES 7 • Exemplo 3: – instruções: • E01: pegue um cartão na bandeja e copie o seu valor em E16; • E02: pegue um cartão na bandeja e copie seu valor em E15; • E03: se não houver mais cartões avance para E06; • E04: some o conteúdo de E15 ao de E16 e coloque o resultado em E16; • E05: volte a E02; • E06: imprima o conteúdo de E16; • E07: pare. – cartões: • 7, 1, 4, 3, 5, 2. ORGANIZAÇÃO DE COMPUTADORES 8 29/11/2016 5 • Exemplo 4: – instruções: • E01: pegue um cartão na bandeja e copie o seu valor em E16; • E02: se não houver mais cartões avance para E06; • E03: pegue um cartão na bandeja e copie seu valor em E15; • E04: some o conteúdo de E15 ao de E16 e coloque o resultado em E16; • E05: volte a E02; • E06: imprima o conteúdo de E16; • E07: pare. – cartões: • 7, 1, 4, 3, 5, 2. ORGANIZAÇÃO DE COMPUTADORES 9 • Exemplo 5: – instruções: • E01: pegue um cartão na bandeja e copie o seu valor em E16; • E02: pegue um cartão na bandeja e copie seu valor em E15; • E03: se o conteúdo de E15 for igual a –1 avance para E06; • E04: some o conteúdo de E15 ao de E16 e coloque o resultado em E16; • E05: volte a E02; • E06: imprima o conteúdo de E16; • E07: pare. – cartões: • 7, 1, 4, 3, 5, 2, –1. ORGANIZAÇÃO DE COMPUTADORES 10 29/11/2016 6 • Estrutura de um Computador Digital: processamentoentrada saída ORGANIZAÇÃO DE COMPUTADORES 11 • Estrutura de um Computador Digital: unidade aritmética e lógica unidade de entrada unidade de saída unidade de controle memória unidade central de processamento (UCP) ORGANIZAÇÃO DE COMPUTADORES 12 29/11/2016 7 • Estrutura de um Computador Digital: – funções dos componentes de um computador real: • unidade de entrada: traduz informações de um dispositivo em um código que a UCP é capaz de entender; • memória: armazena os dados e as instruções que manipulam os dados; • unidade aritmética e lógica: efetua todos os cálculos aritméticos e lógicos; • unidade de controle: responsável pelo “tráfego” dos dados; • unidade de saída: converte os dados processados em palavras ou números que podem ser impressos numa impressora ou exibidos num monitor. ORGANIZAÇÃO DE COMPUTADORES 13 • Algoritmos no Dia a Dia: – indicações de como chegar a uma determinada rua; – receita de culinária; – planta do projeto de construção de um edifício; – instruções de montagem de um brinquedo; – substituição de uma lâmpada: 1. remova a lâmpada queimada; 2. coloque a nova lâmpada. as instruções parecem suficientes para um operador humano, mas e se a tarefa fosse desempenhada por um robô? ALGORITMOS 14 29/11/2016 8 • Exemplo (substituição de uma lâmpada): – refinamento 1: 1. posicione a escada debaixo da lâmpada queimada; 2. escolha uma nova lâmpada de mesma potência da queimada; 3. suba na escada até que a lâmpada possa ser alcançada; 4. gire a lâmpada queimada no sentido anti-horário até que ela se solte; 5. posicione a nova lâmpada no soquete; 6. gire-a no sentido horário até que ela se firme; 7. desça a escada. ALGORITMOS 15 • Exemplo (substituição de uma lâmpada): – refinamento 2: 1. posicione a escada debaixo da lâmpada queimada; 2. selecione uma nova lâmpada para substituição; se a potência não for a mesma da queimada, então repita até encontrar uma que sirva descarte a lâmpada selecionada; selecione uma nova; 3. enquanto a lâmpada não puder ser alcançada suba um degrau da escada; 4. repita até que a lâmpada fique livre do soquete gire a lâmpada no sentido anti-horário; 5. posicione a nova lâmpada no soquete; 6. repita até que a lâmpada esteja firme no soquete gire a lâmpada no sentido horário; 7. desça a escada. o detalhamento pode continuar quase que indefinidamente ALGORITMOS 16 29/11/2016 9 • Algoritmos em Computação: – computadores, infelizmente, só fazem aquilo que se manda, e não necessariamente o que se deseja que eles façam; – um conjunto de instruções pode ser facilmente entendido por um ser humano, mas deve ser mais bem especificado para que seja executado por um computador; – as instruções fornecidas ao computador devem ser expressas de forma clara e sem qualquer ambiguidade; – computadores manipulam um conjunto muito limitado de instruções e um algoritmo deve ser expresso nos termos dessas instruções. ALGORITMOS 17 • Algoritmos em Computação: – o refinamento sucessivo é um bom método para a elaboração de um algoritmo: • começa-se com uma afirmação genérica da solução do problema; • refina-se a solução até o algoritmo final. – um algoritmo representa melhor o raciocínio envolvido na lógica de programação e abstrai detalhes computacionais que são adicionados mais tarde; – uma vez concebida uma solução algorítmica para um problema, esta pode ser traduzida para qualquer linguagem de programação; – a solução escrita em linguagem de programação é transformada em um programa de computador. ALGORITMOS 18 29/11/2016 10 • Algoritmos em Computação: – o processo de solução de um problema por meio de um programa de computador: problema solução em forma de algoritmo solução como um programa de computador solução do problemaimplementação elaboração de um algoritmo para resolver o problema Adaptado de TREMBLAY, BUNT (1983) tradução do algoritmo para uma linguagem de programação implementação (passo difícil) ALGORITMOS 19 • Definições: – “... uma sequência ordenada, e sem ambiguidade, de passos que levam à solução de um dado problema.” TREMBLAY, BUNT (1983) – “... é a descrição de um padrão de comportamento, expresso em termos de um repertório bem definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas.” GUIMARÃES, LAGES (1994) – é uma sequência finita de instruções não ambíguas que, quando executadas, produzem o resultado esperado. ALGORITMOS 20 29/11/2016 11 • Linguagens para Algoritmos: – tanto a fraqueza quanto o poder de uma linguagem natural se devem ao seu caráter vago e à sua imprecisão; – um algoritmo escrito em uma linguagem formal afasta a possibilidade de ambiguidade, tal que, para uma situação inicial, a sua execução sempre leva ao mesmo estado final, percorrendo o mesmo caminho; – através de um conjunto básico de primitivas é possível pensar no problema e não na máquina que executará o algoritmo, porém, sem se distanciar muito da máquina; – algumas opções: • linguagem textual: PORTUGOL; • linguagem gráfica: FLUXOGRAMA. DESCRIÇÃO DE ALGORITMOS 21 • Elementos de Algoritmos: – identificadores; – tipos de dados; – variáveis e constantes; – operadores; – expressões; – blocos; – controle de fluxo de execução (estruturas básicas e complementares); – outros tipos de dados (vetores, matrizes e registros). DESCRIÇÃO DE ALGORITMOS 22 29/11/2016 12 • Identificadores: – um identificador é uma sequência de símbolos (caracteres) que dá nome a uma entidade (variável, tipo de dado, etc.) que é parte da descrição de um algoritmo; – sintaxe de um identificador (PORTUGOL e FLUXOGRAMA): exemplos: A B612 C3PO R2D2 SOMA dígito letra letra OBS.: letras maiúsculas e minúsculas são tratadas de forma diferente, ou seja, os identificadores MEDIA e MeDiA são diferentes. DESCRIÇÃO DE ALGORITMOS 23 • Tipos de Dados: – um tipo estabelece a natureza (característica) do dado que é manipulado por um algoritmo; – tipos de dados básicos (PORTUGOL): inteiro: 13, – 6, 7830, – 295; real: 23.8, 3.6752, – 8.910, 3738.72, 32.0; caractere: “UEZO”, “Campo Grande”, “111 + 222 = 333”; lógico: FALSO, VERDADEIRO; DESCRIÇÃO DE ALGORITMOS 24 29/11/2016 13 • Variáveis: – uma variável é uma entidade que armazena um valor (dado) de um tipo e é conhecida pelo seu identificador; – tecnicamente, uma variável corresponde a uma área na memória do computador que armazena um tipo específico de conteúdo; – o conteúdo de uma variável pode ser modificado durante a execução do algoritmo. SOMA variável SOMA DESCRIÇÃO DE ALGORITMOS 25 • Variáveis: – sintaxe da declaração (definição) de uma variável (PORTUGOL): exemplos: inteiro : VALOR; real : R1, R2; caractere : FRASE; lógico : TEM; real caractere lógico : identificador ; , inteiro DESCRIÇÃO DE ALGORITMOS 26 29/11/2016 14 • Constantes: – uma constante é uma entidade com características semelhantes às de uma variável, porém, o seu valor nunca muda durante a execução do algoritmo; – sintaxe da declaração de uma constante (PORTUGOL): identificador ;const valor exemplos: const PI 3.14; const PHI 1.618; DESCRIÇÃO DE ALGORITMOS 27 • Operadores: – um operador é um símbolo que é associado a um valor (constante ou variável) ou a um par de valores para formar uma expressão; – tipos de operadores: • aritméticos; • relacionais; • lógicos; • atribuição. DESCRIÇÃO DE ALGORITMOS 28 29/11/2016 15 • Operadores: – aritméticos (PORTUGOL e FLUXOGRAMA): • funções matemáticas mais comuns: adição: + multiplicação: * exponenciação: ** subtração: – divisão: / mod (m mod n): resto da divisão de m por n div (m div n): quociente da divisão inteira de m por n seno: sen( ) cosseno: cos( ) tangente: tan( ) logaritmo (base e): log( ) exponencial: exp( ) módulo: abs( ) raiz quadrada: raiz( ) piso: retorna o maior inteiro menor ou igual ao argumento teto: retorna o menor inteiro maior ou igual ao argumento DESCRIÇÃO DE ALGORITMOS 29 • Operadores: – relacionais (PORTUGOL e FLUXOGRAMA): – lógicos (PORTUGOL e FLUXOGRAMA): igual: = maior: > maior ou igual: diferente: menor: < menor ou igual: A B A B A B A F F F F V F V F V V V F F V F V V V V F e: e () ou: ou () não: não () tabela verdade: onde: A, B são variáveis do tipo lógico; F é o valor FALSO; V é o valor VERDADEIRO. DESCRIÇÃO DE ALGORITMOS 30 29/11/2016 16 • Operadores: – um tipo especial de operador, denominado operador de atribuição, representa o armazenamento do resultado de uma expressão em uma variável; – sintaxe da atribuição de valor (PORTUGOL e FLUXOGRAMA): identificador ;expressão exemplos: VALOR 42; R1 1.73; FRASE “UEZO”; TEM VERDADEIRO; DESCRIÇÃO DE ALGORITMOS 31 • Operadores: – precedência: • parênteses e funções; • exponenciação; • multiplicação, divisão, mod e div; • adição e subtração; • comparações; • não; • e; • ou; • atribuição. DESCRIÇÃO DE ALGORITMOS 32 29/11/2016 17 • Expressões: – uma expressão é uma combinação de valores, operadores e parênteses que, quando avaliada, produz um novo valor; – a avaliação de uma expressão deve levar em consideração a precedência dos operadores envolvidos; – exemplos: inteiro : A, B, TOTAL; A 3; A A + 2; B A * 2 – 1; TOTAL B + A ** 2 * (7 – A); lógico : X; inteiro : A, B; A 5; B 3; X (A < B) (B = 3); caractere : S1, S2; S1 “Fulano”; S2 “Olá ” + S1; resp: 3 5 9 59 real : C1, C2, RES; C1 3.72; C2 C1 – 1.02; RES C1 / C2; resp: 3.72 2.70 1.38 resp: “Fulano” “Olá Fulano” resp: 5 3 VERDADEIRO OBS.: ‘+’ pode ser usado para unir sequências de caracteres. DESCRIÇÃO DE ALGORITMOS 33 • Expressões: – a avaliação de uma expressão deve levar em consideração também os tipos das variáveis (ou constantes) envolvidas; – a conversão de um tipo para outro pode resultar em um erro ou em um valor incorreto; – exemplos: inteiro : A, B, C, M1, M2; real : T1, T2; A “Bem vindo”; B VERDADEIRO; C (7 < 2) (2 ≠ 5) M1 (5 + 8) / 2; M2 3 * 5.4; T1 (9 – 2) / 3 * 4.0; T2 5 + (8.0 – 3) / 2; resp: ERRO ERRO ERRO 6 (INCORRETO) 16 (INCORRETO) 8.0 (INCORRETO) 7.5 (CORRETO) DESCRIÇÃO DE ALGORITMOS 34 29/11/2016 18 • Exercícios: 1. inteiro: A, B; real: C, D, X; A 7; B 2; C 3.1; D 2.5; X A / B + C – D; 2. lógico: A, B, C, D, E; A VERDADEIRO; B FALSO; C VERDADEIRO; D FALSO; E não A ou B e não (C ou D); 3. lógico: X; inteiro: A, B, C, D; A 8; B 3; C 9; D 4; X A mod B < 5 e C div D 0; DESCRIÇÃO DE ALGORITMOS 35 • Boas Práticas: – algumas dicas para escrever algoritmos de qualidade: • 1 - algoritmos devem ser feitos para serem lidos por seres humanos; • 2 - escreva comentários quando estiver escrevendo o algoritmo; • 3 - escreva comentários que acrescentem alguma informação útil; • 4 - use comentários no prólogo; • 5 - utilize espaços em branco para melhorar a legibilidade; • 6 - escolha nomes representativos para as suas variáveis; • 7 - escreva um comando por linha; • 8 - utilize parênteses para aumentar a legibilidade das expressões; • 9 - utilize indentação para mostrar a estrutura lógica do algoritmo; • 10 - os comentários devem ser alterados quando o algoritmo éalterado. DESCRIÇÃO DE ALGORITMOS OBS.: em PORTUGOL, qualquer sequência de caracteres entre { } é um comentário. 36 29/11/2016 19 • Blocos: – um bloco é um conjunto de comandos com uma função bem definida; – um bloco também define o escopo das variáveis, ou seja, a região do algoritmo em que são conhecidas; – sintaxe de um bloco: início <declarações de variáveis> <comandos> fim. PORTUGOL FLUXOGRAMA início fim ... DESCRIÇÃO DE ALGORITMOS 37 • Comandos Básicos (Entrada): – um comando de entrada obtém dados do ambiente externo, o que permite a construção de algoritmos de caráter geral; – sintaxe do comando de entrada: exemplos: leia (VALOR); leia (R1, R2); leia (FRASE); leia (TEM); ( identificador ) , ;leia PORTUGOL FLUXOGRAMA onde: vi é uma variável; i {1, 2, ..., n}. exemplo: leia v1, v2, ..., vn leia VALOR, R1 DESCRIÇÃO DE ALGORITMOS 38 29/11/2016 20 • Comandos Básicos (Saída): – um comando de saída fornece dados ao ambiente externo; – sintaxe do comando de saída: PORTUGOL FLUXOGRAMA exemplo: ( identificador ) , ;imprima expressão carectere exemplos: imprima (VALOR); imprima (“O resultado é: ”, R1 + R2); imprima v1, v2, ..., vn onde: vi é uma variável (ou constante); i {1, 2, ..., n}. imprima “Total: ”, R1 + R2 DESCRIÇÃO DE ALGORITMOS 39 • Controle de Fluxo de Execução (Estrutura Sequencial): – uma estrutura sequencial é um conjunto de comandos que são executados numa sequência linear de cima para baixo; – sintaxe de uma estrutura sequencial: PORTUGOL C1 ; C2 ; Cn ; exemplo: início inteiro : A, B; leia (A); B A * 5; imprima (“Resposta: ”, B); fim. OBS.: um comando é separado de outro por um ponto e vírgula (;). onde: Ci é um comando; i {1, 2, ..., n}. DESCRIÇÃO DE ALGORITMOS 40 29/11/2016 21 • Controle de Fluxo de Execução (Estrutura Sequencial): – uma estrutura sequencial é um conjunto de comandos que são executados numa sequência linear de cima para baixo; – sintaxe de uma estrutura sequencial: FLUXOGRAMA C1 C2 Cn . . . início fim B A * 5 leia A imprima “Resposta: ”, B exemplo: DESCRIÇÃO DE ALGORITMOS 41 • Exercícios: 1. Escreva um algoritmo que leia três valores inteiros, calcule e imprima a média desses valores. 2. Escreva um algoritmo que leia dois valores inteiros, efetue as quatro operações fundamentais (soma, subtração, multiplicação e divisão) com esses valores e imprima os respectivos resultados. 3. Uma concessionária de veículos paga a seus funcionários um salário mensal fixo, uma comissão (também fixa) para cada carro vendido e mais 5% sobre o total das vendas. Escreva um algoritmo que calcule e imprima o valor total a ser recebido por um funcionário ao final de um mês de trabalho. DESCRIÇÃO DE ALGORITMOS 42 29/11/2016 22 • Controle de Fluxo de Execução (Estrutura de Decisão): – uma estrutura de decisão permite decidir qual ação deve ser executada com base no resultado de um teste; – sintaxe de uma estrutura de decisão simples: se <condição> então C1; C2; ... Cn; fim se; PORTUGOL exemplo: início inteiro : V1, V2; leia (V1, V2); se V1 > V2 então imprima (V1); fim se; fim. DESCRIÇÃO DE ALGORITMOS 43 • Controle de Fluxo de Execução (Estrutura de Decisão): – uma estrutura de decisão permite decidir qual ação deve ser executada com base no resultado de um teste; – sintaxe de uma estrutura de decisão simples: exemplo:FLUXOGRAMA C1 Cn . . . V F início fim leia V1, V2 imprima V1 V1 > V2 V F DESCRIÇÃO DE ALGORITMOS 44 29/11/2016 23 • Exercícios: 1. Escreva um algoritmo que leia um valor inteiro, verifique e imprima se esse valor é ímpar. 2. Escreva um algoritmo que leia quatro valores inteiros, verifique e imprima se há algum par de valores iguais. 3. Considerando a mesma concessionária do slide 42, assuma que se o total de vendas de um funcionário ultrapassar o valor de R$100.000,00 no mês, este terá direito a uma bonificação extra (além dos 5%) de 3% sobre o total de vendas. Escreva um algoritmo que calcule e imprima o valor total a ser recebido pelo funcionário ao final de um mês de trabalho. DESCRIÇÃO DE ALGORITMOS 45 • Controle de Fluxo de Execução (Estrutura de Decisão): – uma estrutura de decisão permite decidir qual ação deve ser executada com base no resultado de um teste; – sintaxe de uma estrutura de decisão composta: PORTUGOL se <condição> então C1; ... Cn; senão C'1; ... C'm; fim se; exemplo: início inteiro : V1, V2; leia (V1, V2); se V1 > V2 então imprima (V1); senão imprima (V2); fim se; fim. DESCRIÇÃO DE ALGORITMOS 46 29/11/2016 24 • Controle de Fluxo de Execução (Estrutura de Decisão): – uma estrutura de decisão permite decidir qual ação deve ser executada com base no resultado de um teste; – sintaxe de uma estrutura de decisão composta: FLUXOGRAMA C'1 Cn . . . V F C1 Cm . . . início fim leia V1, V2 imprima V2 V1 > V2 V F imprima V1 exemplo: DESCRIÇÃO DE ALGORITMOS 47 • Exercícios: 1. Escreva um algoritmo que leia dois valores inteiros, verifique e escreva se o primeiro valor é ou não divisível pelo segundo. 2. Escreva um algoritmo que leia quatro valores inteiros, verifique e escreva se há ou não uma quantidade ímpar de pares de valores iguais. 3. Considerando a mesma concessionária do slide 45, escreva um algoritmo que calcule e imprima o valor total a ser recebido pelo funcionário ao final de um mês de trabalho, assumindo o seguinte critério de bonificação: 3% do total das vendas para vendas até R$50.000,00; 5% para vendas entre R$50.000,00 e R$80.000,00 (inclusive); 7% para vendas superiores a R$80.000,00. DESCRIÇÃO DE ALGORITMOS 48 29/11/2016 25 • Controle de Fluxo de Execução (Estrutura de Repetição): – uma estrutura de repetição permite executar repetidamente um conjunto de ações enquanto uma condição permanece válida; – sintaxe de uma estrutura de repetição com teste no início: PORTUGOL enquanto <condição> faça C1; C2; ... Cn; fim enquanto; exemplo: início inteiro : A, I; leia (A); I 1; enquanto I 10 faça A A * 2; I I + 1; fim enquanto; imprima (A); fim. DESCRIÇÃO DE ALGORITMOS 49 • Controle de Fluxo de Execução (Estrutura de Repetição): – uma estrutura de repetição permite executar repetidamente um conjunto de ações enquanto uma condição permanece válida; – sintaxe de uma estrutura de repetição com teste no início: FLUXOGRAMA exemplo: C1 Cn . . . V F início fim leia A V imprima A F I I + 1 I 10 A A * 2 I 1 DESCRIÇÃO DE ALGORITMOS 50 29/11/2016 26 • Exercícios: 1. Escreva um algoritmo que leia um conjunto de valores inteiros, calcule e imprima a soma e o produto desses valores. 2. Escreva um algoritmo que leia um conjunto de valores reais, e também seus respectivos pesos, calcule e imprima a média ponderada desses valores. 3. Considerando a mesma concessionária do slide 48, escreva um algoritmo que calcule e imprima o valor total a ser recebido por cada funcionário ao final do mês. O algoritmo deve calcular e imprimir também o valor total pago no mês. DESCRIÇÃO DE ALGORITMOS 51 • Outros Tipos de Controle de Fluxo de Execução: – as estruturas apresentadas são suficientes para a descrição de qualquer algoritmo, mas, em determinadas situações, podem dificultar a sua compreensão; – as estruturas complementares não aumentam o poder de representação das estruturas básicas, maspodem facilitar a descrição e, consequentemente, o entendimento de determinados algoritmos; – estruturas complementares: • repetição com teste no final; • repetição com variável de controle; • abandono; • decisão por múltipla escolha. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 52 29/11/2016 27 • Controle de Fluxo de Execução (Estrutura de Repetição): – sintaxe de uma estrutura de repetição com teste no final: PORTUGOL repita C1; C2; ... Cn; até <condição>; exemplo: início inteiro : A, I; leia (A); I 1; repita A A * 2; I I + 1; até I > 10; imprima (A); fim. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 53 • Controle de Fluxo de Execução (Estrutura de Repetição): – sintaxe de uma estrutura de repetição com teste no final: FLUXOGRAMA exemplo: C1 Cn . . . V F V F início fim leia A imprima A I I + 1 A A * 2 I 1 I > 10 EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 54 29/11/2016 28 • Exercícios: 1. Escreva um algoritmo que leia um conjunto de pares de valores inteiros, calcule e imprima a razão e a diferença entre o segundo e o primeiro valor de cada par. 2. Escreva um algoritmo que leia um conjunto de valores reais, calcule e imprima a média geométrica desses valores. 3. Considerando a mesma concessionária do slide 51, escreva um algoritmo que calcule e imprima também a média dos valores pagos no mês. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 55 • Controle de Fluxo de Execução (Estrutura de Repetição): – sintaxe de uma estrutura de repetição com variável de controle: PORTUGOL para v de i até l passo p faça C1; C2; ... Cn; fim para; exemplo: início inteiro : A, I; leia (A); para I de 1 até 10 passo 1 faça A A * 2; fim para; imprima (A); fim. onde: v é a variável de controle; i é o valor inicial de v; l é o valor final de v; p é valor do incremento de v. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 56 29/11/2016 29 • Controle de Fluxo de Execução (Estrutura de Repetição): – sintaxe de uma estrutura de repetição com variável de controle: FLUXOGRAMA exemplo: C1 Cn . . . V F V Finício fim leia A imprima A A A * 2 I de 1 até 10 passo 1 EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 57 • Exercícios: 1. Escreva um algoritmo que leia um valor inteiro, calcule e imprima os seus divisores. 2. Escreva um algoritmo que leia um valor inteiro, calcule e imprima as suas N primeiras potências. 3. Considerando a mesma concessionária do slide 55, escreva um algoritmo que calcule e imprima também a média dos valores pagos em cada faixa de bonificação. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 58 29/11/2016 30 • Controle de Fluxo de Execução (Estrutura de Abandono): – o abandono só tem sentido dentro de uma estrutura de repetição e sempre está associado a uma estrutura de decisão (simples ou composta); – o abandono interrompe um laço de repetição quando uma condição é satisfeita, antes que a condição de parada do laço seja atingida; – o abandono aumenta a eficiência de certos algoritmos, uma vez que iterações desnecessárias em um laço de repetição são evitadas. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 59 • Controle de Fluxo de Execução (Estrutura de Abandono): – sintaxe de uma estrutura de abandono: PORTUGOL <repetição> <condição> C1 ; ... Cn; <decisão> <condição> abandone; <fim decisão> <fim repetição> exemplo: início inteiro : A, I; leia (A); I 1; enquanto I 10 faça A A * I; se A < 100 então I I + 1; senão abandone; fim se; fim enquanto; imprima (A); fim. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 60 29/11/2016 31 • Controle de Fluxo de Execução (Estrutura de Abandono): – sintaxe de uma estrutura de abandono: FLUXOGRAMA exemplo: decisão repetição início fim leia A V imprima A F I 10 A A * I I 1 A < 100 I I + 1 V F EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 61 • Exercícios: 1. Escreva um algoritmo que leia um valor inteiro, calcule e imprima os seus N primeiros múltiplos ou os múltiplos menores que 100. 2. Escreva um algoritmo que encontre e imprima o primeiro número entre 1 e 1.000.000 que seja divisível por 11, 13 e 17. 3. Considerando a mesma concessionária do slide 51, escreva um algoritmo que calcule e imprima o valor total a ser recebido por cada funcionário ao final do mês, mas que interrompa o cálculo e imprima um alerta se o total pago no mês ultrapassar R$500.000,00. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 62 29/11/2016 32 • Controle de Fluxo de Execução (Estrutura de Decisão): – sintaxe de uma estrutura de decisão por múltipla escolha: PORTUGOL escolha <expressão> caso v11 : ... : v1n : C1; caso v21 : ... : v2m : C2; ... caso vp1 : ... : vpk : Cp; senão Cp+1; fim escolha; exemplo: início inteiro : V; leia (V); escolha V * 10 caso 10 : 20 : 30 imprima (“PQ”); caso 80 : 90 : 100 imprima (“GD”); senão imprima (“ERRO”); fim escolha; fim. onde: vij é um valor (rótulo); i {1, 2, ..., p}; j {1, 2, ..., r}; r é o número de rótulos do caso i. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 63 • Controle de Fluxo de Execução (Estrutura de Decisão): – sintaxe de uma estrutura de decisão por múltipla escolha: FLUXOGRAMA . . . senão C1 início fim leia V imprima “GD” imprima “PQ” exemplo: Cp Cp+1 v11 : ... : v1n imprima “ERRO” V * 10 80 : 90 : 10010 : 20 : 30 senão vp1 : ... : vpk EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 64 29/11/2016 33 • Exercícios: 1. Escreva um algoritmo que leia um valor inteiro, identifique e imprima o nome do mês correspondente. 2. Escreva um algoritmo que leia dois valores inteiros e uma dentre quatro opções possíveis de operações com esses valores (soma, subtração, multiplicação ou divisão). Em seguida, calcule e imprima o resultado da operação selecionada. 3. Considerando a mesma concessionária do slide 48, escreva um algoritmo que calcule e imprima o valor total a ser recebido pelo funcionário, assumindo o seguinte critério de bonificação: 3% do total das vendas para quem vende até 2 carros; 4% para quem vende de 3 a 5 carros; 6% para quem vende de 6 a 8 carros; 9% para quem vende de 8 a 10 carros. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 65 • Outros Tipos de Dados: – nem sempre os tipos básicos (inteiro, real, caractere e lógico) são adequados para representar os dados manipulados por um algoritmo; – exemplo (cálculo da média das notas de 5 alunos): início real : NOTA1, NOTA2, NOTA3, NOTA4, NOTA5; real : SOMA, MEDIA; leia (NOTA1, NOTA2, NOTA3, NOTA4, NOTA5); SOMA NOTA1 + NOTA2 + NOTA3 + NOTA4 + NOTA5; MEDIA SOMA / 5; imprima (MEDIA); fim. se a turma tivesse 80 alunos, só a declaração das variáveis tornaria a escrita do algoritmo impraticável EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 66 29/11/2016 34 • Outros Tipos de Dados: – no exemplo, o ideal é o uso de uma estrutura de dados que contenha todas as notas e que permita a referência ao conjunto todo ou a cada nota individualmente: – uma estrutura de dados é um modo particular de armazenamento e de organização de dados para que possam ser usados eficientemente; – tipos de estruturas de dados: • homogêneas (vetores e matrizes): conjuntos de dados formados pelo mesmo tipo de dado básico; • heterogêneas (registros): conjuntos de dados formados por tipos de dados básicos diferentes (campos do registro). 1 2 3 ... 80 8,5 7,2 5,9 ... 9,5 valores índicesNOTAS EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 67 • Estrutura de Dados Homogênea(Vetor): – um vetor é uma estrutura que armazena os dados em uma linha e em várias colunas , ou seja, é unidimensional; – sintaxe da especificação de um tipo vetor (PORTUGOL): tipo <identificador> = vetor [li : ls] <tipo básico>; onde: li e ls são valores inteiros e positivos; li é o limite inferior do vetor; ls é o limite superior do vetor; li ls. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 68 29/11/2016 35 • Estrutura de Dados Homogênea (Vetor): – a especificação indica apenas o modelo; – para efetivar a estrutura no algoritmo é necessário declarar uma variável do tipo da estrutura especificada; – declaração de uma variável do tipo vetor (PORTUGOL): exemplo: tipo v = vetor [1 : 5] real; v : VET; 1 2 3 4 5 valores índicesVET EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 69 • Exercícios: 1. Escreva um algoritmo que leia um vetor de 10 valores inteiros, calcule e imprima o produto dos valores que estão nas posições de índice par do vetor. 2. Escreva um algoritmo que leia um vetor de 20 valores inteiros, identifique e imprima os índices dos valores que são múltiplos de 5. 3. Considerando a mesma concessionária do slide 51, escreva um algoritmo que calcule e imprima o valor total a ser recebido por cada funcionário. Assuma que os totais das vendas devem ser armazenados em um vetor e que os valores totais a pagar em outro vetor. O algoritmo deve calcular e imprimir também o maior valor pago no mês. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 70 29/11/2016 36 • Estrutura de Dados Homogênea (Matriz): – uma matriz é uma estrutura que armazena os dados em várias linhas e em várias colunas , ou seja, é bidimensional; – apesar de incomum, uma matriz pode ser multidimensional; – sintaxe da especificação de um tipo matriz (PORTUGOL): tipo <identificador> = matriz [li1 : ls1, li2 : ls2, ..., lin : lsn] <tipo básico>; onde: lid e lsd são valores inteiros e positivos; lid é o limite inferior da dimensão d da matriz; lsd é o limite superior da dimensão d da matriz; lid lsd; d {1, 2, ..., n}. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 71 1 2 3 4 1 2 3 • Estrutura de Dados Homogênea (Matriz): – a especificação indica apenas o modelo; – para efetivar a estrutura no algoritmo é necessário declarar uma variável do tipo da estrutura especificada; – declaração de uma variável do tipo matriz (PORTUGOL): exemplo: tipo m = matriz [1 : 3, 1 : 4] real; m : MAT; índices MAT valores índices valores EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 72 29/11/2016 37 • Exercícios: 1. Escreva um algoritmo que leia uma matriz de 10 x 10 valores inteiros, calcule e imprima a soma dos valores que estão nas posições da matriz em que a soma do índice da linha e da coluna seja um número par. 2. Escreva um algoritmo que leia uma matriz de 20 x 20 valores inteiros, identifique e imprima os índices (linha e coluna) dos valores que são divisíveis por 3. 3. Considerando a mesma concessionária do slide 51, escreva um algoritmo que calcule e imprima o valor total a ser recebido por cada funcionário. Assuma que os totais das vendas e os valores a pagar devem ser armazenados em uma matriz. O algoritmo deve calcular e imprimir também o segundo maior valor pago no mês. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 73 • Estrutura de Dados Heterogênea (Registro): – um registro é uma estrutura formada por um conjunto de variáveis de tipos diferentes ou, eventualmente, iguais; – sintaxe da especificação de um tipo registro (PORTUGOL): – sintaxe da descrição (PORTUGOL): tipo <identificador> = registro <descrição> fim registro; <outro tipo> : identificador ; , <tipo básico> EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 74 29/11/2016 38 • Estrutura de Dados Heterogênea (Registro): – a especificação indica apenas o modelo; – para efetivar a estrutura no algoritmo é necessário declarar uma variável do tipo da estrutura especificada; – declaração de uma variável do tipo registro (PORTUGOL): exemplo: tipo r = registro caractere : NOME; real : SALARIO; inteiro : IDADE; lógico : SEXO; fim registro; r : REG; NOME SALARIO IDADE SEXO REG EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 75 • Exercícios: 1. Escreva um algoritmo que leia os dados (nome, sexo e salário) de um conjunto de pessoas, identifique e imprima o sexo e o salário daqueles que têm renda mensal maior que dois salários. 2. Escreva um algoritmo que leia os dados (nome, data de nascimento e cidade de origem) de 500 inscritos em um concurso, identifique e imprima o nome e a idade do candidato mais jovem. 3. Considerando a mesma concessionária do slide 51, escreva um algoritmo que calcule, armazene e imprima o valor total a ser recebido por cada funcionário. O algoritmo deve armazenar e imprimir também o nome e o tempo de serviço de cada funcionário na concessionária. EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS 76 29/11/2016 39 • Básica: GUIMARÃES, A. M., LAGES, N. A. C., Algoritmos e Estruturas de Dados, LTC, Rio de Janeiro, 1994; GUIMARÃES, A. M., LAGES, N. A. C., Introdução à Ciência da Computação, LTC, Rio de Janeiro, 1984; TREMBLAY, J. P., BUNT, R. B., Ciência da Computação - Uma Abordagem Algorítmica, McGraw-Hill, São Paulo, 1983. BIBLIOGRAFIA 77 • Complementar: FARRER, H. et al, Algoritmos Estruturados, 3ª edição, LTC, Rio de Janeiro, 1999; FORBELLONE, A. L. V., EBERSPACHER, H. F., Lógica de Programação: A Construção de Algoritmos e Estrutura de Dados, 3ª edição, Pearson, São Paulo, 2005; VILARIM, G., Algoritmos: Programação para Iniciantes, 2ª edição, Ciência Moderna, Rio de Janeiro, 2004; MANZANO, J. A. N. G., OLIVEIRA, J. F., Algoritmos: Lógica para Desenvolvimento de Programação de Computadores, 26ª edição revisada, Érica, São Paulo, 2012; SOARES, M. V., GOMES, M., M., SOUZA, M. A. F., Algoritmos e Lógica de Programação, 2ª edição revista e ampliada, Cengage Learning, São Paulo, 2012. BIBLIOGRAFIA 78 29/11/2016 40 FIM
Compartilhar