Buscar

apostila de algoritimos.pdf

Prévia do material em texto

Algoritmos 
 
Existem muitas formas de se representar algoritmos, utilizando-se linguagens de programação, 
linguagem formal, formas geométricas, diagramas, e muitas outras. Algumas destas formas se 
tornaram especiais pela eficácia de sua representação nas diversas áreas do conhecimento. 
 
Neste texto de maneira sucinta são apresentadas três destas formas, porém dando-se mais ênfase a 
duas delas. É importante salientar que o estudo de algoritmos exige do estudante um esforço quanto 
à realização de exercícios, de modo que não se pode aprendê-lo apenas lendo textos. 
 
Sendo assim, procurem realizar os exercícios que são passados em sala de aula. 
 
 
Conceito de Algoritmo 
 
- Algoritmo é a especificação de uma sequência ordenada de passos que deve ser seguida com o 
intuito de realizar uma tarefa, garantindo a sua repetibilidade. 
Obs.: repetibilidade – permite que esta sequência possa ser repetida toda vez que a tarefa tiver que 
ser realizada. 
 
- Algoritmo é um conjunto finito de regras bem definidas para a solução de um problema, em um 
tempo finito, e com um número finito de passos. 
 
Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo 
a passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa. 
Neste sentido, um programa de computador nada mais é que um algoritmo escrito numa forma 
compreensível pelo computador. 
 
 
Formas de Algoritmos 
 
Existem diversas formas possíveis de se representar um algoritmo. 
Para a Informática, algumas das formas mais conhecidas são: 
- Descrição Narrativa 
- Fluxograma 
- Pseudocódigo 
 
>> Descrição Narrativa: 
 
Nesta forma os algoritmos são expressos diretamente em linguagem coloquial, descrevendo-se em 
passos a sequência de ações a serem realizadas. 
Exemplo: 
 
>> Troca de um pneu furado: 
Passo 1 – Afrouxar ligeiramente as porcas 
Passo 2 – Suspender o carro 
Passo 3 – Retirar as porcas e o pneu 
Passo 4 – Colocar o pneu reserva 
Passo 5 – Apertar as porcas 
Passo 6 – Abaixar o carro 
Passo 7 – Dar o aperto final nas porcas 
 
Um exemplo bastante comum de um Algoritmo em forma de Descrição Narrativa é o texto de um 
Manual que ensine a utilização de um determinado aparelho. Nele são descritos passos que devem 
ser seguidos para se realizar as possíveis ações daquele aparelho. O nível de detalhamento destas 
descrições deve ser tal que permita que toda vez que o Usuário pretenda realizar aquela ação, basta 
seguir aqueles passos na sequência correta para se ter o êxito esperado. 
 
 
 
 
>> Fluxograma ou Diagrama de Blocos: 
 
É uma representação gráfica de algoritmos, onde formas geométricas diferentes implicam em ações 
(instruções ou comandos) distintas. Esta forma facilita o entendimento das idéias contidas nos 
algoritmos. 
 
De modo geral, o fluxograma são símbolos dispostos em uma determinada sequência, em que há um 
único caminho orientado a ser seguido, representando a sequência de execução daquelas instruções. 
Dos diversos símbolos existentes que podem ser utilizados em um Fluxograma, os que serão 
necessários para o curso apresentado neste texto, são: 
 
 
= Início e final do fluxograma 
 = Seta do Fluxo de Dados 
 
= Operações de entrada de dados via teclado 
 
= Operações de saída de dados em vídeo (monitor) 
 
= Processo – ou Processamento, como operações de atribuição 
 
= Decisão - utilizado nas estruturas condicionais ("Se..então..senão") 
 
= Conector utilizado quando é preciso particionar o diagrama 
 
= Preparação – utilizado em laços de repetição do tipo "Para..de..até..faça" 
 
 
>> Pseudocódigo: 
 
Esta forma de representação de algoritmos, também conhecida como Português Estruturado ou 
Portugol, é bastante rica em detalhes e, por assemelhar-se bastante à forma em que os programas 
são escritos, será juntamente com o Fluxograma, a forma de representação de algoritmos a ser 
adotada nesta disciplina. 
 
