Algoritmos e Tipos de Dados 2015/1 Programação Básica de Computadores (INF 09325) Archimedes Detoni www.inf.ufes.br/~archimedesdetoni archimedesdetoni@inf.ufes.br
Programa / Bibliografia 1. Conceitos básicos 1. Introdução à computação 2. Algoritmos: narrativa, fluxogramas e pseudocódigo 3. Tipos básicos de dados: numéricos, literais, lógicos L. C. Saliba. Técnicas de Programação: Uma Abordagem Estruturada. Pearson / Makron Books, 1993;.W..Capítulo 1 Introdução.Capítulo 2 Formas de Representação de Algoritmos.Capítulo 3 Tipos de Dados 2
Introdução à Computação Ciência nova Pouco mais de 50 anos Computar é calcular resultados por meio de dados Não necessariamente com computadores 3
Histórico O primeiro computador eletrônico foi construído no séc. XX, chamado ENIAC (Electronic Numerical Integrator And Computer) 140 quilowatts de energia elétrica; 18.000 válvulas; 1.500 relés; 30 toneladas. 4
Informática / Computadores Tratamento Grande quantidade Alta velocidade Precisão Automatização Uso de dados de programas de computador Diversas áreas 5
Computador John Von Neumann, pesquisador envolvido no projeto do ENIAC, construiu para o Instituto de Estudos Avançado de Princeton (Princeton Institute of Advanced Studies IAS) a máquina IAS; Ele imaginou que os programas poderiam ser representados em formato digital na memória, junto com os dados; Arquitetura de Von Neumann: Ciclo de Von Neumann: Busca-Decodifica-Executa 6
Computador Utilização básica Entrada Processamento Saída Formação básica Processador, memória, dispositivos de E/S Possuem um conjunto de instruções que são interpretáveis, como qualquer dispositivo 7
Programação de Computadores Computador Programação de Computadores Uma máquina de processar dados, numéricos ou simbólicos, que precisa de programas escritos em uma linguagem de programação para executar tarefas úteis. Tarefa de interpretar um determinado problema, organizá-lo e codificá-lo de modo a ser entendido (interpretável) pela máquina; Programa Produto final da tarefa de programação; Sequência de instruções codificadas em uma linguagem de programação, ou seja, que pode ser executadas por um computador. 8
Programação de Computadores Etapas de programação: Entendimento do problema a ser resolvido (análise); Planejamento de uma solução (modelagem); Formalização da solução usando uma linguagem de programação (codificação); Verificação da conformidade da solução obtida com o problema proposto (teste). 9
Linguagens de Programação No início Baixo nível Instruções primitivas, próximas à linguagem de máquina Atualmente Alto nível Instruções próximas à linguagem natural 10
Algoritmos Sequência finita e ordenada de instruções não ambíguas, com o propósito de solucionar determinado problema; possui fim, ordem e precisão Exemplo escovar os dentes: 1. Pegar a escova e a pasta de dentes; 2. Colocar um pouco de pasta sobre as cerdas da escova; 3. Escovar os dentes do maxilar inferior; 4. Escovar os dentes do maxilar superior; 5. Expelir da boca o excesso de espuma; 6. Bochechar um pouco de agua; 7. Lavar a escova e guarda-la; 8. Enxugar o rosto. 11
Algoritmos A descrição do algoritmo contém a lógica da solução do problema (modelagem) descrição de o que a máquina deve fazer para resolvê-lo; Sem preocupação de como a máquina vai executar a solução (liberdade de forma - sintaxe). A codificação do algoritmo usando uma linguagem de programação (rigor formal sintaxe bem definida) é que permite ao computador interpretar e executar as instruções. 12
Algoritmos e LPs (Ling. Prog.) O nível de detalhamento da LP (Linguagem de Programação) e suas ferramentas influencia a lógica efetuada pelo programador. Exemplo: calcular a média de 2 números 1. Ler os números; 2. Somar os 2 números; 3. Dividir por 2 o resultado da soma; 4. Imprimir o resultado. 1. ler a e b 2. s = a + b 3. m = s / 2 4. imprimir m 1. ler a e b 2. m = (a + b)/2 3. imprimir m, decimal 13
Formas de Representação Descrição Narrativa - algoritmos são expressos diretamente em linguagem natural; pouco usada porque o uso da linguagem natural muitas vezes é ambígua e imprecisa; Troca de um pneu furado: Tomando um banho: Afrouxar ligeiramente as porcas Suspender o carro Retirar as porcas e o pneu Colocar o pneu reserva Apertar as porcas Abaixar o carro Dar o aperto final nas porcas Entrar no banheiro Tirar a roupa Abrir a torneira do chuveiro Entrar na água Ensaboar-se Sair da água Fechar a torneira Enxugar-se Vestir-se 14
Descrição Narrativa Alto nível de abstração Linguagem natural Más interpretações, ambiguidades e imprecisões Exemplo [Saliba, 1992, p. 5]: Obter as notas da primeira e da segunda provas; Calcular a média aritmética entre as duas; Se a média for maior que 7 o aluno foi aprovado, senão ele foi reprovado. 15
2.2 Fluxograma Convencional Algoritmo e Lógica de programação É uma representação gráfica de algoritmos onde formas geométricas difere implicam ações (instruções, comandos) distintos. Tal propriedade facilita o entendimento contidas nos algoritmos e justifica sua popularidade. Esta representação é pouco usada na prática porque o uso daidéias linguagem natural as vezes dá oportunidade a más interpretações, ambigüidades e imprecisões. Esta forma é aproximadamente intermediária à descrição narrativa e ao pseudocó (subitemda seguinte), Por exemplo, a instrução "afrouxar ligeiramente as porcas" no algoritmo troca depois é menos imprecisa que a primeira e, no entanto, não se preocupa detalhes de implementação do programa, como o tipo das variáveis usadas. us está sujeita a interpretações diferentes por pessoas distintas. Uma instrução mais isa seria: "afrouxar a porca, girando-a 30º no sentido anti-horário". Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nível f da implementação do algoritmo. Por exemplo, figuras geométricas diferentes são adota para representar operações de saída de dados realizadas em dispositivos distintos, como Fluxograma Convencional fita magnética ou um monitor de vídeo. Como esta apostila não está interessada em deta físicos da implementação, mas tão somente com o nível lógico das instruções do algori É uma representação gráfica de algoritmos onde formas geométricas diferentes será adotada a notação simplificada da Figura 2.1 para os fluxogramas. De qualquer mod icam ações (instruções, comandos) distintos. Tal propriedade facilita Apêndice o entendimento dasuma tabela com os símbolos mais comuns nos fluxogramas convencion A contém as contidas nos algoritmos e justifica sua popularidade. Fluxograma Representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintos. Início e final do fluxograma Esta forma é aproximadamente intermediária à descrição narrativa e ao pseudocódigo item seguinte), pois é menos imprecisa queo a primeira e, no entanto, não se preocupa com ideias contidas nos Facilita entendimento das lhes de implementação do programa, como o tipo das variáveis usadas. algoritmos e é menos imprecisa. Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nível físico Operação de entrada de dados mplementação do algoritmo. Por exemplo, figuras geométricas diferentes são adotadas deum representar operações saída de dados realizadas em dispositivos distintos, como uma pouco mais precisa magnética ou um monitor de vídeo. Como esta apostila não está interessada em detalhes os da implementação, tão somente com o nível lógico das instruções do algoritmo, mas Sem detalhes de implementação adotada a notação simplificada da Figura 2.1 para os fluxogramas. De qualquer modo, o Operação de saída de dados ndice A contém uma tabela com os símbolos mais comuns nos fluxogramas convencionais. Início e final do fluxograma Operação de atribuição Operação de entrada de dados Operação de saída de dados Decisão 16 Figura 2.1 Principais formas geométricas usadas em fluxogramas.
execução do algoritmo começa, e um ou mais símbolos finais, que são pontos onde a execução do algoritmo se encerra. Partindo do símbolo inicial, há sempre um único caminho orientado a ser seguido, representando a existência de uma única seqüência de execução das instruções. Isto pode ser melhor visualizado pelo fato de que, apesar de vários caminhos poderem convergir para uma mesma figura do diagrama, há sempre um único caminho saindo desta. Exceções a esta regra são os símbolos finais, dos quais não há nenhum fluxo saindo, e os símbolos de decisão, de onde pode haver mais de um caminho de saída (usualmente dois caminhos), representando uma bifurcação no fluxo. Exemplo - Fluxograma A Figura 2.2 mostra a representação do algoritmo de cálculo da média de um aluno sob a forma de um fluxograma. Início N1, N2 MEDIA aaa (N1 + N2) / 2.V. MEDIA >= 7 "Aprovado".F. "Reprovado" Fim 17 Figura 2.2 Exemplo de um fluxograma convencional.
Pseudocódigo Pseudocódigo (linguagem estruturada ou Portugol) permite uma representação mais rica em detalhes, como p. ex. declaração de variáveis; Maior rigor sintático e semelhança com as LPs Estrutura geral: Algoritmo <nome_do_algoritmo> Var <declaração_de_variáveis> <subalgoritmos> Início <corpo do algoritmo> Fim. 18
Exemplo - Pseudocódigo Algoritmo Calculo_Media Var n1, n2, media: real Início Leia n1, n2 media (n1 + n2) / 2 Se media >= 7 Então Escreva Aprovado Senão Escreva Reprovado Fim_se Fim 19
Escolha da LP influencia no Algoritmo O nível de detalhamento da LP (Linguagem de Programação) e suas ferramentas influencia a lógica efetuada pelo programador. Exemplo: calcular a média de 2 números 1. Ler os números; 2. Somar os 2 números; 3. Dividir por 2 o resultado da soma; 4. Imprimir o resultado. 1. ler a e b 2. s = a + b 3. m = s / 2 4. imprimir m 1. ler a e b 2. m = (a + b)/2 3. imprimir m, decimal
Exemplo de Programa na LP C
Tipos de Dados Algoritmos são compostos por Instruções: manipulam dados Dados: porção de informações a serem processadas Não são, necessariamente, numéricos Tipos dos dados definem o que se pode fazer com eles 22
Dados Numéricos Inteiros Naturais (N) e Inteiros (Z) Reais Racionais (Q) e Irracionais (R) Utilização de. 23
Dados Literais Sequência de caracteres Letras, dígitos ou símbolos Strings (Alfanumérico) Delimitação por aspas duplas Exemplos Asdfg PBC $ 200 123 0 ==> Diferente de 0 24
Dados Lógicos Valores Booleanos (George Boole) VERDADEIRO True.V. FALSO False.F. 25
Exercícios 1. Descreva um algoritmo para resolver o seguinte problema: Dispõe-se de três vasilhas, sendo duas com capacidades de 9 e 4 litros respectivamente. As vasilhas não têm nenhum tipo de marcação, de modo que não é possível ter medidas como metade ou um terço. Como se pode usar as vasilhas de 9 e 4 litros para encher a terceira vasilha de medida desconhecida com seis litros de água. 2. Descreva os seguintes algoritmos utilizando as formas indicadas: Fazer café (narrativa); Calcular a área de um trapézio (fluxograma).
Exercícios 3. Passe o algoritmo abaixo para a forma de um fluxograma: Algoritmo Par_Impar Var num: inteiro Início Escreva Digite um número inteiro maior que zero: Leia num Se (num % 2 = 0) Então Escreva Número é Par. Senão Escreva Número é Ímpar. Fim_se Fim
Exercícios 4 - Dado o algoritmo em descrição narrativa abaixo, escreva-o em forma de fluxograma e pseudocódigo. Multa em um radar de trânsito: Obter a velocidade do veículo e a velocidade máxima permitida; Adicionar 10% de tolerância à velocidade máxima permitida; Se a velocidade do veículo for maior que a máxima, deve ser multado. 28
Exercícios 5 - Dado o algoritmo em descrição narrativa abaixo, escreva-o em forma de fluxograma e pseudocódigo. Cálculo da alíquota do imposto de renda: Obter o salário mensal do contribuinte; Multiplicar por 13 e obter rendimento anual; Se for até R$ 19.645,32, o contribuinte é isento; Entre R$ 19.645,33 e R$ 29.442,00 é de 7,5%; Entre R$ 29.442,01 e R$ 39.256,56 é de 15%; Entre 39.256,57 e R$ 49.051,80 é 22,5%; Acima de R$ 49.051,80 é de 27,5%. 29
Exercícios 6 - [Saliba, 1992, p. 14] Classifique os dados especificados abaixo de acordo com seu tipo, sendo I para inteiros, R para reais, S para strings (literais), B para booleanos (lógicos) e N para os quais não é possível definir um tipo de dado. ()0 ()1 ( ) 0.0 ( ) 0. ( ) -1 ( ) -32 ( ) +36 ( ) +32. ( ) -0.001 ( ) +0.05 ( ) +3257 ( ) a ( ) +3257 ( ) +3257. ( ) -0.0 ( ).F. ( ) -0.0 ( ).V. ()V ( ) abc ()F ( ).F ( ) V ( ).F. 30
Exercício 4 - Resolução Algoritmo radar Var velocidadeveiculo, velocidademaxima : Real Início Leia velveiculo, velmaxima velmaxima = velmaxima + (velmaxima / 10) Se velveiculo > velmaxima Então Escreva Multado! Senão Escreva OK! Fim_se Fim. 31
Exercício 5 - Resolução Algoritmo AliquotaImposto Var rendimentoanual, rendimentomensal : Real Início Leia rendimentomensal rendimentoaual = rendimentomensal * 12 Se rendimentoanual <= 19645.32 Então Escreva "Isento" Senão Se rendimentoanual <= 29442.0 Então Escreva "Alíquota de 7,5%" Senão Se rendimentoanual <= 39256.56 Então Escreva "Alíquota de 15%" Senão Se rendimentoanual <= 49051.80 Então Escreva "Alíquota de 22,5%" Senão Escreva "Alíquota de 27,5%" Fim_se Fim_se Fim_se Fim_se Fim. 32
Exercício 6 - Resolução (I) 0 (I) 1 (R) 0.0 (R) 0. (I) -1 (I) -32 (I) +36 (R) +32. (R) -0.001 (R) +0.05 (I) +3257 (L) a (L) +3257 (L) +3257. (L) -0.0 (L).F. (R) -0.0 (B).V. (N) V (L) abc (N) F (N).F (L) V (B).F. 33