Relembrando tópicos importantes

OPERADORES
OPERADORES LÓGICOS
OPERADOR
FUNÇÃO
AND
OR
NOT
É verdadeira se todas as condições forem verdadeiras.
É verdadeira se pelo menos uma condição for verdadeira.
Inverte o valor da expressão ou condição
Esses operadores servem para combinar resultados e verificar se os valores de uma determinada
expressão são verdadeiros ou falsos.
Observe a questão abaixo:
 Escreva um algoritmo que receba um determinado valor e informe se ele é divisível por 10,
ou é divisível por 5, ou é divisível por 2 ou senão por nenhum destes.
Program divisor;
Var
N: integer;
Observe que o operador lógico
Begin
‘or’ foi utilizado para verificar
Writeln(‘Digite o numero:’);
se o numero recebido era
divisível por pelo menos um
Readln(N);
dos valores (10, 5 ou 2).
IF (N mod 10 = 0) or (N mod 5 = 0) or (N mod 2 = 0) then
Begin
Writeln(‘O numero é divisível por 10, 5 ou 2’);
End
FRISANDO: Não se usa o ‘ ; ‘ antes do else.
Else
Begin
Writeln(‘O numero nao é divisível por 10,5 ou 2’);
End;
End.
RELEMBRANDO: Verifique que a questão também utiliza de outro artifício para avaliar se o
número recebido é ou não divisível pelos valores 10, 5 ou 2. Através do comando “MOD”. Além desse
comando que analisa se o resto da divisão é 0, podemos também analisar o quociente de uma
divisão através, do comando “DIV”.
MOD
10 2
0 5
DIV
 Um exemplo de algoritmo, no qual esses dois comandos serão super úteis, é a transformação
de valores em números Binários. Observe como fazemos isso:
Program bi;
Var
quo, rest, x: integer;
result: string;
Begin
result:=’ ‘;
Writeln(‘Digite um número:’);
Readln(x);
While (X <> 0) do //pára quando o
{quociente for igual a ‘0’}
Begin
quo:= X div 2; //calcula o quociente
rest:=X mod 2; //calcula o resto
X:=quo; {guarda o valor do quociente
em ‘X’ para que ele possa ser dividido
novamente}
If (rest = 0) then
result:= ‘0’ + result
Else
result:= ‘1’ + result;
End;
Writeln(result);
End.

18 2
0 9 2
1 4 2
0 2 2
0 1 2
1 0
18 em Binário é:
10010
DIV
MOD
Como os resultados
encontrados são strings e
necessitamos que eles sejam
organizados em ordem
inversa, a melhor forma é
concatená-los, ou seja, por um
ao lado do outro.
TIPOS DE VARIÁVEIS:
Quando criamos um algoritmos utilizamos uma sub-área na qual denominamos de VAR, nela fazemos
a declaração de variáveis que serão utilizadas no decorrer da execução de um programa, bem como,
também o seu tipo. Vejamos alguns tipos:
VARIÁVEIS
INTEGER
REAL
STRING
CHAR
BOOLEAN
Declara valores inteiros;
Declara valores decimais;
São considerados tipos caracteres: letras, números e símbolos especiais. São
representadas entre apóstrofos (‘ ‘).
É usado para strings de apenas um caractere. Exemplo: sexo: char; onde será
utilizado: F ou M.
São dados com valores lógicos true (verdadeiro) ou false (falso).

ESTRUTURAS DE REPETIÇÃO
Instrução for... to/downto... do: Executa repetitivamente um comando enquanto é atribuída
uma série de valores a uma variável de controle (contador do FOR).

Faça um programa que imprima na tela as tabuadas de 1 a 10.
Program tabuada;
Var
N, cont, res: integer;
Begin
For N:=1 to 10 do
Begin
For cont:=1 to 10 do
Begin
Res:=N*cont;
Writeln(N, ‘*’, cont, ‘=’ , res, ‘ ‘);
End;
Readln; //aguarda
End;
End.
Utilizando duas estruturas de
repetição for, conseguimos
fazer com que N se torne fixo
até que cont vai se
modificando até o valor 10.
Instrução while...do: Efetua um teste lógico no início de um loop, verificando se é permitido a
execução dos trechos nela contido.