Estrutura de Um Algoritmo na Forma de Pseudocódigo 
 
Algoritmo <nome_do_algoritmo> 
Var 
 <declaração_de_variáveis> 
Início 
 <corpo_do_algoritmo> 
Fim. 
 
"Algoritmo" é uma palavra que indica o início da definição do algoritmo em forma de pseudocódigo. 
 
"<nome_do_algoritmo>" – no lugar deste, deve ser colocado o nome simbólico do algoritmo, o que 
irá distingui-lo dos demais. 
 
"<declaração_de_variáveis>" parte do algoritmo onde devem ser declaradas as variáveis utilizadas 
no algoritmo. Esta parte será detalhada mais adiante. 
 
"Início" e "Fim." são respectivamente as palavras que delimitam o início e o término do conjunto de 
instruções do corpo do algoritmo. 
 
 
 
Exemplo de um Algoritmo que calcula a média de duas notas, que devem ser digitados pelo Usuário 
ao executar o programa, e ao final mostra se houve aprovação ou não, segundo um critério 
estabelecido. 
 
Algoritmo Media 
Var 
 N1, N2, Media: Real; 
Início 
 Leia (N1, N2); 
 Media = (N1+N2)/2; 
 Se Media >= 7 Então 
 Escreva ("Aprovado"); 
 Senão 
 Escreva ("Reprovado"); 
 Fim_se 
Fim. 
 
 
Tipos de Dados 
 
Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas 
em sua memória. Estas informações podem ser classificadas em dois tipos: 
– As instruções, que comandam o funcionamento da máquina e determinam a maneira como devem 
ser tratados os dados. 
– Os dados propriamente ditos, que correspondem à porção das informações a serem processadas 
pelo computador. 
 
Para que sejam manipulados pelo processador, os dados devem ser declarados no início do 
programa, a fim de que o compilador conheça os tipos e os nomes das variáveis que contemplarão 
estes dados. 
 
>> Tipos Inteiros: 
 
São os dados numéricos positivos ou negativos excluindo-se destes qualquer número fracionário. 
Como exemplo deste tipo de dado, tem-se os valores: 35, 0, 234, -56, 1024 entre outros. 
 
>> Tipos Reais: 
 
São os dados numéricos positivos e negativos, incluindo-se os números fracionários. Como exemplo 
deste tipo de dado, tem-se os valores: 35, 0, -56, 1.2, 234.18, -45.8987 entre outros. 
 
>> Tipos Caracteres: 
 
São as seqüências contendo letras, números e símbolos especiais. Uma seqüência de caracteres deve 
ser indicada entre aspas (""). Este tipo de dado também é conhecido como Alfanumérico, String, 
Literal ou Cadeia. Como exemplo deste tipo de dado, tem-se os valores: "Programação", "Rua Alfa, 
52 Apto 1", "Fone 574-9988", "04387-030", " ", "7" entre outros. 
 
>> Tipos Lógicos: 
 
São os dados com valor "verdadeiro" ou "falso", sendo que este tipo de dado poderá representar 
apenas um dos dois valores. Ele é conhecido também por tipo "booleano", devido à contribuição do 
filósofo e matemático inglês George Boole na área da lógica matemática. 
 
 
Conceito e Utilidade de Variáveis 
 
Basicamente, uma variável possui três atributos: um nome, um tipo de dado associado à mesma, e 
um valor por ela guardado. 
 
Toda variável possui um nome que tem a função de diferenciá-la das demais. Cada linguagem de 
programação estabelece suas próprias regras de formação de nomes de variáveis. 
Adotaremos para os algoritmos, as seguintes regras para nome de variável: 
- deve necessariamente começar com uma letra; 
- não deve conter nenhum símbolo especial, exceto o "underline" (_); 
- não deve conter nenhum espaço em branco; 
- não deve ser uma palavra acentuada; 
- não poderá ser uma palavra reservada a uma instrução de programa. 
 
