eel170 computaÇÃo i ac/eel170.htm antonio cláudio gómez de sousa [email protected] 1a série de...

61
EEL170 COMPUTAÇÃO I www.del.ufrj.br/~ac/eel170.htm Antonio Cláudio Gómez de Sousa [email protected] 1a série de slides versão 19/03/2012

Upload: internet

Post on 17-Apr-2015

111 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

EEL170 COMPUTAÇÃO I www.del.ufrj.br/~ac/eel170.htm

Antonio Cláudio Gómez de [email protected]

1a série de slidesversão 19/03/2012

Page 2: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

2

Apresentação da disciplina

• Disciplina obrigatória – 1a da área de computação

• Objetivo: estudar lógica de programação e algoritmos

• Aulas teóricas sobre algoritmos

• Aulas práticas com a implementação dos algoritmos em Pascal

Page 3: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

3

Sumário:

• Apresentação da disciplina• Solução de problemas• Algoritmos estruturados• LEA – linguagem para a especificação de algoritmos• Algoritmos numéricos e não numéricos• Estruturas de dados homogêneas e heterogêneas• Modularização• Refinamento etapa por etapa• Arquivos• Alocação dinâmica de memória• Objetos

Page 4: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

4

Sociedade da Informação

• Desmaterialização dos produtos

• Informação e poder

• Informática: exclusão ou inclusão

• Democratização ou concentração

• Software: valor de troca ou valor de uso – software livre e proprietário

• Inclusão digital - LIpE

Page 5: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

5

Computação

• Computar contar, calcular

• Desenvolvimento de software e hardware de computadores

Page 6: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

6

Computador

• Máquina flexível de uso geral• Programável: pode-se alterar seu

comportamento• Armazena dados e programas• Máquina complexa: sistema operacional para

permitir utilizar seus recursos• Digital: representa e processa números, textos e

imagens em forma discreta - binária

Page 7: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Capítulo 1

• Arquitetura de computadores• Software• Linguagens• Tradutores

Page 8: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

8

Numeração binária

• Posicional como a decimal

• Dígitos 0 e 1

Page 9: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

9

Representação binária e decimal

• 514 = 500+10+4 = 5.102+1.101+4.100

• 10011 = 1.24 +0.23 +0.22 +1.21 + 1.20 = 16 + 0 + 0 + 2 + 1 = 19

• Processo inverso:

• Divisão 19/2 9/2 4/2 2/2 1/2 0

• Resto 1 1 0 0 1

Page 10: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

10

Potências de dois

20 = 121 = 222 = 423 = 824 = 1625 = 3226 = 6427 = 12828 = 25629 = 512210 = 1024 = 1 K

Page 11: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

11

Solução de problemas computacionais numéricos e não numéricos

• Analisar o problema• Criar soluções• Selecionar uma solução• Descrever a solução• Especificar na forma de

algoritmo• Codificar em uma

linguagem• Compilar o programa

fonte• Testar o programa

executável

• Linguagem natural• Linguagem natural• Linguagem natural• Linguagem natural• Pseudo-código:

linguagem semi-formal• Pascal: programa fonte

em linguagem formal• Gerar um programa

executável binário• Utilizar o programa

executável binário

Page 12: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Analisar o problema

• Descrever em linguagem natural• Especificar os requisitos em linguagem

semi-formal• Abstração: o que é importante• Centro no usuário

Page 13: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Criar soluções

• Descrever as soluções em linguagem natural• Especificar as soluções em linguagem semi-

formal• Definir os critérios para a escolha da melhor

solução• Escolher a melhor solução• Abstração• Modularização• Refinamento etapa por etapa• Especificação semi-formal da solução

Page 14: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

14

Procedimento

• Sequência de passos para resolver um problema

– Ex.: Receita para fazer um bolo– Cuidado:

– Este tipo de procedimento do exemplo mostra o que o leitor deve fazer para preparar um bolo

– Os procedimentos e algoritmos computacionais que veremos devem representar o comportamento que um computador deve ter para nos auxiliar a resolver um problema

Page 15: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

15

Procedimento para trocar uma lâmpada

• Pegar uma escada• Posicionar a escada• Buscar uma lâmpada nova• Subir na escada• Retirar a lâmpada queimada• Colocar a lâmpada nova• Descer da escada

– Novamente: aqui está o que o leitor deve fazer, não o comportamento de um computador

Page 16: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

16

Algoritmo

• Procedimento

• Efetivo

• Para entradas finitas fornece saidas finitas repetitíveis em tempo finito

