Upload
vudan
View
217
Download
0
Embed Size (px)
Citation preview
Programação de Computadores
Instituto de Computação UFFDepartamento 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
Conteúdo
● Fluxograma e pseudocódigo
Elementos de um fluxograma
Pseudocódigo
“O Chinês“
Um exemplo: implementar a Fórmula de Baskara
Estruturas de repetição e exemplos simples
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
Fim
Dados Decisão
ProcessoConector fora
da página
Conector
Pseudocódigo
É a representação em linguagem natural de comandos computacionais
No nosso caso escreveremos o pseudocódigo com palavras em português
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 , onde . Determine as raízes reais deste polinômio usando a fórmula de Baskara:
● Começaremos a descrição do algoritmo de forma ingênua
a x2+b x+c a ,b , c∈ℜ
x=−b±√b2
−4 ac2a
Baskara
Fluxograma 1 de Baskara
Início
Fim
a ,b , c
x 1, x 2
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
Baskara
OBS!
● Os valores x1, x2, a, b, c são ditas variáveis as quais são atribuídos valores
Baskara
OBS!
● Os valores x1, x2, a, b, c são ditas variáveis as quais são atribuídos valores
● A seta que aparece na expressão
é chamado de operador de atribuição, ou seja, o valor calculado na direita da expressão é atribuído à variável x1.
Temos ainda outros operadores como +, -, *, /, √ e potenciação
x1← (−b+√b2−4∗a∗c ) /2∗a
Baskara
● + operador de soma
● - operador de subtração
● * operador de multiplicação
● / operador de divisão
● √ operador raiz quadrada
Há uma identificação com símbolos que usamos correntemente
Veremos mais operadores
Baskara
Porque este fluxograma está errado?
Há vários erros mas começaremos por dois:
1 – Caso seja zero teremos uma indeterminação
2 – Caso for negativo não teremos resposta compatível com o especificado pelo problema
a
√b2−4 a c
Baskara
Porque este fluxograma está errado?
Há vários erros mas começaremos por dois:
1 – Caso seja zero teremos uma indeterminação
2 – Caso for negativo não teremos resposta compatível com o especificado pelo problema
● Resolveremos um problema por vez
a
√b2−4 a c
Baskara
Antes apresentemos a estrutura de decisão
Baskara
Decisão
s n
● A decisão é avaliada se verdadeira
Caso for verdadeira (S) o processo1 é executado
Caso não for verdadeira (N) o processo2 é executado
Processo2decisãoProcesso1
Baskara
Com esta apresentação poderemos dar continuidade à criação do fluxograma para a fórmula de Baskara
Baskara
Fluxograma 2 de Baskara
n
s
Início
Fim
a ,b , c
duas raizes : x 1, x 2
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
1
1
Se a ≠ 0x←−c /b
a=0.Umaraiz : x
2
2
Baskara
Repare que apresentamos outro tipo de operador: um operador condicional
≠ Operador diferente de
Podemos ter o análogo
= Operador igual a
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 seja zero teremos uma indeterminaçãob
Baskara
Fluxograma 3 de Baskara
n
s n
s
Início
Fim
a ,b , c
duas raizes : x 1, x 2
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
1
1
Se a ≠ 0x←−c /b
a=0.Umaraiz : x
2
2
Se b ≠ 0
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
n
s n n
s
s
Início
Fim
a ,b , c
duas raizes : x 1, x 2
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
1
1
Se a ≠ 0x←−c /b
a=0.Umaraiz : x
2
2
Se b ≠ 0
a=0, b=0. Não há raizes
Se c = 0
a, b, c nulos3
3
Baskara
Vamos incluir a análise de
√b2−4 a c
Baskara
Vamos incluir a análise de
Mas primeiro escrevamos um fragmento do fluxograma relativo a esta análise
√b2−4 a c
Baskara
Fragmento do fluxograma 4 de Baskara
n n
sFim
duas raizes : x 1, x 2
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
1
1
Se b2-4*a*c>=0
Não há raizesreais
Baskara
Fluxograma 4 de Baskara
n n
s n
s
s
n n
s
Início
Fim
a ,b , c
duas raizes : x 1, x 2
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
1
1
Se a ≠ 0x←−c /b
a=0.Umaraiz : x
2 2
Se b ≠ 0
a=0, b=0. Não há raizes
Se b2-4*a*c>=0
Não há raizesreais
Se c = 0
a, b, c nulos
Baskara
Repare que temos mais um operador condicional
● >= Operador maior ou igual que
Temos outros análogos a este
● > Operador maior que
● < Operador menor que
● <= Operador menor ou igual que
Baskara
Vamos apresentar os pseudocódigos equivalentes a alguns estes fluxogramas
Baskara
Programa Baskara1
Reais a, b, c, x1, x2
Leia a, b, c
Imprima x1, x2
Fim
Início
Fim
a ,b , c
x 1, x 2
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
Baskara
Repare que fizemos algo de diferente no pseudocódigo
Definimos que as variáveis usadas são de um tipo especial:
Real
Cada linguagem de programação tem seus tipos de variáveis e um tipo comum de se encontrar é um tipo que é uma forma limitada de representar os números reais no computador
Baskara
Programa Baskara1 Início do programa
Reais a, b, c, x1, x2 Declaração de variáveis
Leia a, b, c Leitura de dados
Cálculo e atribuição de valor
Cálculo e atribuição de valor
Imprima x1, x2 Impressão dos resultados
Fim Fim do programa
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
Baskara
Programa Baskara1b Início do programa
Reais a, b, c, x1, x2 Declaração de variáveis
a←3 Atribuição de valores
b←2
c←2
Cálculo e atribuição de valor
Cálculo e atribuição de valor
Imprima x1, x2 Impressão dos resultados
Fim Fim do programa
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
Baskara
Fluxograma 3b de Baskara
n
s n n
s
s
Início
Fim
a ,b , c
duas raizes : x 1, x 2
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
1
1
Se a ≠ 0x←−c /b
a=0.Umaraiz : x
2
2
Se b ≠ 0
a=0, b=0. Não há raizes
Se c = 0
a, b, c nulos3
3
Baskara
Programa Baskara3b
Reais a, b, c, x1, x2
Leia a, b, c
se a ≠ 0
Imprima x1, x2
senão
se b ≠ 0
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 Baskara3b
x 1← (−b+√b2−4∗a∗c ) /2∗a
x 2← (−b−√b2−4∗a∗c ) /2∗a
x←−c /b
Baskara
Observe o recurso gráfico que usamos para deixar claro o limite de ação de cada decisão.
. . .
se a ≠ 0
Imprima x1, x2
senão . . .
Chamamos este recurso de indentação.
x 2← (−b−√b2−4∗a∗c ) /2∗a
x 1← (−b+√b2−4∗a∗c ) /2∗a
Baskara
Fluxograma 4 de Baskara
n n
s n
s
s
n n
s
Início
Fim
a ,b , c
duas raizes : x 1, x 2
x 1←(−b+√b2−4∗a∗c )/2∗a
x 2← (−b−√b2−4∗a∗c )/2∗a
1
1
Se a ≠ 0x←−c /b
a=0.Umaraiz : x
2 2
Se b ≠ 0
a=0, b=0. Não há raizes
Se b2-4*a*c>=0
Não há raizesreais
Se c = 0
a, b, c nulos
BaskaraPrograma Baskara4
Reais a, b, c, x1, x2
Leia a, b, c
se a ≠ 0
se
Imprima x1, x2
senão
imprima ”não há raízes reais“
fim se
senão
se b ≠ 0
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
x1← (−b+√b2−4∗a∗c )/2∗a
x2← (−b−√b2−4∗a∗c )/2∗a
x←−c /b
√b2−4∗a∗c≥0
Baskara
A indetentação facilita o entendimento do pseudocódigo pois sem ela teríamos menor legibilidade
BaskaraPrograma Baskara4 sem identação
Reais a, b, c, x1, x2
Leia a, b, c
se a ≠ 0
se
Imprima x1, x2
senão
imprima ”não há raízes reais“
fim se
senão
se b ≠ 0
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
x 1← (−b+√b2−4∗a∗c )/2∗a
x2← (−b−√b2−4∗a∗c )/2∗a
x←−c /b
√b2−4∗a∗c≥0
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.
Observação
Usaremos de agora em diante algoritmos mais simples para compreendermos o funcionamento de cada funcionalidade que temos no fluxograma e em pseudocódigo
Fluxograma
Mas antes acrescentemos mais uma estrutura importante
Repetições
Repetição condicionalRepetição condicional RRepetição contável
Valor inicialValor final
Incremento
Processo
Processo
Decisão
Processo
ProcessoProcesso
Um exemplo com repetição
Obtenha a soma dos números inteiros de 1 a 10. Imprima o resultado.
Um exemplo com repetição
i ← 1até 10
s ← s + i
início
s←0
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
Programa soma
Inteiro s, i
s ←0
para i ← 1 até 10 passo 1
s ←s + i
fim parafim para
imprima simprima s
fimfim
i← 1até 10
s ← s + i
início
s←0
s
fim
Um outro exemplo com repetição
É comum em muitas linguagens uma versão simplificada da estrutura de repetição apresentada
Um exemplo com repetição
Programa soma
Inteiro s, i
s ←0
para i ← 1 até 10
s ←s + i
fim parafim para
imprima simprima s
fimfim
i ← 1até 10
s ← s + i
início
s←0
s
fim
Um outro exemplo com repetição
Aqui apresentamos mais um tipo de variável comum de se encontrar em linguagens de computação:
Inteiro
Assim como Real apresentado antes é uma representação limitada dos números reais, Inteiro é uma representação limitada dos números inteiros
Um outro exemplo com repetição
Obtenha o fatorial de um número inteiro não negativo n. Leia n e imprima o fatorial.
Um outro exemplo com repetição
programa fatorial
inteiro fat, i, n
leia n
fat ←1
para i ← 1 até n
fat ←fat * i
fim parafim para
imprima fatimprima fat
fimfim
i ← 1até n
fat ← fat * i
início
fat←1
fat
fim
n
Um outro exemplo com repetição
Observe que este exemplo tem um erro claro. O usuário pode entrar com um número negativo ou nulo.
É necessária uma crítica dos dados de entrada, como fizemos com o algoritmo de Baskara, para que não haja inconsistências no que é gerado.
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
Leia n e imprima o resultado.
e x=1+
x1!
+x2
2!+
x3
3 !+⋯+
xn
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 ← 1
para i ← 1 até n fat ←1
para j ← 1 até i fat ←fat * j fim para
exp ← exp + 1/fat fim para
imprima exp
fim
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. Imprima o resultado.
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 a soma seja maior que 30. Imprima o resultado.
Um exemplo com repetição condicional
Programa soma
inteiros a, b, s, i
leia a, b
s ←a
i ←a
enquanto ((i < b) E (s < 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
Observe que novamente seria necessária uma crítica dos valores de entrada para não gerarmos inconsistências.
Um exemplo com repetição condicional
Mais um operador de tipo especial: Um operador lógico
● E E lógico
Operador lógico
Mais um operador de tipo especial: Um operador lógico
● E E lógico
que tem o seguinte comportamento dado dois operandos:
Verdadeiro E Verdadeiro resulta em Verdadeiro
Verdadeiro E Falso resulta em Falso
Falso E Verdadeiro resulta em Falso
Falso E Falso resulta em Falso
Operador lógico
Um operador análogo é o OU lógico
● OU Ou lógico
que tem o seguinte comportamento dado dois operandos:
Verdadeiro OU Verdadeiro resulta em Verdadeiro
Verdadeiro OU Falso resulta em Verdadeiro
Falso OU Verdadeiro resulta em Verdadeiro
Falso OU Falso resulta em Falso
Pseudocódigo
Há outros operadores, sejam eles aritméticos, relacionais ou lógicos
Pseudocódigo
Foram apresentados informalmente uma série de tipos de variáveis e operadores.
Agora partiremos para uma apresentação mais rigorosa destes dois elementos.