Obviamente é interessante adotar nomes relacionados às funções que serão exercidas pela variável 
dentro de um programa. 
 
Outro atributo característico de uma variável é o "tipo" do dado que ela pode armazenar. Este 
atributo define a natureza das informações contidas na variável. 
 
Por último há o atributo "valor", que nada mais é do que a informação útil contida na variável. 
 
Uma vez definidos os atributos"nome" e "tipo de dado" de uma variável, estes não podem ser 
alterados, e assim permanecem durante toda a sua existência no programa. Por outro lado, o 
atributo "valor" está constantemente sujeito a mudanças de acordo com o fluxo de execução do 
programa (por ser uma "variável"). 
 
Em resumo, o conceito de variável foi criado para facilitar a vida dos programadores, permitindo 
acessar informações na memória dos computadores por meio de um nome, em vez do endereço de 
uma célula de memória. 
 
 
Declaração de Variáveis em Algoritmos 
 
Todas as variáveis utilizadas em algoritmos devem ser declaradas antes de serem utilizadas. Isto se 
faz necessário para permitir que o compilador reserve um espaço na memória para as mesmas. 
 
Nos algoritmos, todas as variáveis utilizadas serão declaradas no início do mesmo, por meio de um 
comando que pode ser escrito em uma das seguintes formas: 
 
VAR 
 <nome_da_variável> : <tipo_da_variável>; 
 ou 
 <lista_de_variáveis> : <tipo_das_variáveis>; 
 
Observações: 
- numa mesma linha poderão ser definidas uma ou mais variáveis do mesmo tipo. Se forem várias, 
estas devem estar separadas por vírgulas; 
- variáveis de tipos diferentes devem ser declaradas em linhas diferentes. 
 
 
Operadores 
 
Operadores são elementos fundamentais que atuam sobre operandos e produzem um determinado 
resultado. Por exemplo, a expressão 3 + 2 relaciona dois operandos (os números 3 e 2) por meio do 
operador (+) que representa a operação de adição. 
 
Pode-se classificar os operadores levando-se em consideração o tipo de dado de seus operandos, e 
do valor resultante de sua avaliação. Sendo assim, dividem-se em Operadores "de Atribuição", 
"Aritméticos", "Relacionais", "Lógicos" e "Literais". 
 
 
>> Operador de Atribuição: 
 
Um operador de atribuição serve para atribuir um valor a uma variável. 
Neste curso o operador de atribuição será o "sinal de igual": 
 = 
Sendo assim, a sintaxe de um comando de atribuição será: 
 NomeDaVariável = expressão; 
A expressão localizada no lado direito do sinal de igual é avaliada, e seu valor resultante é 
armazenado na variável que está à esquerda. 
 
"O nome da variável que recebe o valor deve aparecer sempre sozinho, no lado esquerdo do sinal de 
igual deste comando." 
 
Exemplos: 
a = 3; 
nota1 = 8.5; 
media = (nota1 + nota2) / 2; 
v = v0 + a * t; 
salFinal = sal * perc / 100; 
 
>> Operadores Aritméticos: 
 
Os operadores aritméticos relacionam as operações aritméticas básicas, conforme a tabela abaixo: 
 
Operador Operação Prioridade 
+ adição 3 
- subtração 3 
* multiplicação 3 
/ divisão 3 
DIV parte inteira de uma divisão 2 
MOD resto de uma divisão 2 
** potenciação (ou exponenciação) 1 
 
Obs.: A prioridade (ou hierarquia) entre operadores define a ordem em que os mesmos serão 
avaliados (e executados) dentro de uma mesma expressão. 
 
>> Operadores Relacionais: 
 
Os operadores relacionais são operadores binários que "devolvem" os valores lógicos "verdadeiro" e 
"falso". 
Obs.: a palavra "devolvem" indica que uma operação com Operadores Relacionais tem como 
possíveis resultados apenas 2 valores: "verdadeiro" ou "falso". 
 
