Linguagem de Programação - cafw.ufsm.br · Linguagem de Programação Aula 5 –Elementos...
Transcript of Linguagem de Programação - cafw.ufsm.br · Linguagem de Programação Aula 5 –Elementos...
Linguagem de ProgramaçãoAula 5 – Elementos Fundamentais de Controle
Universidade Federal de Santa Maria
Colégio Agrícola de Frederico Westphalen
Curso Técnico em Informática
Prof. Bruno B. Boniati – www.cafw.ufsm.br/~bruno
Sequência, Seleção e Repetição
Estruturas de Controle
• Tratam da ordem em que instruções,
expressões e chamadas de função são
executadas ou avaliadas em programas de
computador.
• As principais são:
▫ Sequência;
▫ Seleção;
▫ Repetição.
goto ... uma estrutura primitivaprogram testgoto;
var
n : integer;
opc : char;
label 1, 2, 3, 4;
begin
4 :
writeln('Digite um número qualquer');
readln(n);
if ( n mod 2 = 0) then goto 1 else goto 2;
1:
writeln('O numero digitado é par');
goto 3;
2:
writeln('O numero digitado é impar');
goto 3;
3: writeln('Deseja testar novamente (S|N)?');
readln(opc);
if (opc = 'S') then
goto 4;
end.
A ordem das instruções é dada
por movimentos rotulados
(etiquetas – labels)
Programar dessa
forma é totalmente
desaconselhado!
Para compilar este código utilizando o compilador FreePascal utilize a opção –Sg. Ex: fpc arquivo.pas -Sg
Execução na ordem da declaração
Estruturas Sequenciais
• É a estrutura mais básica ... bloco de comandos
• Consiste em realizar um conjunto predeterminado
de comandos de forma sequencial, de cima para
baixo, na ordem em que foram declarados.
• Em outras palavras, o programa executará os
comandos na mesma sequencia em que eles estão
declarados no bloco de código.
Estruturas Sequenciais (cont.)
• Em linguagem Pascal para caracterizar uma
estrutura de sequência, o bloco de comandos é
delimitado pelas palavras reservadas
begin
end
• Cada comando do bloco pode ser uma instrução
primitiva ou uma estrutura de controle (sequencial,
de seleção ou de repetição);
Bloco de comandos (em Pascal)
Estrutura Sequencial (exemplo)
Decide pela execução ou não de um código
Estruturas de Seleção
• Desvia o fluxo de execução sequencial em função
de uma determinada condição;
• Os comandos de uma estrutura de seleção tem a
função de selecionar, através de alguns critérios,
qual a instrução mais adequada para ser executada
a partir de um dado ponto do programa;
• Executa um determinado grupo de comandos se a
condição for verdadeira e, em alguns casos, executa
outro grupo de comandos se a condição for falsa.
Estruturas de Seleção (cont.)
• Observe as afirmativas ...
▫ Distribuição gratuita de cestas básicas;
▫ Distribuição gratuita de cestas básicas para famílias
com quatro ou mais componentes;
• No primeiro caso todos recebem gratuitamente
cestas básicas (estrutura sequencial), no segundo
caso há de se decidir segundo critérios, quem irá e
quem não irá receber cestas básicas gratuitamente.
Estruturas de Seleção (cont.)
• Observe as afirmativas ...
▫ Se eu não tiver exercícios para fazer, vou passear;
senão vou estudar.
▫ Se minha média for maior ou igual a sete, passo de
ano; senão vou ter que fazer exame;
• Nestes dois casos, existem tarefas a serem
executadas em ambos os estados da condição
(se a condição for verdadeira faça isso senãofaça aquilo).
Condicional Simples e Completa(proporciona até dois desvios no código)
• Condição simples:
if <expressão lógica> then
instrução;
• Condição completa:
if <expressão lógica> then
<instrução>
else
<instrução>;
Condicional Simples e Completa
• Quando o conjunto de
instruções contiver
mais de uma linha,
então faz-se
necessário a utilização
de blocos de instrução
(begin ... end)
• Instruções
condicionais podem
ser aninhadas
neste
caso
não
vai “;”
Condicional Generalizada(proporciona um número indefinido de desvios)
case <variável> of
<valor 1> : <instrução 1>;
<valor 2> : <instrução 2>;
<valor 3> :
begin
<instrução 3.1>;
<instrução 3.2>;
end;
<valor n> : <instrução n>;
else
<instrução>;
end;
Quando usar if e quando usar case
• A instrução if..then..else funciona muito
bem para uma pouca quantidade de opções,
mas torna-se inviável se você tiver muitas
opções.
• No caso da instrução case o teste é feito a
partir de valores contidos em uma variável de
controle, o que dificulta a construção de
expressões condicionais;
Exercícios para fixação
http://www.cafw.ufsm.br/~bruno/disciplinas/ling_programacao/exercicios/lista4.html
Repete um código até que uma condição de saída seja satisfeita
Estruturas de Repetição
• Repete um fluxo de execução sequencial enquanto
uma determinada condição for satisfeita;
• Frequentemente as tarefas executadas por um
computador ou um robô são tarefas repetitivas ...
estruturas de repetição são ferramentas que
permitem este tipo de instrução;
• Também são conhecidas por estruturas de looop;
• Em pascal existem três tipos ...
Loop com condição pré-fixada
while (teste no início)
• A condição de saída do laço é primeira coisa a ser
analisada;
• Antes de repetir o código a expressão lógica é
avaliada;
• É equivalente a dizer ...
“Enquanto <alguma condição> for
verdadeira repita o que está abaixo ...”
while (exemplos)
Laço
Infinito
Um laço é infinito se a
condição de saída
nunca será alcançada
Loop com condição pós-fixada
repeat..until (teste no final)
• A condição de saída do laço é a última coisa a ser
analisada;
• Depois de repetir o código pelo menos uma vez a
expressão lógica é avaliada;
• É equivalente a dizer ...
“Repita o que está abaixo até que
<alguma condição> seja alcançada”
repeat..until (exemplos)
Loop com repetição por contagemfor..to..do ou for..downto..do
• É um tipo especial de laço de repetição com teste no
início, utilizado geralmente quando há um número
pré-definido de execuções a serem realizadas ...
• Observe os códigos abaixo, em ambos os casos o
objetivo é o mesmo ... ler 10 valores ...
for..to..do ou for..downto..do
(exemplos)
Interrompem o fluxo normal de execução
Interrupção de fluxo de execução
• break ou exit▫ Interrompem o bloco de execução
▫ Normalmente utilizados para encerrar prematuramente um laço de
repetição;
• continue▫ Interrompe a execução do bloco, retornando para o início do laço de
repetição;
▫ Utilizado para evitar uma execução desnecessária de um trecho de código
visto que determinada condição não será mais alcançada;
• halt▫ Interrompe a execução do programa e retorna o controle para o sistema
operacional (aborta o programa);
Uma maquiagem necessária
Recuos ... seria o nome correto
• A utilização de estruturas de
controle de fluxo deflagra a
necessidade de hierarquia dentro
do código fonte ... blocos dentro
de blocos.
• Observe os códigos ao lado
(ambos fazem a mesma coisa).
• Qual lhe parece mais
fácil de entender?
Indentação
• Recuo, indentation, identação e endentação;
• São espaços ou tabulações que não influenciam no
significado do código para o compilador mas que
fazem toda a diferença na hora de entender um
determinado código-fonte;
• Na maioria das LP desempenham um papel
estético, em outras, dão significado semântico ao
código fonte;
Indentação (cont.)
• Sua utilidade é realmente percebida em médios e
grandes projetos de software;
• Cada programador desenvolve seu estilo (dois, três
espaços, tabulações, etc.).
• É um recurso indispensável quando se trabalha em
equipe;
• Favorece a modificação do código, seja para
correção ou aprimoramento.
Exercícios para fixação
http://www.cafw.ufsm.br/~bruno/disciplinas/ling_programacao/exercicios/lista5.html