• Algoritmos computacionais: descrevem o comportamento que um computador deve ter para nos apoiar na solução de algum problema

Page 17: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

17

Algoritmo de Euclides para o cálculo do mdc

Sejam x e y dois números inteiros maiores que zero; calcule o resto da divisão inteira de x por y; se o resto for zero, então o mdc é o y; se o resto não for zero então atribua o valor de y a x, atribua o valor do resto a y e recomece do cálculo do resto da divisão de x por y até que o resto seja zero.

Page 18: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

18

Algoritmo de Euclides na forma de etapas

1) Escolha x e y;

2) Calcule o resto da divisão inteira de x por y;

3) Se o resto for diferente de zero faça:3.1) Atribua o valor de y a x;

3.2) Atribua o valor do resto a y;

3.3) Retorne para a etapa 2;

4) Se o resto for zero então o y é o mdc.

Page 19: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

19

Algoritmo de Euclides como fluxograma de um programa

inicio

Leia x, y

r resto(x,y)

X yY r

r=0

Escreva: o mdc é x

fim

não sim

Ordem para o computador

Ordem para o computador

Page 20: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

20

Algoritmo de Euclides em pseudo-código - LEA

algoritmo euclides(* algoritmo para o cálculo do mdc de dois números inteiros maiores que zero

segundo Euclides; responsável:... ; data:... *)(* bloco de repetição com teste de término após o bloco *)inicio

leia (x, y) (* dois valores estão sendo digitados e atribuidos às variáveis – o computador

“lê” os dados que o usuário digita no teclado *)repita

r resto (x,y)x yy r

até que r = 0escreva (x) // o computador “escreve” o valor no dispositivo padrão de saída

fim

Page 21: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

inicioleia (x, y)repita

r resto (x,y)x yy r

até que r = 0escreva (x)

fim

inicio

Leia x, y

r resto(x/y)

X yY r

r=0

Escreva: o mdc é x

fim

não sim

Page 22: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

22

Algoritmo de Euclides – teste no início

inicio

Leia x, y

r resto(x,y)

X yY r

r<>0

Escreva: o mdc é y

fim

nãosim

r resto(x,y)

Page 23: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

23

Algoritmo de Euclides – teste no início

algoritmo euclides(* algoritmo para o cálculo do mdc de dois números inteiros maiores que zero segundo Euclides; responsável:... ; data:... *)(* bloco de repetição com teste de término antes do bloco *)inicio

leia (x, y)r resto (x,y)enquanto r <> 0 façainicio

x yy rr resto (x,y)

fimescreva (y)

fim

Page 24: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

24

inicioleia (x, y)r resto (x,y)enquanto r <> 0 faça

iniciox yy rr resto (x,y)

fimescreva (y)

fim

inicio

Leia x, y

r resto(x,y)

X yY r

r<>0

Escreva: o mdc é y

fim

nãosim

r resto(x,y)

Page 25: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Algoritmos

Estruturas de controle

Page 26: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Soma de três números

Etapas:

Preparar

Digitar os números

Somar os números

Apresentar o resultado

Page 27: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

27

Estrutura de controle sequencial: exemplo

// Problema: somar três números// Solução: fazer um programa que auxilie na soma de três númerosalgoritmo soma3a(* algoritmo para a soma de 3 números; responsável:...; data:... *)

inicioLer os tres númerosSomar os tres númerosEscrever a soma

fim

Page 28: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

28

Exemplo detalhado// Problema: somar três números// Solução: fazer um programa que auxilie na soma de três númerosalgoritmo soma3a(* algoritmo para a soma de 3 números; responsável:...; data:... *)

inicio(* digitar os dados *)leia (nr1)leia (nr2)leia (nr3)(* calcular os resultados *)soma nr1 + nr2 + nr3(* apresentar os resultados *)escreva (soma)

fim

Page 29: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Algoritmo sequencial na forma de fluxograma

inicio

Leia nr1, nr2, nr3

Soma nr1+nr2+nr3

Escreva soma

fim

Page 30: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

30

Estrutura de controle sequencial

• Os comandos são executados na mesma ordem em que estão escritos: seqüencialmente de cima para baixo.

• O fluxo de execução estático (programação) e o fluxo de execução dinâmico (execução do algoritmo) são correspondentes.

Page 31: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

31

Cálculo da média de muitas variáveis

• Problema: calcular a média das notas dos alunos da turma - há 45 alunos na turma

• EtapasPrepararDigitar as notasSomar as notasDividir a soma por 45Apresentar o resultado

Page 32: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Cálculo da média de muitas variáveis - detalhamento