Faça um programa que receba dois números, calcule e imprima um elevado ao outro.
Program potencia;
Var
B, E, i, result: integer;
Begin
Writeln(‘Digite o valor da base:’);
Readln(B);
Writeln(‘Digite o valor do expoente:’)
Readln(E);
i:=1;
result:=1;
While (i < = E) do
Begin
result:=B*result;
i:=i+1;
End;
Writeln(‘O resultado é:’, result);
End.
Nesse caso o while através da
condição consegue controlar
até onde a base será
multiplicada por ela mesma,
já que a variável ‘i’ esta
aumentando seu valor a cada
interação.
Instrução repeat...until: Essa instrução efetuará a execução de um conjunto de instruções pelo
menos uma vez antes de verificar a validade da condição estabelecida, assim como o while ela
também efetua um teste lógico só que agora no final de um looping. É importante destacar que a
repetição será executada até que a condição se torne VERDADEIRA.
 Leia uma variável X inúmeras vezes (parar quando o valor digitado for <=0). Para cada valor
lido mostre a sequência de 1 até o valor lido.
Program qtrepeat;
Var
X, i: integer;
Begin
Repeat
Writeln(‘Digite o valor de X:’);
Readln(X);
For i:=1 to X do
Begin
Write(i, ‘ ‘);
Writeln;
Until (X <=0);
End.
DICA: O repeat geralmente é muito utilizado quando se quer perguntar ao usuário se ele deseja
continuar efetuando a execução do programa.
 LENGHT
É utilizada para determinar o número de caracteres x, por exemplo, quantos caracteres existem em
uma palavra ou frase.
Vejamos alguns exemplos:
 Crie um programa que receba uma frase e conte e imprima o número de caracteres nela
contido (ignore os espaços).
Program qtfrase;
Var
X, frase: string;
i, cont: integer;
Quando uma frase ou palavra
Begin
é atribuída em Lenght, ele a
Cont:=0;
transforma em um vetor de
Writeln(‘Digite uma frase:’);
caracteres dando-nos assim, a
Readln(frase);
possibilidade de contá-los e
X:=length(frase);
manipulá-los.
For i:=1 to X do
Begin
cont:=cont+1;
End;
Writeln(‘A frase tem: ’, cont, ‘ caracteres.’);
End.

VETORES E MATRIZES
Ao utilizarmos variáveis, podemos armazenar apenas um valor por vez, utilizando vetores e matrizes
conseguimos agrupar várias informações de uma mesma variável, no entanto, elas só podem ser de
um tipo (string, real, integer...).
Vejamos:
 Faça um programa que leia um vetor N[20]. Troque a seguir, o 1º elemento com o último, o
2º elemento com o penúltimo, etc..., até trocar o 10º com o 11º. Mostre o vetor modificado.
Program troca;
Var
N: array [1..20] of integer;
j, i aux: integer;
Begin
i:=0;
j:=20;
For i:=1 to 20 do
Begin
Writeln(‘Digite o número:’);
Readln(N[i]);
End;
while i <> j do{faz com que a troca pare no momento
em que os índices se tornam iguais.}
Begin
Aux:=N[i];
Observe essa lógica, onde está
ocorrendo a troca dos
N[i]:=N[j];
elementos.
É utilizado uma
N[j]:=aux;
variável auxiliar para que
i:=i+1;
nenhum dos valores se perca.
j:=J-1;
End;
For i:=1 to 20 do
Writeln(N[i], ‘ ‘ );
End.

Escreva um algoritmo que leia uma matriz M(5,5). Em seguida calcule as somas:
a. Da linha 4 de M;
b. Da coluna 2 de M;
c. Da diagonal principal;
d. Da diagonal secundária;
e. De todos os elementos da matriz M;
Exibir todas as somas da matriz.
Program matriz;
Var
M: array [1..5, 1..5] of integer;
l, c, ST, Scol2, Slin4, Sdp, Sds: integer;
Begin
Randomize;
ST:=0; Scol2:=0; Slin:=0; Sdp:=0; Sds:=0;
ATENÇÃO: A matriz será
For l:=1 to 5 do
preenchida com os valores
entre 0 e 29.
Begin
For c:=1 to 5 do
Begin
M[l,c]:= random(30);{preenchendo a matriz
com valores aleatórios}
End;
End;
For l:=1 to 5 do
Begin
For c:=1 to 5 do
Begin
ST:=M[l,c]+ST;
Scol2:=M[l,2]+Scol2;
Slin4:=M[4,c]+Slin4;
If (l = c) then
Regra da diagonal
Sdp:=M[l,c]+Sdp;
secundária:
If (l+c = 5+1) then
Quando a linha + a coluna é
Sds:=M[l,c]+Sds;
igual à ordem da matriz +1.
End;
End;
For l:=1 to 5 do
begin
For c:=1 to 5 do
begin
Write (M[l,c], ‘ ‘ );
End;
Writeln;
End;
Writeln;
Writeln(ST);
Writeln(Scol2);
Writeln(Slin4);
Writeln(Sdp);
Writeln(Sds);
End.
 REGISTRO
 Faça um registro que receba do usuário uma lista de N nomes e idades de pessoas, onde N