Operador Operação 
< menor que 
> maior que 
<= menor ou igual a 
>= maior ou igual a 
!= diferente de 
== igual a 
 
Estes valores são somente usados quando se deseja efetuar comparações. Comparações só podem 
ser feitas entre objetos de mesma natureza, isto é, variáveis do mesmo tipo de dado. 
 
Por exemplo, digamos que a variável inteira "num" contenha o valor 7(sete). Assim as expressões a 
seguir fornecem cada uma, um valor lógico, sendo falso a primeira, e verdadeiro a segunda: 
 num <= 5 
 num > 5 
 
Operações que utilizam operadores relacionais são como perguntas, cuja resposta será sempre "Não" 
ou "Sim"; "Falso" ou "Verdadeiro"; "0" ou "1". 
 Ex.: se num for igual a 7(sete), então: 
 num <= 5 ? ... Não (Falso) 
 num > 5 ? ... Sim (Verdadeiro) 
 
>> Operadores Lógicos: 
 
Os operadores lógicos ou booleanos são usados para combinar expressões relacionais. Também 
devolvem como resultado valores lógicos "verdadeiro" ou "falso". 
Operador 
OU 
E 
NÃO 
 
Fornecendo dois valores ou expressões lógicas, representadas por expressão1 e expressão2, 
podemos descrever as quatro operações lógicas a seguir: 
 
expressão1 E expressão2 é verdadeiro somente se ambas, expressão1 e expressão2, forem 
verdadeiras. Se uma for falsa, ou se ambas forem falsas, a operação "E"como um todo também 
será falsa. 
 
expressão1 OU expressão2 é verdadeiro se tanto a expressão1 como a expressão2 forem 
verdadeiras. As operações "OU" só resultam em valores falsos se ambas, expressão1 e 
expressão2, forem falsas. 
 
NÃO expressão1 é verdadeiro se expressão1 for falsa; de modo contrário, a expressão "NÃO 
expressão1" resultará em falso, se expressão1 for verdadeira. 
Ou seja, a expressão NÃO expressão1 resulta na negação da expressão1. 
 
Tabela Verdade: 
A B A 0U B A E B NÃO A NÃO B 
V V V V F F 
V F V F F V 
F V V F V F 
F F F F V V 
 
 
>> Operadores Literais: 
 
São os operadores que atuam sobre caracteres. Eles variam muito de uma linguagem para outra. O 
operador mais comum, e mais usado, é o operador que faz a concatenação (união) de strings: ou 
seja, tomando-se duas strings e unindo-se (concatenando-se) a segunda ao final da primeira. 
 
Podem-se utilizar dois operadores que fazem esta operação de união de caracteres: o "sinal de mais", 
ou a "vírgula". 
 
Por exemplo, a concatenação das strings "ALGO" e "RITMO" pode ser representada por: 
"ALGO" + "RITMO" 
ou 
"ALGO", "RITMO" 
...e o resultado de sua avaliação é: "ALGORITMO" 
 
Nesta Apostila será adotada a "vírgula" como operadora de concatenação. 
 
 
Funções Matemáticas 
 
Abaixo, estão enumeradas algumas Funções Matemáticas que poderão ser abordadas e utilizadas em 
exercícios neste curso: 
 
ABS (x) Retorna o valor absoluto (positivo) de uma expressão 
SEN (x) Retorna o valor do seno 
COS (x) Retorna o valor do cosseno 
TAN (x) Retorna o valor da tangente 
EXP (x) Retorna o valor exponencial (ex - sendo "e" o no de Euler) 
LN (x) Retorna o logaritmo natural (logaritmo neperiano) 
PI Retorna o valor de PI (3.1415...) 
 
 
 
Exemplos de expressões que utilizam estas funções matemáticas: 
val1 = SEN (4*x); 
val2 = ABS (val1); 
val3 = PI * SEN (x + 1); 
val4 = 2 * a * EXP (x + TAN (y)); 
val5 = LN (x ** 2) + 3 * COS (x – 2); 
 
 
Expressões 
 