// Problema: calcular a média de 45 notas// Solução: fazer um programa que auxilie na média de 45 notasalgoritmo media45a(* algoritmo para a média de 45 números; responsável:...; data:... *)inicio

(* digitar os dados *)leia (nota1)leia (nota2)leia (nota3)…Leia (nota45)(* calcular os resultados *)soma nota1 + nota2 + nota3 + … +nota45média soma/45(* apresentar os resultados *)escreva (média)

fim

Page 33: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

33

Cálculo da média de muitas variáveis - problema

• Há 45 alunos na turma• Apenas com a estrutura seqüencial teria de

definir 45 variáveis e repetir 45 vezes o comando para ler

• Solução do problema:• Vamos alterar o soma3a para outra forma em

que necessite apenas de uma variável para a entrada de dados

Page 34: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

34

Nova forma para a soma de três números acumulando os valores em uma variável

// Problema: somar três números// Solução: fazer um programa que auxilie na soma de três númerosalgoritmo soma3b(* algoritmo para a soma de 3 números; responsável:...; data:... *)inicio

soma 0 // acumuladorleia (número)soma soma + númeroleia (número)soma soma + númeroleia (número)soma soma + númeroescreva (soma)

fim

Page 35: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

35

Atribuição• O comando soma soma + número é um comando chamado de

atribuição, onde calcula-se a expressão à direita da flecha, e atribui-se seu valor à variável à esquerda da flecha. Assim a mesma variável pode constar dos dois lados do comando de atribuição.

• Com essa nova forma foi possível utilizar apenas uma variável para a entrada de três valores numéricos.

• Há ainda um problema: necessitamos de 3 comandos de entrada de dados e atribuição para ler 3 valores e somá-los em uma variável. Como há sempre dois comandos que se repetem, podemos então utilizar um comando de repetição (iteração) para mandar repetir esses comandos o número de vezes que quizermos.

Page 36: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Estrutura de controle de iteração

• Um bloco de comandos é repetido• Deve haver uma condição para

interromper a repetição do bloco de comandos

• A condição pode ser verificada antes de cada repetição, ou após cada repetição

• Para bloco de comandos com vários comandos independentes há como definir explicitamente os comandos que compõem o bloco de repetição

Page 37: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

37

Nova forma para a soma de três números com iteração

// Problema: somar três números// Solução: fazer um programa que auxilie na soma de três númerosalgoritmo soma3c(* algoritmo para a soma de 3 números; responsável:...; data:... *)inicio

(* preparar *)soma 0 // acumulador ou somatóriocontador 0 // variável de controle(* digitar os dados *)repita

contador contador + 1leia (número)soma soma + número

até que contador = 3(* apresentar os resultados *)escreva (soma)

fim

Page 38: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

38

Calcular agora a média de 45 notas utilizando a iteração

// Problema: média de 45 notas// Solução: fazer um programa que auxilie no cálculo da média de 45 notas de alunosalgoritmo média45b(* algoritmo para calcular a média de 45 notas; responsável:...; data:... *)inicio

(* preparar *)soma 0 // soma dos números digitadoscontador 0 // variável de controle - contador(* digitar dos dados *)repita

contador contador + 1leia (número)soma soma + número

até que contador = 45(* calcular os resultados *)média soma/45(* apresentar os resultados *)escreva (média)

fim

Page 39: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

inicio

fim

Soma <- 0Contador <- 0

Contadorcontador+1

Leia número

Somasoma+número

Média soma/45

Escreva média

Contador=45não

sim

Page 40: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

40

Generalizar o programa para calcular a média de “n” notas

• Problema: Calcular a média de “n” notas• Solução: fazer um programa que auxilie

no cálculo da média de “n” notas de alunos: permitir que o usuário escolha a quantidade de notas e digite as “n” notas; calcular a média.

• Algoritmo:

Page 41: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Algoritmo média de “n” valores

Etapas

Preparar : escolher quantos são os valores – “n”

Digitar e acumular os “n” valoresCalcular a médiaApresentar o resultado

Page 42: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

42

algoritmo médian(* algoritmo para calcular a média de n notas; responsável:...; data:...*)

inicio(* preparar *)soma 0 // soma das notascontador 0 // variável de controle(* Escolher quantos são os valores *)escreva (‘Informe a quantidade de notas’) (* para orientar o usuário no que ele deve fazer *)leia (quantidade)(* Digitar e acumular os “n” valores *)repita

contador contador + 1escreva (‘Informe a nota ‘, contador) (* para orientar o usuário no que ele deve fazer *)leia (número)soma soma + número

