algoritmos e tipos de dados - inf.ufes.br · É uma representação gráfica de algoritmos onde...

33
Algoritmos e Tipos de Dados 2015/1 – Programação Básica de Computadores (INF 09325) www.inf.ufes.br/~archimedesdetoni [email protected] Archimedes Detoni

Upload: hoangnguyet

Post on 08-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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: 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

Exercício 6 - Resolução

33

(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.