O conceito de "expressão", em termos computacionais, está intimamente ligado ao conceito de 
expressão ou fórmula matemática, onde um conjunto de variáveis e constantes numéricas relaciona-
se por meio de operadores aritméticos compondo uma fórmula que, uma vez avaliada, resulta num 
valor. 
 
Expressões aritméticas são aquelas cujo resultado da avaliação é do tipo numérico, seja ele inteiro ou 
real. Somente o uso de funções, operadores aritméticos, variáveis numéricas e parênteses é 
permitido em expressões deste tipo. 
 
"Toda expressão aritmética deve estar linearizada, ou seja, representada inteiramente em apenas 
uma linha." 
 
As seguintes regras são essenciais para a correta avaliação de expressões: 
 
1. Deve-se observar a prioridade dos operadores, conforme mostrado nas tabelas de operadores: 
(obs.: operadores de maior prioridade devem ser avaliados primeiro. Se houver empate com relação 
à precedência, então a avaliação se faz da esquerda para a direita). 
 
2. Os parênteses usados em expressões tem o poder de "roubar" a prioridade dos demais 
operadores, forçando a avaliação da subexpressão em seu interior, independente de qual seja. 
 
3. Entre os quatro principais grupos de operadores existentes, a saber, aritmético, lógico, literal e 
relacional, há uma certa prioridade de avaliação: os aritméticos e literais devem ser avaliados 
primeiro; a seguir, são avaliadas assub-expressões com operadores relacionais e, por último são 
avaliados os operadores lógicos. 
 
 
Comandos de Entrada de Dados 
 
Os comandos de entrada de dados são o meio pelo qual as informações dos usuários são transferidas 
para a memória dos computadores, para que possam ser usadas nos programas. 
 
No diagrama de blocos o comando de entrada de dados é representado por: 
 
= Operações de entrada de dados via teclado 
 
Em Português Estruturado há duas sintaxes possíveis para esta instrução: 
 LEIA (<variável>) 
 Ex: LEIA (X) 
 LEIA (<lista_de_variáveis>) 
 Ex: LEIA (nome, endereco, cidade) 
Obs.: A lista_de_variáveis é um conjunto de um ou mais nomes de variáveis separados por vírgulas. 
 
No diagrama, as variáveis que devem receber os valores devem ser descritas dentro do símbolo: 
 OU 
 
 
 
 
 
X nome, endereco, 
cidade 
Comandos de Saída de Dados 
 
Os comandos de saída de dados são o meio pelo qual informações contidas na memória dos 
computadores são colocadas nos dispositivos de saída, para que os usuários possam apreciá-las. 
 
No diagrama de blocos o comando de saída de dados é representado por: 
 
= Operações de saída de dados em vídeo (monitor) 
 
Em Português Estruturado há quatro sintaxes possíveis para esta instrução: 
 ESCREVA (<variável>); 
 Ex: ESCREVA (X); 
 ESCREVA (<lista_de_variáveis>); 
 Ex: ESCREVA (nome, endereco, cidade); 
 ESCREVA (<literal>); 
 Ex: ESCREVA ("Algoritmo é o máximo!"); 
 ESCREVA (<literal>, <variável>, ... ,<literal>, <variável>); 
 Ex: ESCREVA ("Meu nome é: ", nome, "e meu endereço é: ", endereco); 
 
No Fluxograma, os valores que devem ser mostrados na tela devem ser descritos dentro do símbolo: 
 OU 
 
Uma <lista_de_variáveis> é um conjunto de nomes de variáveis separados por vírgulas. Um literal é 
simplesmente um dado do tipo literal (string ou cadeia de caracteres) delimitado por aspas. 
 
Há ainda a possibilidade de se misturar nomes de variáveis com literais na lista de um mesmo 
comando. O efeito obtido é bastante útil e interessante: a lista é lida da esquerda para a direita e 
cada elemento da mesma é tratado separadamente; se um nome de variável for encontrado, então o 
valor da mesma é colocado no dispositivo de saída; no caso de um literal, o mesmo é escrito 
diretamente no dispositivo de saída (na tela). 
 
