Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
ALGORITMOS
DEFINIÇÃO.
Algoritmo é a especificação de um conjunto finito, completo e ordenado de
operações que devem ser executadas a fim de solucionar um problema ou
realizar uma tarefa.
FORMAS DE REPRESENTAÇÃO:
- Descrição Narrativa
- Fluxograma
- Pseudocógio
Descrição Narrativa
Expressão dos algoritimos em uma linguagem humana: português,
inglês, etc.
Exemplo: Cálculo da média de um aluno
- Obter as notas das duas provas
- Calcular a média ponderada: 40% da primeira nota e 60% da segunda.
- Se a média inferior a 7.0, o aluno foi reprovado, senão ele foi
aprovado.
Esta forma é pouco útil para especificar algoritmos inerentes à
implementação computacional. Por esta forma, não serão objeto de estudo.
- Fluxograma
Os flugramas são representações gráficas de um algoritmo. São compostos
por um conjunto de símbolos que expressam determinadas operações comuns
aos algoritmos computacionais. No escopo de nossa abordagem utilizarmos
inicialmente apenas os símbolos abaixo apresentados:
= Marcas de Início e Fim do Fluxograma
= Entrada de Dados (obtém os dados necessários à execução do
algoritmo – Ex. teclado
= Saída de Dados (enviam informação para o dispositivo de saída. Ex.
monitor )
= Comando de atribuição (ou chamada de módulo/função)
= Decisão (permitem condicionar o fluxo de execução das operações)
= Setas (indicam o fluxo de execução das operações)
Exemplo: Cálculo da média de um aluno
.F.
Início
N1, N2
Média =
N1*0,4+N2*0,6
Média
< 7,0
“Aprovado”
“Reprovado”
Fim
.V.
- Pseudocódigo
Forma de reprentação muito próxima do formato clássico das linguagens de
programação de alto nível. Há duas vantagens básicas nesse tipo de
representação: (1) menos provável surgimento de ambiguidade em
comparação com a “descrição narrativa” e; (2) tradução facilitada para
linguagens de programação.
Estrutura Básica do Pseudocódigo.
Algoritmo <nome do algoritmo>
Var <nome ou lista de variáveis > : <tipo>
Início
<conteúdo do algoritmo>
Fim.
Exemplo: Cálculo da média de um aluno
Algoritmo Média
Var N1, N2, Média : real
Início
LER N1, N2
Média = N1*0,4 + N2*0,6
SE Média < 7.0
Então
ESCREVER “Reprovado”
Senão
ESCREVER “Aprovado”
FSE
Fim.
VARIÁVEIS:
- Tipos de Variáveis
1. Inteiras: representam valores que pertencem ao conjunto dos
número inteiros.
2. Reais: representam valores numéricos fracionários.
3. Alfanuméricos: variáveis cujo conteúdo são letras, palavras ou
cadeia de caracteres alfanuméricos. Também conhecidas como
“strings”. Importante que o seu conteúdo é delimitado por aspas.
Ex.: Nome <- “Ana”
4. Lógicos: representam os valores lógicos “verdadeiro” ou “falso”.
Por vezes representados como valores inteiros onde zero é o valor
falso e um é o valor verdadeiro.
- Variáveis e Armazenamento na Memória
Memória é o conjunto células onde se armazenam os dados de um
programa (e não só). Cada célula possui um endereço (numérico) específico.
Pode-se fazer uma analogia entre entre uma qualquer coluna de dados do
Excel e um segmento de memória, onde cada célula pode assumir um valor e a
localização da célula é dada pelo número da linha onde se encontra
A capacidade de armazenamento de cada uma dessas células depende da
arquitetura da memória: cada célula pode armazenar uma quantidade “0”s e
“1” de acordo como quantidade de bits que são acessados. Vamos estudar o
caso geral: cada célula “contém” 8 bits. Esse conjunto de 8 bits é chamado de
byte. O byte é a menor porção acessível de memória.
Um byte de 8 bits é numerado em ordem decrescente de 7 a 0, onde o bit 7
é o mais significativo (MSB – Most Significant Bit) e o bit 0 é o menos
significativo (LSB – Least Significant Bit)
Cada bit armazena uma informação binária, 0 ou 1, então esse byte possui
2
8
=256 estados possíveis.
No correr deste documento, cada posição de memória terá 8 bits.
Armazenamento de Dados do Tipo Alfanúmérico (texto)
Para armazenar um valor alfanumérico, será suficiente reservar-se uma
posição de memória para cada letra/dígito desse tipo de variável.
Senão vejamos: imagine que a variável chamada objeto recebe o valor “casa”,
ou objeto <- “casa”;
Mas, se as posições de memória só guardam uma sequência de “0”s e “1”s,
como representar esse valor na memória ?
Veja a tabela a seguir:
end Conteúdo base 10 ASCII
15 0 1 1 0 0 0 1 1 99 C
16 0 1 1 0 0 0 0 1 97 A
17 0 1 1 1 0 0 1 0 115 S
18 0 1 1 0 0 0 0 1 97 A
Existe a chamada Tabela ASCII (American Standard Code for Information
Interchange), onde cada caractere é associado a um número (código) que pode
variar de 0 a 255, portanto 256 possibilidades.
Armazenamento de Dados do Tipo Inteiro
As linguagens de programação permitem a definição de diversos tipos de
variáveis, como por exemplo: short int (inteiros entre -32.768 a +32.767);
short unsigned integer (0 a 65.535); ou integer (-2.147.483.648 a
+2.147.483.647). O dois primeiro tipos apresentados necessitam de 2 bytes
(ou seja, duas posições de memória para serem armazenados). O tipo integer
necessita de 4 bytes.
Não é difícil perceber: quantos mais bytes disponíveis para se armazenar um
número, maior a faixa de valores que poderão ser representados.
Para ilustrar, vamos analisar um tipo de variável hipotético que armazena
valores inteiros em apenas um byte:
Assim, há 8 posições disponíveis para uma representação em binário de um
número. Vamos analisar o maior e menor número possível:
000000002 = 010
111111112 = 25510
Como ser constata acima com um byte seria possível armazenar qualquer
valor inteiro entre 0 e 255. Mas como representar inteiros menores que zero ?
Para isso será necessário “sacrificar” 1 bit que passará a representar o sinal.
Assim é possível o seguinte:
011111112 => 0 (-) 11111112 = -12710
111111112 => 1(+) 11111112 = 12710
Acima, o bit mais sinificativo (mais à esquerda) foi utilizado para representar
o sinal.
Com 2 bytes teríamos:
11111111 111111112 => 65.53510
M(32) M(33)
Veja que, não por acaso, o valor acima calculado é o valor máximo do tipo
“short unsigned integer” anteriormente citado.
M(32) e M(33) acima são exemplos de possíveis posições de memória onde as
duas sequências de 8 bits estariam armazenadas.
- Atributos de Variáveis
A uma variável estão sempre associados:
Nome: definido pelo programador e que deve: (1) iniciar com
uma letra e; (2) não deve conter símbolos especiais, exceto a
sublinha ( _ ).
Endereço de Memória: posição do primeiro byte onde a
variável começa a ser armazenada.
Tipo: tipo de informação que será armazenada (número inteiro,
número real, texto, etc). O tipo
determina o número de bytes
necessários para armazenar a variável na memória.
Informação: valor da variável em um momento específico.
O Nome, Endereço e Tipo são fixos durante a execução de um programa, o
Informação varia durante a execução do programa.
- Definição de Variáveis em Algoritmos
Todas as variáveis utilizadas nos algoritmos devem ser definidas no início dos
mesmos, de uma das seguintes formas:
VAR <nome_da_variável> : <tipo_da_variável>
ou
VAR <lista_de_variáveis> : <tipo_das_variáveis>
Variáveis de tipos diferentes devem ser declaradas em linhas diferentes.
Exemplo:
VAR nome: : literal[10]
Idade, Nfilhos, : inteiro
Salario, : real
Gerente : lógico
- Expressões
O armazenamento de valores na memória é fundamental, mas não
suficiente para as tarefas executadas em um algoritmo. É necessário
também mecanismos que permitam utilizar essas variáveis de maneira que
possam ser alteradas ou sirvam de base para cálculos específicos, que
resultam na atualização de outras variáveis.
As variáveis podem ser manipuladas através de expressões. As expressões
permitem combinar variáveis, constantes e operadores de maneira a calcular
um resultado.
As constantes são valores que, durante a execução de um programa, não
tem o seu valor alterado em nenhum momento. Por exemplo, quando se
deseja criar um algoritimo para calculo de áreas, o valor de PI (PI =3,1415…)
deve ser armanezado na memória de maneira a ser utilizado, por exemplo,
no cálculo da área do círculo. Note que o valor nessa posição de memória,
não sofrerá qualquer alteração, pois o valor de PI é constante.
Os operadores são os elementos que determinam a maneira pela qual os
dados serão processados, determinando o resultado obtido.
Tipos de Operadores
Os tipos de operadores distinguem-se pelo tipo de dados sobre os quais
operam e pelo valor resultante de sua avaliação, são eles:
Operadores Aritméticos
Operadores Lógicos
Operadores Relacionais
Alfanuméricos
Operadores Aritméticos
São operadores que incidem sobre variáveis numéricas e o resultado
produzido é também numérico.
Existe relação de precedência de execução entre esses operadores que
se apresenta na tabela abaixo.
Operador (Operação) Prioridade
+ (Manutenção de Sinal)
- (Inversão de Sinal)
1º
** (Exponenciação) 2º
* (Multiplicação), / (Divisão), % (Resto
da Divisão Inteira)
3º
+ (Adição), - (Subtração) 4º
A ordem de execução de uma operação numa expressão é: primeiro os
operadores de maior prioridade. Para operadores de mesma prioridade
executa-se primeiro o que estiver mais a esquerda na expressão.
Exemplo:
Var n1, n2, n3, total : inteiro
Início
Ler n1, n2, n3 (imagine-se que o utilizador introduz 4, 3, 2)
total = n1 + n2 * n3 / n1 – n2**n3 * n1
Escreva total
Fim
No exemplo anteriror, é a seguinte a ordem das operações
(prioridade):
total = n1 + n2 * n3 / n1 – n2**n3 * n1
n2**n3 = 3**2 = 9 (chamaremos de r1 a este resultado)
total = n1 + n2 * n3 / n1 – r1 * n1
n2 * n3 = 3 * 2 = 6 (r2)
total = n1 + r2 / n1 – r1 * n1
r2 / n1 = 6 * 4 = 24 (r3)
total = n1 + r3 – r1 * n1
r1 * n1 = 9 * 4 = 36 (r4)
total = n1 + r3 – r4
n1 + r3 = 4 + 24 = 28 (r5)
total = r5 – r4
r5 – r4 = 28 – 36 = -8 (total)
Os operadores aritméticos usam números inteiros e reais. Operações
entre números inteiros resulta número inteiro. Qualquer operação que
inclua números reais resulta número real.
Operadores Lógicos
São operadores que incidem sobre variáveis lógicas, cujos valores
possíveis são: verdadeiro ou falso. O resultado produzido é também um
valor lógico.
Os operadores lógicos básicos são: NOT; OR; AND (ou, em português:
NEGAÇÃO; OU; E).
O operador lógico NOT é unário, ou seja, incide apenas sobre uma
variável lógica. Os operadores OR e AND operam sobre duas (ou mais)
variáveis lógicas. O resultado produzido por esses operadores é apresentado
na tabela a seguir:
Variáveis NOT OR AND
L1 L2 ! L2 L1 || L2 L1 && L2
.F. .F. .V. .F. .F.
.F. .V. .F .V. .F.
.V. .F. .V. .V. .F.
.V. .V. .F. .V. .V.
Também esses operadores existe prioridade entre esses operadores da
seguinte maneira:
Operador Prioridade
.NOT. 1º
.AND. 2º
.OR. 3º
Operadores Relacionais
São operadores que incidem sobre variáveis tanto sobre variáveis
numéricas, lógicas ou alfanuméricas. Esses operadores efetuam operações de
comparações entre dois conjuntos de expessões e retornam o resultado
verdadeiro ou falso, conforme os valores comparados.
Operador Símbolo Exemplo Resultado
maior > n1 > n2 1 (verdadeiro) se
o “teste” ao lado
for verdade, 0
(falso) caso
contrário
menor < n1 < n2
maior ou igual >= n1 >= n2
menor ou igual <= n1 <= n2
igual == n1 == n2
diferente != n1 != n2
Operadores Alfanuméricos
Manipulam variáveis com conteúdo texto. Os tipos de operadores
variam bastante de uma linguagem para outra.
Como exemplo de um operador alfanumérico tem-se a “concatenação”
Exemplo: v1 = “Fim”; v2 = “de”; v3 = “semana”
Frase <= v1 & “-“ & v2 & “-“ & v3
Frase = “Fim-de-semana”
Avaliação de Expressões
As expressões podem conter vários tipos de operadores dos tipos
apresentados. Assim é necessário definir também a prioridade de execução
entre os todos os tipos de operadores.
Prioridade (Símbolo)
1º (!) (-) (++) (--)
2º (*) (/) (%)
3º (+) (-)
4º (<) (>) (<=) (>=)
5º (==) (!=)
6º (&&)
7º (||)
8º (=)
Obs:
(1) Operadores de maior prioridade devem ser avaliados primeiro.
Quando a prioridade for igual, deve-se avaliar da esquerda para a
direita.
(2) As subexpressões entre parênteses devem ser avaliadas primeiro.
(3) Muito cuidado na utilização do operador relacional igual (==) e
variáveis reais. Muitas vezes dois números reais podem ser iguais, mas,
devidos a arredondamentos nos cálculos, diferem de maneira residual.
Assim uma expressão do tipo nr1 == nr2, pode ser falsa ainda que os
dois números reais sejam iguais.
INSTRUÇÕES BÁSICAS
É o conjunto de comandos disponíveis para a realização de tarefas
computacionais.
Possibilitam a comunicação com o usuário (comandos de entrada e saída),
processamento dos dados (comando de atribuição) e controle do fluxo de
execução das instruções (comandos de decisão).
Cada um dos comandos possui uma sintaxe e uma semântica:
- sintaxe – é a forma como os comandos devem ser escritos para que
possam ser entendidos pelo programador.
- semântica – ação propriamente dita que será executada pelo
comando.
- Instrução de Atribuição
Forma pela qual é possível armazenar, numa variável, o valor calculado
em uma expressão.
Sintaxe em Pseudocódigo: < Variável > = < Expressão >
Sintaxe em Fluxogramas:
Semântica: O valor calculado na expressão é armazenado na posição
de memória da variável que aparece à esquerda do comando.
IMPORTANTE: O tipo de dado resultante do cálculo da expressão deve ser
compatível com o tipo de dado da variável.
< Variável > =
< Expressão >
Exemplo de aplicação da ATRIBUIÇÃO:
- Construa um algoritmo que calcule a área de um retângulo com lados
medindo 10 e 15 cm. O
resultado deve ser colocado numa variável
chamada “area_ret”.
- Pseudocódigo:
Algoritmo Calc_Area_Retangulo
Var L1, L2, area : real
Início
L1 = 10
L2 = 15
Area = L1 * L2
Fim
- Fluxograma:
L1 = 10; L2 = 15
Area = L1 * L2
Início
Fim Fim Fim
Area = L1 * L2
Fim
Area = L1 * L2
Fim
L1 = 10; L2 = 15
Area = L1 * L2
Fim
Início
L1 = 10; L2 = 15
Area = L1 * L2
Fim
IMPORTANTE
Avalie o seguinte conjunto de intruções de atribuição:
VL1 = 10
VL1 = VL1 * 2
VL2 = VL1 / 4
Qual o valor assumido por VL2?
Resposta: 5 …. POR QUE ?
Vamos avaliar como é processado este comando de atribuição:
VL1 = VL1 * 2
A ordem em que a operação primitiva de atribuição a seguinte:
1. EFETUAM-SE TODOS OS CÁLCULOS QUE ESTÃO A DIREITA DO
COMANDO DE ATRIBUIÇÃO.
Ou seja, VL1 * 2 = 10 * 2 = 20
2. O RESULTADO OBTIDO NO PONTO ANTERIOR É COLOCADO NA
VARIÁVEL QUE ESTÁ A ESQUERDA DO COMANDO DE ATRIBUIÇÃO.
VL1 = 20
- Instrução de Entrada de Dados
Forma pela qual é possível obter os dados necessários para se executar a
tarefa descrita pelo algoritmo.
Sintaxe em Pseudocódigo: LER < lista de variáveis >
Sintaxe em Fluxogramas:
Semântica: Através de um dispositivo de entrada são fornecidos dados
que são colocados nas posições de memória das variáveis apresentadas em
<lista de variáveis>.
<lista de
variáveis>
Exemplo de aplicação da ENTRADA DE DADOS:
- Construa um algoritmo que leia os dois valores dos comprimentos dos
lados necessários para o cálculo da área de um retângulo. O resultado
deve ser colocado numa variável chamada “area_ret”.
- Pseudocódigo:
Algoritmo Calc_Area_Retangulo
Var L1, L2, area : real
Início
LER L1, L2
Area = L1 * L2
Fim
- Fluxograma:
Area = L1 * L2
Início
Fim Fim Fim
Area = L1 * L2
Fim
Area = L1 * L2
Fim
Area = L1 * L2
Fim
Início
Area = L1 * L2
Fim
L1, L2
- Instrução de Saída de Dados
Forma pela qual é possível apresentar o resultado produzido pela
execução do algoritmo.
Sintaxe em Pseudocódigo: ESCREVER < lista de variáveis > e/ou
< texto>
Sintaxe em Fluxogramas:
Semântica: Os valores (variáveis ou texto) presentes no comando são
enviados para o dispositivo de saída e apresentados ao usuário.
<lista de
variáveis>
e/ou <texto>
Exemplo de aplicação da SAÍDA DE DADOS:
- Construa um algoritmo que leia os dois valores dos comprimentos dos
lados necessários para o cálculo da área de um retângulo. O resultado
deve ser colocado numa variável chamada “area_ret” e deve ser
apresentado ao usuário.
- Pseudocódigo:
Algoritmo Calc_Area_Retangulo
Var L1, L2, area : real
Início
LER L1, L2
Area = L1 * L2
ESCREVA area
Fim
- Fluxograma:
Fim
Início
Area = L1 * L2
L1, L2
“Área =”, Area
CONTROLE DO FLUXO DE EXECUÇÃO DO
ALGORITMO
A execução de um algoritmo é uma sequência ordenada de passos bem
definidos e não ambíguos que conduzem a resolução de um problema.
Entretanto, na maioria das vezes, a execução das intruções é condicionada
a algum resultado lógico prévio. Por exemplo, escrever o se um aluno foi
ou não “aprovado” numa disciplina. Existirá uma instrução ‘ESCREVER
“Aprovado” ‘, entretanto essa instrução só deverá ser executada se a
média do aluno não for inferior a 7,0. Ou, seja o fluxo de execução do
algoritmo poderá ou não “passar” por essa instrução.
A ordem de execução das instruções é determinado por três tipos de
estruturas básicas de controle do fluxo de instruções de um algoritmo:
Estruturas Seqüenciais
Estruturas de Decisão
Estruturas de Repetição
Associado ao conceito de “fluxo de execução do algoritmo” está
associado o conceito de “bloco de comandos”. Um bloco de comandos é o
conjunto de intruções que será executado consoante o resultado das
condições expressas nas Estruturas de Decisão ou que estejam contidos no
“laço” associado às Estruturas de Repetição. Esse conceito só se tornará
claro, após o entendimento dessas Estruturas que serão apresentadas de
seguida.
- Estruturas Seqüenciais
Os comandos são executados em fila. Um comando só é executado
após o término do comando anterior.
A representação dessa estrutura é apresentada a seguir:
Fluxograma:
Pseudocódigo:
...
<Comando 1>
<Comando 2>
<Comando 3>
...
Todos os exemplos apresentados previamente neste documento são
exemplo de estrutura sequenciais.
<Comando 1>
<Comando 2>
<Comando 3>
- Estruturas de Decisão
O fluxo de execução das instruções é determinado pela avaliação de
uma ou mais condições. Essas condições são apresentas no formato de
expressões lógicas. Seguindo o exemplo anterior temos algo como:
...
SE nota >= 7,0 ENTÃO
ESCREVER “Aprovado”
SENÃO
ESCREVER “Reprovado”
FSE
...
Observe que quando o fluxo de execução atravessa essa parte do
algoritmo, apenas uma das instruções “ESCREVER” é que será executada.
Qual delas será executada é determinada pela expressão lógica “nota >=
7,0”. Caso isso seja uma “verdade” então a instrução a ser executada será
a que escreve “Aprovado”, senão, será a outra.
Existem dois subtipos desta estrutura:
Estrutura de decisão do tipo SE
Estrutura de decisão do tipo ESCOLHA
Estruturas de Decisão Tipo SE
Nessa estrutura é avaliada uma expressão lógica, chamda condição,
que poderá ser simples ou composta de expressões e variáveis de
todos os tipos.
Exemplo de uma condição:
status = “Inscrito” && Nota >= 7 && Freq >= 0,75
Essa condição será verdadeira se (1) o aluno estiver com a sua
inscrição na disciplina regularizada, (2) se a sua nota final for superior a
7,0 e (3) se compareceu a pelo menos 75% das aulas
Há dois comandos que implementam estrutura de decisão do tipo
SE:
SE ... {SENÃO} ... FSE
SE ... SENÃO-SE (n) ... {SENÃO} ... FSE
COMANDO: SE ... {SENÃO} ... FSE
Sintaxe em Pseudocódigo: SE <condição> ENTÃO
<bloco de comandos 1>
SENÃO
<bloco de comandos 2>
FSE
Sintaxe em
Fluxogramas:
Semântica: Na execução do comando “SE”, em primeiro lugar a
“condição” é avaliada, desta avaliação resulta ser “verdadeira” ou “falsa”.
Caso seja verdadeira são executados os comando incluídos no “bloco de
comandos 1”. Caso contrário há duas possibilidades: (1) executam-se os
comandos chamados “bloco de comandos 2” (ver o 1º diagrama acima),
ou (2) nada é executado (2º diagrama). Note que a sintaxe do
pseudocódigo contém um trecho em azul, isso indica que essa parte do
comando é opcional. IMPORTANTE: apenas 1 dos blocos é executado !!!
Feito o descrito acima o algoritmo segue o fluxo normal,
executando o próximo comando após o FSE.
<condição>
<bloco
com 2>
.V.
<bloco
com 1>
.F.
ou
<condição>
<bloco
com 1>
.F.
.V.
Exemplo 1: Algoritmo para informar se uma pessoa é menor de idade:
Pseudocódigo Fluxograma
Algortimo “Menor de Idade”
Var idade: inteiro;
Início
LER idade
SE idade < 18 ENTÃO
ESCREVER “Menor”
FSE
Fim.
Exemplo 2: Algoritmo para informar se uma pessoa é menor ou maior de idade:
Pseudocódigo Fluxograma
Algortimo “Menor ou Maior”
Var idade: inteiro;
Início
LER idade
SE idade < 18 ENTÃO
ESCREVER “Menor”
SENÃO
ESCREVER “Maior”
FSE
Fim.
idade
Início
Fim
“Menor
nor”
.F.
.V.
idade<18
Início
Fim
idade
“Menor
nor”
“Maior
.F. .V.
idade<18
COMANDO: SE ... SENÃO-SE {n} ... {SENÃO} ... FSE
Sintaxe em Pseudocódigo: Sintaxe em Fluxograma:
SE <condição 1> ENTÃO
<bloco de comandos 1>
SENÃO-SE <condição 2>
<bloco de comandos 2>
...
SENÃO-SE <condição n+1>
<bloco de comandos n+1>
SENÃO
<bloco de comandos n+2>
FSE
Semântica: Ao chegar se neste comando (que neste parágrafo
chamaremos de “C-SE-SENÃO”), inicialmente a “condição 1” é avaliada.
Caso seja verdadeira, “executa-se o bloco de comandos 1” e segue para o
próximo comando (estará terminado“C-SE-SENÃO”). Caso essa “condição
1” seja falsa então a “condição 2” é avaliada e, caso seja verdadeira,
“executa-se o bloco de comandos 2” e o comando “C-SE-SENÃO” está
finalizado. Caso “condição 2” seja falsa, avalia-se a próxima condição e
continua-se de forma análoga ao que foi feito para condições 1 e 2 até a
última condição. Se todas as condições já foram avaliadas e todas são
falsas, então executa-se o “bloco de comandos n+2” e o comando “C-SE-
SENÃO” está finalizado.
Importante: tudo o que está escrito em azul acima é opcional.
.F.
.V.
<cond2> <blc com 2>
.F.
.V.
<cond n+1> <blc com n+1>
<blc com n+2>
.F.
.V.
<cond1> <blc com 1>
Exemplo: Algoritmo para indicar se 5 número inteiros estão ordenados:
Pseudocódigo Fluxograma
Algortimo “O Maior de 5 inteiros”
Var n1, n2, n3, n4, n5, Mn: inteiro;
Início
LER n1, n2, n3, n4, n5
SE n1 > n 2 ENTÃO
ESCREVER “Seq. NÃO ord.”
SENÃO-SE n2 > n 3 ENTÃO
ESCREVER “Seq. NÃO ord.”
SENÃO-SE n3 > n 4 ENTÃO
ESCREVER “Seq. NÃO ord.”
SENÃO-SE n4 > n 5 ENTÃO
ESCREVER “Seq. NÃO ord.”
SENÃO
ESCREVER “Seq. ORDENADA”
FSE
Fim.
.F.
.V.
n1 > n2
“Seq N Ord”
.F.
.V.
n2 > n3
“Seq N Ord”
.F.
.V.
n3 > n4
“Seq N Ord”
.F.
.V.
n4 > n5
“Seq N Ord”
“Seq ORD”
Início
Fim
n1,n2,n3,n4,n5
Estruturas de Decisão Tipo ESCOLHA
Nessa estrutura o valor de uma variável é avaliado e executar-se-á
o bloco de comandos associado ao valor que a variável possui no
momento.
Sintaxe em Pseudocódigo: Sintaxe em Fluxograma:
ESCOLHA <variável v>
CASO < valor 1 >
< bloco de comandos 1>
FC
CASO < valor 2>
< bloco de comandos 2>
FC
...
CASO < valor n>
< bloco de comandos n>
FC
SENÃO
< bloco de comandos n+1>
FESCOLHA
...
.F.
.V.
<blc com 1> < v=vl 1>
.F.
.V.
<blc com 2> < v=vl 2>
.F.
.V.
<blc com n> < v=vl n>
...
<blc com n+1>
Semântica: Este comando permite selecionar a execução de um ou
mais dentre diversos blocos de comando disponíveis conforme o valor da
< variável E>.
O comando percorre sequencialmente, de cima para baixo, cada um
dos “CASO” até encontrar o que tem o valor igual ao da “variável v”. Uma
vez encontrado esse valor, serão executados todos os blocos de
comandos daí para baixo até uma de duas situações se verifica: (1)
chegar-se ao “FESCOLHA” ou (2) encontra o primeiro “FC”.
Importante: O “FC” é opcional, assim, a linhas tracejadas no fluxograma
representam as possíveis opções de fluxo de execução do algoritmo. Ou seja,
se associado a condição <v= vl1> estiver associado o “FC”, então o fluxo que
se deve usar é o que está representado mais à direita no fluxograma (ou seja,
liga-se diretamente à saída do comando). Caso não exista o “FC”, então após
a execução do <blc com 1>, será executado o <blc com 2> e todos os outros
posteriores até que se chegue ao fim do comando ou que se encontre o
primeiro “FC”.
A seguir, o exemplo do pseudocódigo e fluxograma onde só existe um
“FC” associado ao CASO <valor 2>, note a diferença no fluxograma.
ESCOLHA <variável v>
CASO < valor 1 >
< bloco de comandos 1>
CASO < valor 2>
< bloco de comandos 2>
FC
CASO < valor 3>
< bloco de comandos 3>
SENÃO
< bloco de comandos 4>
FESCOLHA
<blc com 4>
<blc com 1>
<blc com 2>
.V.
.F.
< v=vl 1>
.V.
.F.
< v=vl 2>
<blc com 3>
.V.
< v=vl 3>
.F.