Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho
Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo Tipos de Variáveis Operadores Estruturas de Controle Estruturas de Dados Subprogramação
Fluxograma É uma descrição esquemática de um processo que usa figuras geométricas padronizadas que representam elementos da computação necessária ao processo. Abaixo temos alguns Início Dados Decisão Conector Fim Processo Conector fora da página
Pseudocódigo É a representação em linguagem natural de comandos computacionais No nosso caso escreveremos o pseudocódigo com palavras em português Os comandos do pseudocódigo serão introduzidos a medida quer forem necessários
Fazendo o Chinês Fazer o Chinês é escrever os resultados de todos os passos de um determinado procedimento -É uma forma tradicional de detectar erros de lógica de um programa
Fazendo o Chinês Fazer o Chinês é escrever os resultados de todos os passos de um determinado procedimento -É uma forma tradicional de detectar erros de lógica de um programa Obs: Existem ferramentas sofisticadas de depuração de códigos usadas em trabalhos mais complexos
Um exemplo: Baskara Seja o polinômio a x 2 +b x+c, onde a, b, c R. Determine as raízes reais deste polinômio usando a fórmula de Baskara: x= b± b 2 4 a c 2a Começaremos a descrição do algorítmo de forma ingênua
Baskara Fluxograma 1 de Baskara Início a, b, c x 1 ( b+ b 2 4 ac )/2a x 2 ( b b 2 4 ac )/2 a x 1, x 2 Fim
Baskara Porque este fluxograma está errado? 1 Caso a seja zero teremos uma indeterminação 2 Caso b 2 4 a c for negativo não teremos resposta compatível com o especificado pelo problema
Baskara Porque este fluxograma está errado? 1 Caso a seja zero teremos uma indeterminação 2 Caso b 2 4 a c for negativo não teremos resposta compatível com o especificado pelo problema Resolveremos um problema por vez
Baskara Antes apresentemos a estrutura de decisão
Baskara Decisão Processo1 s decisão n Processo2 A decisão é avaliada se verdadeira Caso for verdadeira (S) o processo1 é executado Caso não for verdadeira (N) o processo2 é executado
Baskara Com esta apresentação poderemos dar continuidade à criação do fluxograma para a fórmula de Baskara
Baskara Fluxograma 2 de Baskara Início 1 a, b, c x 2=( b b 2 4 a c )/2 a x= c/b n Se a 0 duas raizes : x 1, x 2 a=0.uma raiz : x s x 1=( b+ b 2 4 ac)/2 a Fim 2 2 1
Baskara Porque este fluxograma ainda está errado ao resolver o problema de número 1?
Baskara Porque este fluxograma ainda está errado ao resolver o problema de número 1? Caso b seja zero teremos uma indeterminação
Baskara Fluxograma 3 de Baskara Início 1 n Se b 0 a, b, c x 2=( b b 2 4 a c )/2 a s x= c/b n Se a 0 duas raizes : x 1, x 2 a=0.uma raiz : x s x 1=( b+ b 2 4 ac)/2 a Fim 2 2 1 a=0, b=0. Não há raizes
Baskara Mas ainda há uma incorreção Caso a for nulo, como também b, então se c for nulo teremos uma identidade e temos que prever esta possibilidade Vamos corrigir...
Baskara Fluxograma 3b de Baskara Início 1 n Se b 0 a, b,c x 2=( b b 2 4 a c )/2 a n Se c = 0 s 3 s x= c/b a=0.umaraiz : x 2 n s Se a 0 x 1=( b+ b 2 4 ac)/2 a 1 duas raizes : x 1, x 2 Fim 2 a=0, b=0. Não há raizes 3 a, b, c nulos
Baskara Vamos incluir a análise de b 2 4 a c
Baskara Fluxograma 4 de Baskara Início 1 n Se c = 0 s n s Se b 0 x c/b n a, b, c Se a 0 x 1 ( b+ b 2 4 ac)/2a x 2 ( b b 2 4 ac )/2 a a=0.uma raiz : x s duas raizes : x 1, x 2 a, b, c nulos 2 s n Se b 2-4ac>=0 n 2 Fim a=0, b=0. Não há raizes 1 Não há raizes reais
Baskara Vamos apresentar os pseudocódigos equivalentes a alguns estes fluxogramas
Baskara Programa Baskara1 Reais a, b, c, x1, x2 Leia a, b, c x 1 ( b+ b 2 4 ac)/2a x 2 ( b b 2 4 ac )/2 a Imprima x1, x2 Fim Início a, b, c x 1 ( b+ b 2 4 ac )/2a x 2 ( b b 2 4 ac )/2 a x 1, x 2 Fim
Baskara Programa Baskara1 Reais a, b, c, x1, x2 Leia a, b, c x 1 ( b+ b 2 4 ac)/2a x 2 ( b b 2 4 ac )/2 a Imprima x1, x2 Fim Início do programa Declaração de variáveis Leitura de dados Cálculo e atribuição de valor Cálculo e atribuição de valor Impressão dos resultados Fim do programa
Baskara Programa Baskara1b Reais a, b, c, x1, x2 a 3 b 2 c 2 x 1 ( b+ b 2 4 ac )/2a x 2 ( b b 2 4 ac)/2 a Imprima x1, x2 Fim Início do programa Declaração de variáveis Atribuição de valores Cálculo e atribuição de valor Cálculo e atribuição de valor Impressão dos resultados Fim do programa
Baskara Fluxograma 3b de Baskara Início 1 n Se b 0 a, b,c x 2 ( b b 2 4 ac )/2 a n Se c = 0 s 3 s x c/b a=0.umaraiz : x 2 n s Se a 0 x 1 ( b+ b 2 4 ac)/2a 1 duas raizes : x 1, x 2 Fim 2 a=0, b=0. Não há raizes 3 a, b, c nulos
Baskara Programa Baskara3b Reais a, b, c, x1, x2 Leia a, b, c se a 0 senão fim se x 1 ( b+ b 2 4 a c )/ 2a x 2 ( b b 2 4 a c )/2a Imprima x1, x2 se b 0 x c/b senão fim se se c = 0 Imprima a,b,c nulos senão imprima a,b nulos. Não há raizes fim se Fim Baskara3b
Baskara Fluxograma 4 de Baskara Início 1 n Se c = 0 s n s Se b 0 x c/b n a, b, c Se a 0 x 1 ( b+ b 2 4 ac)/2a x 2 ( b b 2 4 ac )/2 a a=0.uma raiz : x s duas raizes : x 1, x 2 a, b, c nulos 2 s n Se b 2-4ac>=0 n 2 Fim a=0, b=0. Não há raizes 1 Não há raizes reais
Baskara Programa Baskara4 Reais a, b, c, x1, x2 Leia a, b, c se a 0 se b 2 4 a c 0 x 1 ( b+ b 2 4 a c )/2a x 2 ( b b 2 4 a c )/2 a Imprima x1, x2 senão imprima não há raízes reais fim se senão se b 0 x c/b senão se c = 0 imprima a,b,c nulos senão imprima a,b nulos. Não há raizes fim se fim se fim se Fim Baskara4
Baskara Observe que aqui pegamos como exemplo um problema que você provavelmente acha muito fácil
Baskara Observe que aqui pegamos como exemplo um problema que você provavelmente acha muito fácil Mas observe o número de decisões e alternativas que você tem no processo de usar a fórmula de Baskara
Baskara Observe que aqui pegamos como exemplo um problema que você provavelmente acha muito fácil Mas observe o número de decisões e alternativas que você tem no processo de usar a fórmula de Baskara Programar nos exige ficar conscientes de cada passo do algoritmo.
Repetições Processo Decisão Valor inicial Valor final Incremento Processo Processo Processo Processo Repetição condicional Repetição contável
Um exemplo com repetição Obtenha a soma dos números inteiros de 1 a 10
Um exemplo com repetição início s 0 i 1 até 10 s s + i s fim
Um exemplo com repetição A variável s é convencionalmente chamada de acumulador enquanto a variável i é chamada de contador.
Um exemplo com repetição início s 0 i 1 até 10 s s + i s Programa soma Inteiro s, i s 0 para i 1 até 10 passo 1 s s + i fim para imprima s fim fim
Um exemplo com repetição início s 0 i 1 até 10 s s + i s Programa soma Inteiro s, i s 0 para i 1 até 10 s s + i fim para imprima s fim fim
Um outro exemplo com repetição Obtenha o fatorial de um número inteiro não negativo n
Um outro exemplo com repetição início n fat 1 i 1 até n fat fat * i fat fim programa fatorial inteiro fat, i, n leia n fat 1 para i 1 até n fat fat * i fim para imprima fat fim
E mais outro exemplo com repetição Calcule o valor da função exponencial no ponto x=1 usando a série de Taylor truncada em n termos que é dada por e x =1+ x 1! + x2 2! + x3 3! + + x n n!
E mais outro exemplo com repetição Aproveitaremos o pseudocódigo que fizemos para o fatorial
Um outro exemplo com repetição Programa exponencial Real exp Inteiro fat, i, j, n leia n exp exp + 1/fat fim para imprima exp fim exp 1 para i 1 até n fat 1 para j 1 até i fat fat * j fim para
Um outro tipo de repetição Além da repetição contável encontramos nas linguagens de programação a repetição condicional. Em pseudocódigo podemos representar esta repetição como.. enquanto <condição> faça.. fim enquanto..
Um outro tipo de repetição O fragmento de pseudocódigo i 1 enquanto (i <= n) faça fat fat * i i i + 1 fim enquanto é equivalente ao fragmento para i 1 até n fat fat * i fim para
Um exemplo com repetição condicional Dados dos valores a e b inteiros distintos, sendo que a < b. Faça o somatório dos valores compreendidos entre a e b inclusive.
Um exemplo com repetição condicional Programa soma inteiros a, b, s, i leia a, b s a i a enquanto (i < b) faça i i + 1 s s + i fim enquanto imprima A soma de, a, ate, b, =, s fim
Um exemplo com repetição condicional Dados dos valores a e b inteiros distintos, sendo que a < b. Faça o somatório dos valores compreendidos entre a e b inclusive até que o produto a*b seja maior que 30.
Um exemplo com repetição condicional Programa soma inteiros a, b, s, i leia a, b s a i a enquanto ((i < b) E (a*b < 30)) faça i i + 1 s s + i fim enquanto imprima A soma de, a, ate, b, =, s fim
Um exemplo com repetição condicional Foi apresentado informalmente uma série de tipos de variáveis e operadores. Agora partiremos para uma apresentação mais rigorosa destes dois elementos.