Exemplo: algoritmo que calcula o preço total de acordo com a quantidade de produto comprada. 
 
Algoritmo exemplo_comando_de_entrada_de_dados 
Var 
 preco_unit, preco_tot : Real; 
 quant : Inteiro; 
Início 
 Leia (preco_unit, quant); 
 preco_tot = preco_unit * quant; 
 Escreva (preco_tot); 
Fim. 
 
 
X "Valor da média: ", media 
Estruturas Condicionais: 
(Comandos de Decisão) 
 
Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da 
avaliação de uma ou mais condições. Uma condição é uma expressão lógica. 
 
A classificação das estruturas de decisão é feita de acordo com o número de condições que devem ser 
testadas para que se decida qual o caminho a ser seguido. Segundo esta classificação, têm-se 3 tipos 
de estruturas de decisão: 
- Estrutura de Decisão Simples (Se..então..fim_se) 
- Estrutura de Decisão Composta (Se..então..senão..fim_se) 
- Estrutura de Decisão Múltipla (Se..então..senão se..então ... fim_se) 
 
Uma Estrutura de decisão inicia-se na palavra reservada "SE" (inicial), e termina na palavra 
reservada "FIM_SE". 
 
 
>> Estruturas de Decisão Simples (Se..então..fim_se) 
 
Nesta estrutura uma única condição (expressão lógica) é avaliada. Dependendo do resultado desta 
avaliação, um comando ou conjunto de comandos serão executados (se a avaliação for verdadeira) 
ou não serão executados (se a avaliação for falsa). 
 
No diagrama de blocos a estrutura para instrução "Se..então..fim_se" é representado por: 
 
 
Sintaxe em Português Estruturado de uma estrutura de decisão simples: 
 
SE <condição> ENTÃO 
 <instruções>; 
FIM_SE 
 
A semântica desta construção é a seguinte: 
 
– a condição é avaliada: 
 
– Se ela for verdadeira, então o conjunto de instruções delimitado pelas palavras-reservadas 
"ENTÃO" e "FIM_SE" será executado. Ao término de sua execução o fluxo do algoritmo prossegue 
pela instrução seguinte à construção, ou seja, o primeiro comando após a palavra-reservada 
"FIM_SE". 
 
– No caso da condição ser falsa, o fluxo do algoritmo prossegue pela instrução seguinte à construção, 
ou seja, o primeiro comando APÓS a palavra-reservada "FIM_SE", sem executar o conjunto de 
instruções entre as palavras-reservadas "ENTÃO" e "FIM_SE". 
 
CONDIÇÃO 
INSTRUÇÕES 
VERDADEIRA FALSA 
Exemplo de algoritmo que lê um número e escreve se o mesmo é maior que 10: 
 
Algoritmo exemplo_estrutura_de_decisão_simples 
Var 
 X : Inteiro; 
Início 
 Escreva ("Digite um valor"); 
 Leia (X); 
 Se X > 10 Então 
 Escreva ("X é maior que 10"); 
 Fim_se 
Fim. 
 
 
>> Estruturas de Decisão Compostas (Se..então..senão..fim_se): 
 
Nesta estrutura uma única condição (expressão lógica) é avaliada. Se o resultado desta avaliação for 
"verdadeiro", um conjunto de instruções será executado. Caso contrário, ou seja, quando o resultado 
da avaliação for "falso", um outro conjunto de instruções será executado. 
 
No diagrama de blocos a estrutura para instrução "Se..então..senão..fim_se" é representado por: 
 
 
Sintaxe em Português Estruturado de uma estrutura de decisão composta: 
 
SE <condição> ENTÃO 
 <instruções_1>; 
SENÃO 
 <instruções_2>; 
FIM_SE 
 
A semântica desta construção é a seguinte: 
 
– a condição é avaliada: 
 
– Se ela for verdadeira, então o conjunto de "instruções_1" delimitado pelas palavras-reservadas 
"ENTÃO" e "SENÃO" será executado. Ao término de sua execução o fluxo do algoritmo prossegue pela 
instrução seguinte à construção, ou seja, o primeiro comando após a palavra-reservada "FIM_SE". 
 