até que contador = quantidade(* Calcular a média e apresentar os resultados *)média soma/quantidadeescreva (média)

fim

Page 43: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Estrutura condicional

Problema: Verificar se um número inteiro positivo é primo

Solução: Fazer um programa que calcule se um número informado pelo usuário é primo.

Técnica: Testar se o número é divisível por algum número menor que ele.

Algoritmo testePrimo(* algoritmo para testar se um número é primo;

responsável: ...; data: ... *)

Page 44: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Iniciodivisor 1 // preparar o valor inicial do divisorePrimo verdadeiro // variável booleana iniciada em verdadeiroEscreva (‘Informe o número que deseja testar se é primo’)Leia (numero)(* Cálculo para verificar se é primo *)Enquanto divisor <= (numero div 2) faça

Iniciodivisor divisor +1Se resto numero/divisor = 0 então

inicioePrimo falso

fim; // o ponto e vírgula é apenas para chamar a atenção para o fim do sefim

(* apresentar o resultado *)Se ePrimo então

inicioescreva (‘O número ‘,numero,’ é primo’)

fimSenão

inicioescreva (‘O número ‘, numero,’não é primo’)

fimfim

Page 45: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

inicio

fim

Dividor 1ePrimo verdadeiro

Divisor divisor + 1

Leia número

Escreva Não é primo

ePrimo falso

Escreva É primo

Divisor <=numero/2

nãosim

Resto numer/divisor = 0

ePrimo

sim

sim

não

não

Page 46: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

Estrutura condicional

• Há uma condição de controle• Há dois blocos de comandos• A condição é avaliada:

– Verdadeira: é executado um bloco de comandos

– Falsa: é executado o outro bloco de comandos

– Nos dois casos o algoritmo continua após o fim do comando “se”

• O bloco de comandos para a avaliação falsa pode ser optativo

Page 47: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

47

Estrutura condicional: outro exemplo

• Problema: Calcular a altura média dos homens e das mulheres de uma população

• Solução: fazer um programa que auxilie no cálculo da altura média de homens e mulheres de uma população – para cada pessoa digitar se é homem ou mulher e sua altura; terminar a entrada de dados perguntando após cada entrada de dados se há mais pessoas.

Algoritmo:

algoritmo alturas(* algoritmo para calcular a altura média de homens e mulheres; responsável:...; data:... *)

Page 48: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

48

inicio(* Preparar *)somaAltHomens, somaAltMulheres, qtdHomens, qtdMulheres 0 // preparar totalizadores(* Digitar os dados *)repita

escreva (‘Informe o gênero m ou f e a altura’) // para orientar o usuárioleia (gênero, altura)se gênero = ‘m’ então

iníciosomaAltHomens somaAltHomens + alturaqtdHomens qtdHomens + 1

fimSenão

iniciose gênero = ‘f’ então

IníciosomaAltMulheres somaAltMulheres + alturaqtdMulheres qtdMulheres + 1

Fimsenão escreva (‘gênero indevido: deve ser m ou f’)

fimescreva (‘Informe se terminaram os dados s ou n:’)leia (resposta)

até que resposta = ‘s’(* Calcular os resultados *)alturaMédiaHomens somaAltHomens/qtdHomensalturaMédiaMulheres somaAltMulheres/qtdMulheres(* Apresentar os resultados *)escreva (‘A altura média dos homens é: ‘, alturaMédiaHomens)escreva (‘A altura média das mulheres é: ‘, alturaMédiaMulheres)

fim

Page 49: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

inicio

fim

Leia (altura, gênero)

Escreva Continuar ‘s’ ou ‘n’

alturaM alturaM + altura

Leia resposta

qtdH qtdH + 1

Calcular e apresentaras médias

Resposta = ‘s’

nãosim

Genero=‘m’ alturaH alturaH + alturasim não

qtdM qtdM + 1

Cuidado: há uma diferença do algoritmo anteriorCuidado: há uma

diferença do algoritmo anterior

Page 50: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

50

Iteração com variável incrementada

// Problema: Encontrar os divisores de um número inteiro positivo maior que 1// Solução: Fazer um programa que apresente os divisores de um número inteiro maior que 1// Algoritmo:algoritmo divisores(* algoritmo para apresentar os divisores de um número maior que 1; responsável: ...; data:... *)inicio

(* Preparar *)escreva (‘Informe o número para o cálculo de seus divisores’)leia (numeroTeste)(* Percorrer os números de 2 a (númeroTeste div 2) testando quais são os divisores *)para divisor variando de 2 a (numeroTeste div 2) faça

Inicio // poderia não ter usado inicio e fim

