1. Programação e Sistemas de Informação
Módulo 2
Escola Secundária Filipa de Vilhena
2012/2013
Mecanismos de Controlo de Execução
2. Conteúdos
Continuação do desenvolvimento de algoritmos
e utilização de linguagem informal na resolução de
problemas
Mecanismos de controlo do programa
a) Estruturas de decisão
b) Estruturas de selecção múltipla
c) Estruturas de repetição
Noções básicas de C++
3. Até Agora …
… os algoritmos elaborados nas aulas têm tido como base o
tratamento de estruturas sequenciais, ou seja, sequências
de instruções…
… compostas por três elementos:
• Entrada de Dados (Input)
• Processamento / Tratamento de Dados
• Saída de Dados (Output)
Instrução 1
Instrução n
Instrução 2
4. Estruturas de dados (ou condicionais)
Na vida real somos forçados a tomar decisões a todo o
instante, baseadas em alguma situação que se nos
depara.
Em algoritmia, essa situação tem o nome de condição…
… a(s) acção(ões) a desencadear depende(m) …
… do resultado lógico dessa condição …
5. Estruturas de dados (ou condicionais)
Imagine a seguinte a seguinte situação:
Ao sair de casa….
SE estiver a chover…
ENTÃO deve levar guarda-chuva.
6. Recordando Operadores
Como foi dito anteriormente, uma condição produz um
resultado lógico.
Para se produzirem resultados do tipo lógico, utilizam-
se operadores:
– Relacionais
– Lógicos
E produzem resultados que
podem assumir um de dois valores, que são …
… Verdadeiro ou … Falso.
7. Recordando Operadores Relacionais/Booleanos
Operador Nome Exemplo Resultado
=; == Igual a… 7=5; 7==5 Falso
<>; != Diferente de… 10/2<>3; 10/2!=3 Verdadeiro
> Maior que 3*2>8/2 Verdadeiro
< Menor que… 7<7 Falso
<= Menor ou igual que… 7<=14/2 Verdadeiro
>= Maior ou igual que… a>=5 Verdadeiro, SE a for
um nº >=5
8. Recordando Operadores Lógicos
Operador Nome Exemplo Resultado
E; AND;&& Conjunção ((5=5) E (3>6)) Falso
OU;OR;|| Disjunção ((5=5) OU (3>6)) Verdadeiro
NÃO, NOT; ! Negação
(inverte valor lógico)
NÃO (5=5) Falso
9. Recordando Operadores Lógicos
A B A OU B ou A || B
V V V
V F V
F V V
F F F
A B A E B ou A && B
V V V
V F F
F V F
F F F
OU; OR; ||
E; AND; &&
A NÃO A ou ! A
V F
F V
NÃO; NOT; !
10. Atividade – Recordar é Viver
1. Qual o valor lógico da seguinte expressão, com: A = 9, B = “A” e C = 10
NOT((A<=70) AND (C>=2) OR (B<>”C”))
2. Qual o valor lógico das seguintes expressões:
a) (A+B) < C
b) ((A+B) < C) OR (A>C)
c) NOT((A<B) AND (B>C))
em que: A=10, B=5 e C=15
12. Estruturas de
Decisão ou Seleção
Com base numa
CONDIÇÃO
Com base numa
SELEÇÃO
SE <condição> ENTÃO
<bloco de instruções V>
SENÃO <bloco de
instruções F>
14. SE… ENTÃO…
O SENÃO é alternativo, ou seja, pode ser utilizado, ou não…
Sendo assim, temos a seguinte sintaxe:
se <condição> então
<instruções a serem realizadas se condição for verdadeira>
fimse
SE (V)
ENTÃO
…………
fimse
15. Atividade 1
Imagine um algoritmo em:
• que dada a nota de uma disciplina;
• o programa diga se o aluno obteve aprovação à
mesma.
Não se esqueça de elaborar o:
• Fluxograma ;
• Pseudocódigo.
16. Atividade 1 – Resolução
O que se pretende saber???
Se o aluno com uma determinada nota se encontra
aprovado à disciplina.
Mas quando é que um aluno
está aprovado???
Se obtiver classificação (nota) superior a 9.5 …
(comparação / condição necessária e obrigatória)
17. Atividade 1 – ResoluçãoInício
Nota
Nota
>= 9.5
“Aprovado”
Fim
F
V
18. Atividade 1 – Resolução
• Para fazer o pseudocódigo, só precisa de saber/recordar a
sintaxe do SE…
Indentar sempre
o código
Ou seja, fazer tabulações dentro do se, para melhor visibilidade / leitura do código …
19. Atividade 2
1. Elabore algoritmos (pseudocódigo e fluxograma) que resolva as
seguintes situações:
a) Determine se um número é positivo
a) Determine se um número é par.
a) Determine se um número é múltiplo de 5.
a) Dados dois números, calcule a sua soma e informe se a soma é
maior que 10.
20. Se … Então … Senão …
Outra forma de utilizar o se, é com a seguinte sintaxe:
se <condição> então
<instruções a serem realizadas se condição for verdadeira>
senão
<instruções a serem realizadas se condição for falsa>
fimse
Como foi dito, é opcional e está dependente do objectivo do programa…
21. Com o seguinte fluxograma:
Se … Então … Senão …
Se for verdadeira: Se for falsa:
Condição a verificar que produz um resultado lógico (verdadeiro ou falso)
22. Aproveite o algoritmo da atividade 1:
dada a nota de uma disciplina;
o programa diga se o aluno obteve aprovação;
ou se reprovou à mesma.
Não se esqueça de elaborar o:
Fluxograma ;
Pseudocódigo.
Atividade 3
23. Esta é uma variante da atividade 1 …
Neste caso, existem dois resultados possíveis que se podem apresentar
ao utilizador depois de avaliada a condição. Quais são eles???
Ora bem, um aluno:
Ou está aprovado, se tiver mais de 9.5;
Ou está reprovado se obtiver menos de 9.5.
Atividade 3 – Resolução
24. Para fazer o pseudocódigo, só precisa de saber /recordar a sintaxe do se…
Atividade 3 – Resolução
Indentação
25. Elabore algoritmos (fluxograma e pseudocódigo) para que:
a) dados 2 números determine e imprima o maior valor e a sua soma;
b) dado um número verifique e imprima se é par ou ímpar;
c) dado um número verifique e imprima se é múltiplo de 7.
Atividade 4
26. Elabore algoritmos (fluxograma e pseudocódigo) para que:
a) Construa um algoritmo que para valores de x lidos numa lista
de dados, imprima o valor de y, calculado por:
• y=0.5x+0.95 se x<=2.1
• y=0.7x+0.53 se x>2.1
b) Um indivíduo comprou um computador por uma
determinada quantia e vendeu-a por outra. Construa um
algoritmo que, partindo da comparação do preço de compra
com o preço de venda, informe se a transacção deu lucro e,
em caso afirmativo, qual o respectivo montante.
Atividade 5
27. Encadeando Se’s
Até agora vimos o caso de haver duas hipóteses…
… se a condição for verdadeira, então … senão …
E se houver várias hipóteses???
se <condição> então
<instruções a serem realizadas se condição for verdadeira>
senão
se <condição> então
<instruções a serem realizadas se condição for falsa>
senão …
…
fimse
fimse
Não se esqueça de fechar os vários
se’s e de indentar o código (ajuda
na leitura do código) …
29. … eis o fluxograma,
agora é só traduzir para o seu pseudocódigo
Atividade 1 e 3 – Complicando …
nota < 0 ou nota > 20
Início
FIM
nota >= 9,5
V
F
V
F
nota
“Aprovado” “Reprovado”
ERRO!!! Valor não
válido …
30. Para já está muito fácil, não é verdade??? Vamos lá complicar isto um
bocadinho…
Imaginemos agora uma turma do ensino básico em que as notas estão
numa escala de [0 .. 100]%, a que correspondem aos seguintes níveis:
Insuficiente – de 0 até 49
Suficiente – de 50 até 64
Bom – de 65 até 79
Muito Bom – de 80 até 94
Excelente – de 95 até 100
Atividade 6
Elabore um algoritmo, que
dada a nota de um estudante
do ensino básico , retorne a
sua nota qualitativa.
31. Este último já foi um desafio, não é verdade??? Então vamos a outro …
Elabore uma calculadora, utilizando apenas se’s, que deve ter as
seguintes operações:
1. Adição
2. Subtracção
3. Multiplicação
4. Divisão
5. Exponenciação
6. Resto da divisão
7. Raiz quadrada
Atividade 7
Sugestão: elabore um menu
em que atribui um número à
operação que deseja realizar …
32. Lembra-se do eercício que lhe foi pedido para calcular o máximo de dois
valores, certo??? Ceeeerto… Imagine agora que quer ordenar a pontuação
de três jogadores, ou seja, saber o máximo de três valores, o segundo maior
e o menor? (elaborar fluxograma e pseudocódigo). Veja o seguinte exemplo
de input / output:
Input:
Pontuação Primeiro Jogador: 12.3
Pontuação Segundo Jogador: 9.4
Pontuação Terceiro Jogador: 14.1
Atividade 8
Output:
Maior pontuação, jogador 3: 14.1
Valor Intermédio, jogador 1: 12.3
Menor pontuação, jogador 2: 9.4
33. Recordando …
Mas existe ainda mais uma…
Estrutura de decisão simples:
se (condição é verdadeira) entao
acontece isto
(conjunto de instruções)
fimse
Estrutura de decisão binária:
se (condição é verdadeira) entao
acontece isto
(conjunto de instruções)
senao
é falsa e acontece isto
(conjunto de instruções)
fimse
Estrutura de decisão encadeada:
se (condição é verdadeira) entao
acontece isto
(conjunto de instruções)
senao
se (condição é verdadeira) entao
acontece isto
(conjunto de instruções)
senao
se (condição é verdadeira) entao
acontece isto
(conjunto de instruções)
senao
…
fimse
fimse
fimse
34. Selecção de Caso (Escolha … Caso …)
É como quem diz … múltipla escolha …
… existem um conjunto de casos possíveis que representam os valores
possíveis de uma variável e que desencadeiam um conjunto de acções /
instruções ...
Utiliza-se quando se sabe exactamente a gama de resultados / valores;
Permite examinar os vários valores de uma variável;
Evita a utilização de vários se’s encadeados;
Torna o código mais simples e fácil de “seguir”…
35. Selecção de Caso (Escolha … Caso …)
Para utilizar esta estrutura de decisão, deve utilizar a seguinte sintaxe:
escolha <expressão>
caso <valor, constante>
<no caso de a expressão ter este valor, fazer estas instruções>
caso <valor, constante>
<no caso de a expressão ter este valor, fazer estas instruções>
… (tantos casos quantos os que pretende analisar / verificar)
outrocaso (os casos restantes e que não se verificaram anteriormente)
<instruções a executar no caso de não existir nenhum caso válido >
fimescolha
36. Selecção de Caso (Escolha … Caso …)
Uma estrutura deste género tem um fluxograma como o seguinte:
Valor_1
F
<bloco
instruções 1>
<bloco
Instruções F>
<bloco
Instruções 2>
<variável>
<bloco
Instruções n>
Valor_2 Valor_n
…
37. Exemplo: Escolha … Caso …)
Um exemplo: imagine que quer controlar um personagem num jogo com
as seguintes teclas de direcção: a – esq; d – dir; w – cima; s – baixo.
d
direita
w cima
a
esquerda
s baixo
38. Imagine que chegou ao cúmulo da preguiça … agora nem quer pensar naquilo que
vai fazer a seguir. Elabore um algoritmo que lhe sugira, ao executá-lo, entre as
seguintes actividades, a que deve fazer:
1. Estudar PSI
2. Ver televisão
3. Estudar PSI
4. Sair com amigos
5. Estudar PSI
6. Jogar computador / consola
7. Estudar PSI
8. Nada
Nada de viciar o programa, deve ser totalmente aleatório …
Atividade 9
Nota: para obter um valor aleatório
utilize a função do visualg:
randi(limite)
Gera um valor entre 0 e limite – 1:
[0 .. limite - 1]
Exemplo: randi(5), gera um número …
… entre 0 e 4
39. Elabore um algoritmo para utilizar numa página web, em que o utilizador
introduz a sua data de aniversário da seguinte forma:
Dia: 5
Mês: 6
Ano: 1991
E a data é apresentada como:
5 de Junho de 1991
Atividade 10
40. Mais um revivalismo… na actividade 14 elaborou uma calculadora baseada
num menu com um conjunto de se’s encadeados. Pretende-se agora que
crie uma calculadora simples em que lê os números e o sinal da operação
para obter o resultado final. Exemplos:
Expanda a sua calculadora …
Atividade 11
Número 1 4 5 2 8
Número 2 8 2 3 2
Operação + - * /
Resultado 12 3 6 4
41. Vamos agora pegar numa outra actividade em que aplicamos o se e
transformá-la num caso??? “Bora…”
Níveis das notas dos alunos de uma turma do ensino básico:
Insuficiente – de 0 até 49
Suficiente – de 50 até 64
Bom – de 65 até 79
Muito Bom – de 80 até 94
Excelente – de 95 até 100
Atividade 12
Elabore um algoritmo, utilizando
a selecção de casos, em que
dada a nota de um estudante do
ensino básico , retorne a sua
nota qualitativa. Use o até…
Como???
42. Escreva um algoritmo que seja capaz de ler um número
inteiro entre 1 e 10 e apresente o respectivo valor em
extenso.
Ex: 6 ……… seis
Escreva um algoritmo que faça o mesmo que o anterior, mas
que escreva o extenso de números entre 1 e 100.
Escreva um algoritmo que faça o mesmo que o anterior, mas
que escreva o extenso de números entre 1 e 1000.
Mais Atividades…
43. Estruturas de Repetição
Longe vão os tempos em que os professores, para castigar um aluno,
pediam-lhes para escrever uma frase 50, 100 ou mais vezes, dependendo da
gravidade…
Se soubesse o que sei hoje, contornaria esse problema com a aplicação de
uma estrutura de repetição que faria isso automaticamente 100, 200, 300,
1.000.000 de vezes (enfim, as que quisesse …)
44. Estruturas de Repetição
O que são então estruturas repetitivas???
Permitem executar um conjunto de instruções …
… várias (ou um determinado número de) vezes, de forma repetitiva …
Em que o programador só necessita de as escrever uma única vez.
Esse conjunto de instruções é repetido enquanto uma condição:
for verdadeira ou…
… torna-se verdadeira.
45. Estruturas de Repetição
A execução de estruturas de repetição está então dependentes do valor
lógico de uma condição, que é testada em cada iteração para decidir se a
execução do ciclo continua ou termina.
Estas estruturas incluem sempre:
Instrução de controlo do ciclo
Determina quando um ciclo pára ou deixa de ser executado. Deixa
explicito o número de vezes que o ciclo será executado.
Corpo do ciclo
Instruções que serão repetidas sempre que o ciclo for repetido.
46. Com base num contador
Com base numa condição
Estruturas de Repetição
Vamos estudar três tipos distintos de estruturas de repetição:
Estruturas de
repetição ou
ciclos
para <variável de controlo> de
<valor inicial> ate <valor final>
[passo <incremento>] faca
enquanto <expressão lógica ou
relacional> faca
repita
<lista de comandos>
ate <expressão lógica/relacional>
47. Estruturas de Repetição – Para …
Comecemos pela estrutura: Para …
É controlada por um contador automático;
Esse contador (variável), que conta o número de vezes que o ciclo é
executado:
Assume um valor inicial;
Incrementado (ou decrementado) automaticamente de cada
vez que o ciclo é executado, até atingir o limite definido;
faz com que o ciclo seja executado pela última vez quando o
contador toma o valor final.
É particularmente útil em situações que se sabe previamente o número de
repetições a serem feitas (ou intervalo de repetição).
48. Estruturas de Repetição – Para …
A sintaxe do para é a seguinte:
para <variável de controlo> de <valor inicial> ate <valor final> [passo
<incremento>] faca
<conjunto de instruções a executar>
fimpara
Nota: o passo é opcional, só deve ser modificado no caso de ser diferente
de um. Pode ainda ser positivo ou negativo, dependendo do valor_inicial
e valor_fina … Por defeito assume o valor 1 …
49. Estruturas de Repetição – Para …
Qual o fluxograma que se aplica a esta estrutura?
Nota: o contador é o mesmo que a variável de controlo do pesudocódigo anterior …
contador <= valor_final
V
F
<bloco instruções>
contador = contador + 1
contador = valor_inicial
50. Para … Exemplos
Observe os programas seguintes e analise-os…
Exemplo 1:
para x de 1 ate 1000 faca
escreval(“Vou portar-me bem em PSI e resolver tudo nas aulas…”)
fimpara
Exemplo 2:
para y de 200 ate 1 passo -2 faca
escreval(y)
fimpara
O que fazem???
Quais os valores implícitos???
Qual o valor de passo no exercício 1??? Porquê???
Faça os fluxogramas para cada um deles.
51. Lembra-se do que são números pares???
Usando a estrutura de repetição anterior:
a) faça dois algoritmos distintos que imprimam todos os números pares
entre 1 e 100.
b) Faça a soma de todos os números anteriores.
Atividade 13
52. a) Implemente um algoritmo que mostre no ecrã os primeiros 100
números naturais por ordem inversa.
b) Elabore um algoritmo que calcule a soma de 10 números lidos do
teclado (não utilizar o comando leia ,10 vezes).
c) Elabore um algoritmo que calcule a média dos módulos de PSI, sendo
que a disciplina tem 6 módulos.
Atividade 14
53. Lembra-se dos números primos??? Nada de parentescos…
Um número primo é aquele que é divisível por si próprio e pela unidade.
Elabore um algoritmo que verifique, para um determinado número
introduzido pelo utilizador, se ele é primo ou não…
Exemplo:
Input Output Input Output
11 Número primo… 24 Não é primo…
Atividade 15
54. Este é para quem não sabe a tabuada … e também não quer saber …
Elabore um algoritmo que, para um número introduzido pelo utilizador,
imprima no ecrã a tabuada de 1 a 10… Exemplo:
Input: 7
Output: 1 x 7 = 7
2 x 7 = 14
…
10 x 7 =70
Atividade 16
55. Um exercício clássico que envolve ciclos, tem a haver com o cálculo de um
factorial de um número. Mas o que é isso de factorial???
Basicamente é aplicar a seguinte fórmula:
n! = n * (n – 1) * (n – 2) * … * 1 (n é um número inteiro qualquer)
Implemente um algoritmo que lê um valor inteiro e calcula o seu factorial.
Veja o seguinte exemplo:
Input: 5
Output: 5! = 5 x 4 x 3 x 2 x 1 = 120
Atividade 17
56. Esta actividade é o que se poderia chamar o programa X …
Elabore um programa que desenhe a seguinte figura num quadrado
Dica: Coloque dois para encadeados. Um para percorrer linha a linha,
enquanto o outro, para cada linha, percorre as colunas dessa linha.
Atividade 18
57. Utilizando de certa forma a lógica do exercício anterior, elabore um
algoritmo que preencha um quadrado, cujo tamanho é introduzido pelo
utilizador, da seguinte forma:
Utilizar a dica do exercício anterior …
Atividade 19
Coluna ->
Linha
1 2 3 4 5
1 0 X 0 X 0
2 X 0 X 0 X
3 0 X 0 X 0
4 X 0 X 0 X
5 0 X 0 X 0
O resultado deve ser apenas o que
está dentro do quadrado desenhado
na figura ao lado. Este seria o aspecto
de um quadrado de tamanho 5.
58. Estruturas de Repetição – Enquanto …
Depende de uma condição (enquanto ela for verdadeira, executa …);
Condição é avaliada logo no início, ou seja, antes de executar as instruções …
… logo, se a condição for FALSA à partida, o ciclo não é executado nenhuma
vez;
Executa (repete …) até a condição ser falsa;
Utilização de variável de controlo para determinar condição de paragem, em
que deve fazer exactamente o seguinte:
a) inicializar variável de controlo (normalmente, fora da estrutura);
b) teste de valor da variável de controlo (normalmente, é a condição);
c) incrementar (aumentar) ou decrementar (diminuir) valor da variável de controlo
(normalmente, dentro da estrutura);
59. Estruturas de Repetição – Enquanto …
A sintaxe do enquanto é a seguinte:
enquanto <condição /expressão> faca
<conjunto de instruções a executar /repetir>
fimenquanto
Fluxograma que se aplica a esta estrutura
<condição>
V
F
<bloco instruções>
60. Enquanto … Exemplo
Preparados para um exemplo muito simples???
leia(numero)
i <-1
enquanto ( i <= 10) faca
resultado <- numero * i
escreval(numero, " * “, i, " = “, resultado)
i<- i +1
fimenquanto
O que acha que faz o algoritmo anterior? (já fizeram um parecido)
Execute-o mentalmente … eeeeee … agora no computador …
61. Estruturas de Repetição – Repita …
Tal como a anterior, depende de uma condição (enquanto ela for falsa,
executa …);
Condição apenas é avaliada no fim … (diferença para o enquanto …)
… implica que executa o ciclo pelo menos umas vez, garantidamente;
Executa (repete …) até a condição ser verdadeira;
Não é possível determinar, à partida, o número de vezes que é executado;
A variável de controlo (que determina se a condição é verdadeira ou falsa)
deve ser actualizada dentro do ciclo, de forma a garantir que não tem um
ciclo infinito (efeito de looping, não confundir com as montanhas russas …).
62. Estruturas de Repetição – Repita …
A sintaxe do repita é a seguinte:
repita
<conjunto de instruções a executar /repetir>
ate <condição / expressão>
Fluxograma que se aplica a esta estrutura
<condição>
V
F
<bloco instruções>
63. Repita … Exemplo
Comecemos por um exemplo muito simples:
repita
escreval (“Escreva número: ”)
leia(num)
ate (num = -1)
escreval (“Ufaaaaaa… Já estou fora do ciclo …”)
O que acha que faz o algoritmo anterior?
Execute-o mentalmente… agora no computador e esteja atento às variáveis …
64. Repita … Exemplo
Exemplo da utilização de um repita para o controlo da entrada de um valor:
repita
escreval(“Introduza nota entre 0 e 20”)
leia(nota)
ate (nota => 0 e nota <= 20)
Isto não lhe faz lembrar nada? A que exercício poderia aplicar este exemplo?
Ao exercício para ler as notas dos módulos de PSI e fazer a sua média …
Força nisso … :o)
65. Observe atentamente o seguinte algoritmo:
Acha que funciona ou tem algum “bug”? Se acha que tem um bug, qual e
como o poderia solucionar.
Atividade 20
var
soma: inteiro
inicio
soma 1
repita
soma soma + 2
ate (soma = 10)
escreva (soma)
fimalgoritmo
A soma nunca vai ser 10… para funcionar
teria de fazer:
…
ate (soma > 10)
…
Desta forma não afecta o resultado final e
já não terá um ciclo infinito .
66. Para compreender melhor as diferenças entre as três estruturas de
repetição abordadas nas aulas, elabore um algoritmo que escreva a soma
de todos os valores entre 50 e 250…
Deve fazer um algoritmo para cada uma das estruturas de repetição, ou
seja:
Para
Enquanto
Repita
Complete a actividade elaborando também os respectivos fluxogramas.
Atividade 21
67. Estruturas de Repetição
Um exemplo de quando a utilização de uma das estruturas de repetição
(baseada numa condição) é mais vantajosa que a outra … Porquê???
Algoritmo para calcular a raiz quadrada
inteirointeiro
68. Estruturas de Repetição – Qual utilizar???
Uma das questões que deve estar a inquietar o seu espírito neste momento é:
Qual a estrutura de repetição que devo aplicar e …
… em que circunstâncias???
É uma boa questão, mas não lhe deve tirar o sono…
Isso poderá depender de um conjunto de questões / aspectos, tais como:
Sabe quantas vezes quer executar o ciclo???
Depende de uma condição (de que tipo)???
Deve executar pelo menos uma vez (obrigatoriamente)???
…
Depende também do próprio problema e da eficiência da sua resolução…
69. Estruturas de Repetição – Qual utilizar???
Fica aqui um pequeno resumo para (tentar) ajudar:
Nota: atenção aos chamados “ciclos infinitos (loops)” …
Para … Enquanto … Repita …
para <variável de controlo> de
<valor inicial> ate <valor final>
[passo <incremento>] faca
<conjunto de instruções a
executar>
fimpara
enquanto <condição > faca
<conjunto de
instruções a executar>
fimenquanto
repita
<conjunto de instruções a
executar /repetir>
ate <condição / expressão>
Tem de ter um intervalo definido.
Executa tantas vezes quantos os
valores que se encontram no
intervalo que definiu.
Executa mediante uma
condição ser verdadeira.
Pode não executar nenhuma
vez, no caso de ser
imediatamente falsa.
Variável de controlo deve ser
inicializada antes do ciclo.
Executa mediante uma
condição, enquanto for falsa.
Executa pelo menos uma vez
(obrigatoriamente), tantas
vezes até a condição ser
verdadeira.
70. Elabore um algoritmo que leia um conjunto indeterminado de números ,
reais positivos, introduzidos pelo utilizador (pára ao ser introduzido o valor
-1) e devolva o maior e menor valor escritos pelo utilizador. Exemplo:
Input
Introduza valor: 3.5
Introduza valor: 9.1
Introduza valor: 4.8
Introduza valor: 3.2
Introduza valor: -1
Faça duas versões: 1ª com enquanto; 2ª com repita …
Atividade 22
Output
O maior valor é: 9.1
O menor valor é: 3.2
71. Uma loja de venda de jogos pretende efectuar uma estatística sobre qual a
plataforma (NintendoDS, Wii, PS3, PSP, Xbox, PC) para a qual vende mais
jogos num só dia. Elabore um algoritmo que calcule e apresente o número
de jogos vendidos para cada uma das plataformas, bem como a sua
percentagem. Exemplo (ver algumas observações no slide seguinte):
Input
Atividade 23
Output
72. Sempre que pedir para o utilizador introduzir um
número, deve apresentar também o menu (ciclo);
Se o utilizador inserir um número menor que 1 ou
maior que 6, e diferente de zero, o programa deve
pedir um outro valor (repetidamente), até ser válido;
De cada vez que um valor é introduzido pelo utilizador,
deve proceder à limpeza do ecrã (instrução limpatela) e
o menu deve voltar a aparecer para pedir um outro valor;
Algoritmo termina quando o utilizador insere o 0 (zero).
Nessa altura são apresentados os resultados num tabela
Como a que se encontra a que se encontra ao lado.
Atividade 24
73. Traçagem
Tal como foi dito (e (re…)redito …) nas primeiras aulas de algoritmia:
Um algoritmo é um conjunto / sequência de instruções …
… que são executadas segundo uma ordem especifica …
… de forma objectiva e sem ambiguidades.
Sendo assim, seguir essas instruções (execução do algoritmo) passo a passo
trata-se de uma tarefa relativamente simples e até proveitosa para o
programador. Porquê???
Permite verificar se um algoritmo faz aquilo que realmente se pretende
dele, ou seja, se produz os resultados que se esperavam…
Permite detectar aquilo a que podemos chamar de erros de lógica,
(o programa não devolve os valores (resultados) esperados)
74. Traçagem
Seguir a execução de um algoritmo passo a passo, manualmente, é aquilo a
que se chama de:
TRAÇAGEM
normalmente é efectuada no papel (execução manual);
simula a execução das instruções (passo a passo) de um algoritmo;
consiste na construção de uma tabela, que se baseia no comportamento de:
Variáveis;
Condições;
Instruções de saída;
…
permite, desta forma, detectar onde (em que passo) ocorre um erro lógico
(em que o programa gera um valor que não era suposto e que influencia o
resultado final) de forma a poder corrigi-lo.
75. Traçagem – Como???
Tal como foi dito no slide anterior, para se fazer uma traçagem tem de se fazer
uma …
… tabela (com linhas e colunas)
Mas como??? Quais os valores que ficam nas linhas??? E nas colunas???
Para facilitar, qual o programa que se pode utilizar para fazer as traçagens???
Cabeçalho com todas as variáveis /
condições presentes no algoritmo
Saída de valores
(output)
Instruções do
algoritmo
executado
passo a passo
… … … …
…
Valores das variáveis / condições …
…
… … … …
76. Traçagem – Exemplo1ª Coluna:
Execução do algoritmo passo a
passo (instruções) Última Coluna:
Outputs , saída de dados
Colunas Intermédias:
Valores parciais das variáveis1ª Linha:
Cabeçalho com
as variáveis e a
saída de valores
RestantesLinhas:
Execuçãodoalgoritmo
instruçãoainstrução
Valores que
decorrem da
execução do
algoritmo
77. Efectue as traçagens para os algoritmos que elaborou para as seguintes atividades:
14b), com os seguintes valores: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;
14c), com os seguintes valores: 12.5; 11.1; 14.3; 13.9; 16.8; 15.5;
15, primeiro para o valor 7, depois para o valor 6;
16, para a tabuada dos 6;
17, o factorial de 5;
22, para os valores: 5.3; 12; 4.9; 8.8;1.2;3.1; 13; 9.4; -1
Faça primeiro numa folha de papel e depois passe para um ficheiro Excel, em que cada
alínea deve ocupar uma folha distinta (deve mudar o nome de cada folha para o
número da actividade da traçagem, por exempo: Folha1 Actividade 14b)
Atividade 25
78. Atividade 26
Vocês estavam ansiosos por fazer um joguinho, não é verdade???
CS??? Pois, nããããããã… Uma coisa bem mais divertida… Acerta no Número...
Objectivo: Acertar num valor sorteado pelo computador.
Algumas Notas Importantes:
Definir um valor máximo (Max);
Sortear um valor dentro do intervalo [0 .. Max] e limpar o ecrã;
Enquanto utilizador não acertar no número sorteado:
Actualizar intervalo em que está o número [máximo e mínimo];
Ler valor do utilizador para nova tentativa (ou actualização do intervalo);
Limpar o ecrã entre tentativas;
Se acertar o jogo termina e diz em quantos tentativas o utilizador acertou no número.
79. Atividade 26 – Exemplo de Output
Ao lado, tem a execução do algoritmo passo a
passo.
Foi definido um intervalo entre 0 e 200, uma vez
que o valor máximo que definiu foi 200.
Foi sorteado um valor dentro desse intervalo que,
como pode verificar no fim, foi o 16.
Repare bem nos seguintes aspectos:
Mensagens enviadas ao jogador;
Actualização dos intervalos em cada jogada;
….
80. Atividade 27
Vai mais um joguinho??? Desta vez está-me mesmo a apetecer …
… um jogo de dados… Parece que já os estou a ver a girar … a girar …
Mas, em linha de comandos??? Hmmm…
O jogo do 21 com dados
Objectivo do Jogo:
Lançar dois dados (7 vezes no máximo) de forma a tentar obter exactamente 21 pontos.
Funcionamento / regras do jogo:
São “lançados” dois dados até se atingirem os 21 pontos ou os 7 lançamentos;
Ao “lançar” os dados, se a soma de todos pontos até ao momento for
menor que 21 - deve continuar a lançar os dados, se ainda lhe sobrarem tentativas;
maior que 21, deve retirar aos 21 pontos o excesso e continuar a jogar.
Ganha o jogo se conseguir fazer exactamente 21 pontos em menos de 8 tentativas.
81. Antes de começar a jogar leia o nome do jogador;
Não se esqueça que jogo termina quando atingir os 21 pontos
ou ultrapassar 7 tentativas.
Faça o lançamento dos dados apenas quando clicar numa tecla (‘s’ –start ou ‘l’ - lança);
Deve ignorar outras teclas de lançamento e esperar por uma das anteriores;
O “lançamento” dos dados consiste no sorteio de um valor entre 1 .. 6;
Deve ir acumulando os pontos dos dados em cada uma das tentativas … e verificar se:
é igual a 21 – objectivo atingido, é vencedor e o jogo termina;
não chega aos 21 – se ainda tiver tentativas continua a jogar, senão… perde;
excede os 21 - imagine que tinha 19 pontos e ao lançar os dados saíram 6 pontos.
19+6 = 25 … como é maior que 21 deve subtrair o excesso (26–21 = 5) aos 21 pontos,
ou seja, ficaria com 21–5=16 pontos. Se ainda tiver tentativas continua a jogar, senão…
Atividade 27 – Aspetos Relevantes
82. Atividade 27 – Exemplo de Output
Utilize o limpatela para limpar o ecrã em
cada uma das iteracções anteriores.
Para que a informação não desapareça
logo que faz o limpatela utilize o:
timer(milisegundos a esperar)
Para voltar a executar em tempo normal:
timer off
83. Atividade 28Agora que lhe ganharam o gosto, vamos a outro jogo de dados.
E que tal um jogo em que possam jogar dois jogadores???
Funcionamento / regras do jogo:
Deve começar por ler o nome dos dois jogadores;
Deve também ser definido inicialmente, pelos dois jogadores, o número de lançamentos
que vão ser efectuados até terminar um jogo;
Em cada jogada, o jogador “lança” dois dados. Mais uma vez, o lançamento dos dados
consiste no sorteio de dois valores, um para cada um dos dados, entre 1 .. 6;
Em cada jogada são contabilizados / acumulados os pontos, para o respectivo jogador;
Jogo termina quando ambos os jogadores atingirem ao limite de lançamentos definidos
previamente e é anunciado o vencedor e o vencido, com os respectivos pontos.