Algoritmos e Tipos de Dados - inf.ufes.br · É uma representação gráfica de algoritmos onde...
-
Upload
hoangnguyet -
Category
Documents
-
view
214 -
download
0
Transcript of Algoritmos e Tipos de Dados - inf.ufes.br · É uma representação gráfica de algoritmos onde...
Algoritmos e Tipos de Dados
2015/1 – Programação Básica de Computadores (INF 09325)
www.inf.ufes.br/[email protected]
Archimedes Detoni
Programa / Bibliografia1. Conceitos básicos
1. Introdução à computação2. Algoritmos: narrativa, fluxogramas e
pseudocódigo3. Tipos básicos de dados: numéricos, literais, lógicos
.W. L. C. Saliba. Técnicas de Programação: Uma Abordagem Estruturada. Pearson / Makron Books, 1993;.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 de dados
Grande quantidade Alta velocidade Precisão Automatização
Uso 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
8
● Computador● 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.
● Programação de Computadores● 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.
Programação de Computadores
9
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).
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
11
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.
Algoritmos
12
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.
Algoritmos e LPs (Ling. Prog.)
13
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úmeros1. 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 b2. s = a + b3. m = s / 24. imprimir m
1. ler a e b2. m = (a + b)/23. imprimir m, decimal
Formas de Representação
14
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:
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
Tomando um banho:
Entrar no banheiroTirar a roupa Abrir a torneira do chuveiro Entrar na água Ensaboar-se Sair da água Fechar a torneira Enxugar-se Vestir-se
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
Fluxograma Representação gráfica de algoritmos onde formas
geométricas diferentes implicam ações (instruções, comandos) distintos. Facilita o entendimento das ideias contidas nos
algoritmos e é menos imprecisa. Um pouco mais precisa Sem detalhes de implementação
16
Algoritmo e Lógica de programação
- 4 -
Esta representação é pouco usada na prática porque o uso da linguagem natural muitas vezes dá oportunidade a más interpretações, ambigüidades e imprecisões.
Por exemplo, a instrução "afrouxar ligeiramente as porcas" no algoritmo da troca de pneus está sujeita a interpretações diferentes por pessoas distintas. Uma instrução mais precisa seria: "afrouxar a porca, girando-a 30º no sentido anti-horário".
2.2 Fluxograma Convencional
É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintos. Tal propriedade facilita o entendimento das idéias contidas nos algoritmos e justifica sua popularidade.
Esta forma é aproximadamente intermediária à descrição narrativa e ao pseudocódigo (subitem seguinte), pois é menos imprecisa que a primeira e, no entanto, não se preocupa com detalhes de implementação do programa, como o tipo das variáveis usadas.
Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nível físico da implementação do algoritmo. Por exemplo, figuras geométricas diferentes são adotadas para representar operações de saída de dados realizadas em dispositivos distintos, como uma fita magnética ou um monitor de vídeo. Como esta apostila não está interessada em detalhes físicos da implementação, mas tão somente com o nível lógico das instruções do algoritmo, será adotada a notação simplificada da Figura 2.1 para os fluxogramas. De qualquer modo, o Apêndice A contém uma tabela com os símbolos mais comuns nos fluxogramas convencionais.
Início e final do fluxograma
Operação de entrada de dados
Operação de saída de dados
Operação de atribuição
Decisão
Figura 2.1 Principais formas geométricas usadas em fluxogramas.
Algoritmo e Lógica de programação
- 4 -
Esta representação é pouco usada na prática porque o uso da linguagem natural muitas vezes dá oportunidade a más interpretações, ambigüidades e imprecisões.
Por exemplo, a instrução "afrouxar ligeiramente as porcas" no algoritmo da troca de pneus está sujeita a interpretações diferentes por pessoas distintas. Uma instrução mais precisa seria: "afrouxar a porca, girando-a 30º no sentido anti-horário".
2.2 Fluxograma Convencional
É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintos. Tal propriedade facilita o entendimento das idéias contidas nos algoritmos e justifica sua popularidade.
Esta forma é aproximadamente intermediária à descrição narrativa e ao pseudocódigo (subitem seguinte), pois é menos imprecisa que a primeira e, no entanto, não se preocupa com detalhes de implementação do programa, como o tipo das variáveis usadas.
Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nível físico da implementação do algoritmo. Por exemplo, figuras geométricas diferentes são adotadas para representar operações de saída de dados realizadas em dispositivos distintos, como uma fita magnética ou um monitor de vídeo. Como esta apostila não está interessada em detalhes físicos da implementação, mas tão somente com o nível lógico das instruções do algoritmo, será adotada a notação simplificada da Figura 2.1 para os fluxogramas. De qualquer modo, o Apêndice A contém uma tabela com os símbolos mais comuns nos fluxogramas convencionais.
Início e final do fluxograma
Operação de entrada de dados
Operação de saída de dados
Operação de atribuição
Decisão
Figura 2.1 Principais formas geométricas usadas em fluxogramas.
Exemplo - Fluxograma
17
Algoritmo e Lógica de programação
- 5 -
De modo geral, um fluxograma se resume a um único símbolo inicial por onde a 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.
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
"Aprovado"
MEDIA aaa(N1 + N2) / 2
MEDIA >= 7
"Reprovado"
Fim
.V. .F.
Figura 2.2 Exemplo de um fluxograma convencional.
2.3 Pseudocódigo
Esta forma de representação de algoritmos é rica em detalhes, como a definição dos tipos das variáveis usadas no algoritmo. Por assemelhar-se bastante à forma em que os programas são escritos, encontra muita aceitação.
Na verdade, esta representação é suficientemente geral para permitir a tradução de um algoritmo nela representado para uma linguagem de programação específica seja praticamente direta.
A forma geral da representação de um algoritmo na forma de pseudocódigo é a seguinte:
Pseudocódigo
18
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.
Exemplo - Pseudocódigo
19
Algoritmo Calculo_MediaVar 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
Escolha da LP influencia no AlgoritmoO 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úmeros1. 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 b2. s = a + b3. m = s / 24. imprimir m
1. ler a e b2. m = (a + b)/23. imprimir m, decimal
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
Inteiros Naturais (N) e Inteiros (Z)
Reais Racionais (Q) e Irracionais (R) Utilização de “.”
Dados Numéricos
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 024
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: inteiroIní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ícios4 - 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ícios5 - 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ícios6 - [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.
30
( ) 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.
Exercício 4 - ResoluçãoAlgoritmo radarVar velocidadeVeiculo, velocidadeMaxima : RealIní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çãoAlgoritmo AliquotaImpostoVar rendimentoAnual, rendimentoMensal : RealIní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_seFim.
32