se resto (numeroTeste div divisor) = 0 então

inicio

escreva (‘O número ‘, divisor, ‘é um divisor de ‘, numeroTeste)

fim; // veja o ponto e vírgula para o fim do se – não há o “senão”

fimfim

Page 51: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

51

Iteração embutida

• Problema: Encontrar os números perfeitos até um número “n” inteiro e maior que 2

• Solução: Fazer um programa que calcule os números perfeitos até “n”, sendo que “n” pode variar de 2 a 32.000

• Algoritmo: • algoritmo numeroPerfeito• (* algoritmo para o cálculo dos números

perfeitos até o limite informado; responsável:......; data:.... *)

Page 52: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

52

Inicio escreva ('Informe o limite para o cálculo dos números perfeitos')//preparaçãoleia (limite) // inteiro maior do que 2para numero variando de 2 a limite faça // gerar os númerosinicio

somaDivisores 1 // iniciar a soma dos divisores com 1para divisor variando de 2 a numero div 2 faça // gerar divisores

Iniciose resto numero div divisor = 0 então // testar se é divisor

iniciosomaDivisores = somaDivisores + divisor

fim;fim

se somaDivisores = numero então // testar se é perfeitoinicio

escreva ('O número ', numero, 'é um número perfeito')fim;

fimfim

Page 53: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

53

• Problema: Calcular o valor de ex com erro menor do que 0,00001 e utilizando a série:

• ex = x0 + x1/1! + x2/2! + x3/3! + ...• Solução: Analisar a série.• Para x>1 os valores dos termos aumentam até

um limite, e depois decrescem monotonamente.• Para x<1 os valores dos termos da série

decrescem monotonamente.• A partir do termo com valor menor que o erro

permitido, todos os demais terão valores inferiores ao erro, e pode-se, de forma simplificada, desprezá-los.

Cálculo numérico de ex através do somatório de termos de uma série

Page 54: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

54

Continuação do cálculo de ex

• Analisar a série: se dado um termo pudermos calcular o seguinte, temos a lei de formação dos termos da série, e podemos fazer uma iteração gerando e somando os termos da série, até que um termo seja menor que o erro.

• Algoritmo:• algoritmo serieex• (* algoritmo para o cálculo de ex;

responsável:...; data:...;*)

Page 55: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

55

inicioescreva ('informe o valor de x')leia (x)numerador, denominador, somaTermos 1n <- 0repita

numerador numerador * x // gera numeradorn <- n + 1denominador denominador * n // gera denominadortermo numerador/denominador // calcula termosomaTermos somaTermos + termo // acumula termo

até que termo < 0,00001 // testa precisãoescreva ('O valor de e elevado a ', x, ' é ', somaTermos)

fim

Page 56: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

56

Variáveis• Variáveis permitem manipular dados

– Ex.: idade, dataNascimento, total• Tipo: especifica os valores a que uma

variável pode estar associada– Ex.: inteiro, real, booleano, literal,

caractere• Tipo estático: o tipo é associado a uma

variável e não pode mais ser trocado• Tipo dinâmico: o tipo da variável pode

variar durante a execução do programa• Tipo explícito: o tipo da variável é

declarado explicitamente

Page 57: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

57

Tipos primitivos comuns

• Inteiro: conjunto dos números inteiros• Real: conjunto dos números reais• Lógico (booleano): falso ou verdadeiro• Caractere: um caractere qualquer• Literal (string): uma cadeia de caracteres

Page 58: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

58

Identificador da variável

• Nomeia uma variável• Em geral pode ser composto por letras e

dígitos numéricos• Deve dar uma idéia do conteúdo da variável• Estética java:

– todas letras minúsculas; quando o identificador é composto pela concatenação de palavras, a primeira letra de cada palavra a partir da segunda é escrita em maiúsculas.

• Ex.: dataNascimento; totalAlturaMulheres; totalSaldo; contador; temperaturaMaxima

Page 59: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

59

Constantes

• Dado que não muda de valor• Exemplos:

– Inteiro: 5– Real: 3,4– Literal: 'Imutável'

• Declaração:– Exemplo: Pi = 3,1416

Page 60: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

60

Operadores mais comuns

• Aritméticos: + - * / div mod• Relacionais: = > < >= <= <>• Lógicos: e ou não

Page 61: EEL170 COMPUTAÇÃO I ac/eel170.htm Antonio Cláudio Gómez de Sousa ac@del.ufrj.br 1a série de slides versão 19/03/2012

61

Tabela verdade

A B A ou B A e B

F F F F

F V V F

V F V F

V V V V