– No caso da condição ser falsa, então o conjunto de "instruções_2" delimitado pelas palavras-
reservadas "SENÃO" e "FIM_SE" será executado. Ao término de sua execução o fluxo do algoritmo 
prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após a palavra-
reservada "FIM_SE". 
 
CONDIÇÃO 
INSTRUÇÕES_1 INSTRUÇÕES_2 
FALSA VERDADEIRA 
Exemplo de algoritmo que lê um número e escreve se o mesmo é, ou não, maior que 100: 
 
Algoritmo exemplo_estrutura_de_decisão_composta 
Var 
 X : Inteiro; 
Início 
 Leia (X); 
 Se X > 100 Então 
 Escreva ("X é maior que 100"); 
 Senão 
 Escreva ("X não é maior que 100"); 
 Fim_se 
Fim. 
 
 
>> Estruturas de Decisão Múltiplas (Se..então..senão se..então ... fim_se) 
 
Nesta estrutura várias condições (expressões lógicas) são avaliadas. Se o resultado de uma destas 
avaliações for "verdadeiro", apenas o conjunto de instruções daquela condição será executado. 
 
No diagrama de blocos a estrutura para instrução "Se..então..senão se..então ... fim_se" é 
representado por: 
 
Sintaxe em Português Estruturado de uma estrutura de decisão múltipla: 
 
SE <condição_1> ENTÃO 
 <instruções_1>; 
SENÃO SE <condição_2> ENTÃO 
 <instruções_2>; 
SENÃO SE <condição_3> ENTÃO 
 <instruções_3>; 
... 
SENÃO 
 <instruções_N>; 
FIM_SE 
 
 
 
 
CONDIÇÃO_1 
INSTRUÇÕES_1 
INSTRUÇÕES_2 
FALSA 
VERDADEIRA 
CONDIÇÃO_2 
FALSA 
INSTRUÇÕES_2 
nome, 
VERDADEIRA 
nome, 
INSTRUÇÕES_3 
nome, 
VERDADEIRA 
nome, 
INSTRUÇÕES_N 
nome, 
FALSA 
A semântica desta construção é a seguinte: 
 
– a 1a condição é avaliada. 
 
– Se ela for verdadeira, então o conjunto de "instruções_1" será executado. Ao término de sua 
execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro 
comando após a palavra-reservada "FIM_SE". 
 
– No caso da 1a condição ser falsa, então a 2a condição é avaliada.– Se ela for verdadeira, então o conjunto de "instruções_2" será executado. Ao término de sua 
execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro 
comando após a palavra-reservada "FIM_SE". 
 
– No caso desta condição ser falsa, então as seguintes condições são avaliadas em sequência, até 
encontrar alguma "verdadeira". 
Se nenhuma das condições existentes for "verdadeira", o conjunto de "instruções_N" delimitado pelas 
palavras-reservadas "SENÃO" e "FIM_SE" será executado. Ao término de sua execução o fluxo do 
algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após a 
palavra-reservada "FIM_SE". 
 
OBS.: Não é obrigatória a existência do conjunto de "instruções_N" delimitado pelas palavras-
reservadas "SENÃO" e "FIM_SE". 
 
Exemplo de algoritmo que lê um número e escreve se o mesmo é menor que: 10, 20, 30, ou 40: 
 
Algoritmo exemplo_estrutura_de_decisão_multipla 
Var 
 X : Inteiro; 
Início 
 Leia (X); 
 Se X < 10 Então 
 Escreva ("X é menor que 10"); 
 Senão Se X < 20 Então 
 Escreva ("X é menor que 20"); 
 Senão Se X < 30 Então 
 Escreva ("X é menor que 30"); 
 Senão Se X < 40 Então 
 Escreva ("X é menor que 40"); 
 Senão 
 Escreva ("X é maior ou igual a 40"); 
 Fim_se 
Fim.

Continue navegando