também é fornecido pelo usuário, e mostrar o nome e a idade da pessoa mais idosa e da pessoa mais
jovem. // ORIGINAL// Foi necessário fazer modificações nessa questão devido a erros de lógica,
então estipularemos um valor para “N”, N:=5;
Program qt1reg;
type
pessoa=record
nome:string;
idade:integer;
end;
var
grupo:array[1..5] of pessoa;
i,posi,posi2,maior,menor:integer;
Begin
posi:=0;
posi2:=0;
for i:=1 to 5 do
begin
writeln('Digite o nome:');
readln(grupo[i].nome);
writeln('Digite a idade:');
readln(grupo[i].idade);
end;
maior:=0;//será substituído pelo maior valor//
menor:=grupo[1].idade;//será substituído pelo menor valor//
for i:=2 to 5 do{inicia a partir do índice 2, pois será comparado com o
menor que já contém primeiro elemento}
begin
if menor> grupo[i].idade then
begin
menor:=grupo[i].idade;
posi:=i;//guarda a posição do menor valor//
end;
if maior<grupo[i].idade then
begin
maior:=grupo[i].idade;
posi2:=i;//guarda a posição do maior valor//
end;
end;
writeln( grupo[posi2].nome, ' tem idade: ', maior, ' MAIS IDOSO(A)');
writeln( grupo[posi].nome, ' tem idade: ', menor, ' MAIS JOVEM' );
End.
End.
ORDENAÇÃO (QUESTÃO EXTRA) – PARA OBSERVAÇÃO:
Program Ordenando_vetor_Jeanderval;
var {local de declaração de variáveis}
a:array[1..20] of integer;
b:array[1..20] of integer;
aux: integer;
x,i,linha: integer;
v:boolean;
Begin
linha:=0;
v:=false;
writeln('vetor b');
writeln;
for i:=1 to 20 do
begin
a[i]:=random(1000); {gera números aleatórios}
end;
for i:=1 to 20 do
begin
write (' ',a[i]); {exibindo dados do vetor a não ordenado}
end;
writeln;//serve apenas para pular um linha
for x:=1 to 20 do
begin
aux:=a[x];
for i:=(x+1) to 20 do
begin
if aux > a[i] then
begin
v:=true;
linha:=i;
aux:=a[i];
end;
end;
//Se houver erro(s) nessa lógica, comunique através do e-mail:
if v then
//[email protected]
begin
//algoritmo disponível em:
a[linha]:=a[x];
//http://www.experimentall.anoivanet.com.br
a[x]:=aux;
v:=false;
end;
b[x]:=aux;
end;
writeln;
writeln('vetor b');
for i:=1 to 20 do
begin
write (' ',b[i]); {exibindo dados do vetor b ordenado}
end;
writeln;
writeln('vetor a');
for i:=1 to 20 do
begin
write (' ',a[i]); {exibindo dados do vetor a ordenado}
end;
End.
Esta questão tem autoria de Jeanderval e encontra-se disponível no site:
http://www.experimentall.anoivanet.com.br/control/Controller.php?business=LinkLogic&
url=algoritmo.php
Olá pessoal, fiz esse pequeno manual por precaução, como vamos fazer uma prova final então
cairão todos os assuntos já abordados, achei importante relembrarmos algumas questões anteriores.
Gostaria que não levassem em consideração os erros de concordância, caso encontrem algum
equivoco vocês terão todo o direito pra fazer qualquer tipo de observação, fiz tudo na pressa, porém
com a melhor das intenções.
Desejo boa sorte a todos!
Atenciosamente, Jackeline Barbosa Moreira.
Download

Algoritmo com Jack - Experimentall.org