Buscar

Aula 4 - Algoritmos e Programação

Prévia do material em texto

FUNDAÇÃO EDUCACIONAL DE CARATINGA – FUNEC 
CENTRO UNIVERSITÁRIO DE CARATINGA – UNEC 
NÚCLEO DE ENSINO A DISTÂNCIA - NEAD 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ALGORITMOS E PROGRAMAÇÃO 
LINA 
Talles Penini 
ENGENHARIA 
 
 
CENTRO UNIVERSITÁRIO DE CARATINGA GRADUAÇÃO 
UNEC / EAD ALGORITMOS E PROGRAMAÇÃO 
 
 
NÚCLEO DE ENSINO A DISTÂNCIA - NEAD Página | 2 
Professor: Talles Penini – sistemadeinformacaoead@funec.br 
3.5 Comandos de entrada e saída 
 
As linguagens de programação permitem que os usuários consigam inserir dados 
através do teclado do computador e de receber retornos do computador por meio do 
monitor de vídeo. 
Vimos que os dados são armazenados na memória do computador através de 
variáveis, que são endereços físicos de memória. Para nós seres humanos esta 
localização não nos interessa. Utilizamos de nomes que nos permite identificar do 
que se trata o dado, facilitando a identificação das informações trabalhadas. 
Veremos um exemplo simples de um programa que irá nos apresentar os comandos 
de entrada ou leitura de dados pelo teclado (read) e de saída ou impressão de 
informações na tela (write). 
 
 
 
 
 
 
 
 
 
 
O programa acima possui somente dois comandos, primeiramente ele irá realizar a 
leitura (read) da variável a, o usuário deverá informar um valor para que o programa 
possa prosseguir para o próximo passo. O valor digitado pelo usuário será 
armazenado na memória do computador no endereço reservado para a variável. O 
segundo comando é responsável por escrever (write) na tela o valor da variável a. O 
computador irá acessar o endereço reservado para a variável e exibirá o valor 
contido naquele endereço de memória. 
 
Ao declararmos uma variável precisamos informar o tipo de dado que será 
associado a ela. Na linguagem Pascal toda variável deverá ter um tipo de dado, 
dessa forma será alocado na memória um espaço referente ao tipo do dado. Neste 
caso chamamos a linguagem de fortemente tipada, o que significa que o computador 
espera um determinado tipo para alocar um espaço compatível. Caso o usuário 
digite uma informação diferente do tipo declarado o programa exibirá um erro. 
Abaixo temos a descrição da sequência do programa: 
 
1. Inicialmente será reservado o espaço de memória para a variável a, referente ao 
tamanho de dados do tipo integer; 
 
2. A primeira instrução (read) irá ler um dado informado por um usuário ao digitar um 
valor utilizando o teclado. O valor será armazenado no espaço de memória referente 
program entrada_saida; 
var a: integer; 
 
begin 
 read(a); 
 write(a); 
end. 
 
CENTRO UNIVERSITÁRIO DE CARATINGA GRADUAÇÃO 
UNEC / EAD ALGORITMOS E PROGRAMAÇÃO 
 
 
NÚCLEO DE ENSINO A DISTÂNCIA - NEAD Página | 3 
Professor: Talles Penini – sistemadeinformacaoead@funec.br 
à variável a. 
 
3. A segunda instrução (write) irá buscar o valor de a no endereço de memória 
referente à variável e imprimi-lo na tela. 
 
4. Ao encontrar o end o programa se encerra. 
 
 
3.5 Atribuições e expressões aritméticas 
 
O símbolo utilizado em Pascal para atribuirmos um valor para uma variável é :=, ou 
seja, o endereço de memória reservado para a variável irá conter o valor atribuído. A 
esquerda do símbolo de atribuição teremos o nome da variável que deverá ser 
único. A direita do símbolo teremos os valores que serão atribuídos a variável, os 
dados inseridos deverão ser do mesmo tipo da variável declarada. 
 
Veremos o exemplo abaixo que implementa uma solução para o calculo de uma 
equação de segundo grau: 
 
Exemplo: x² - bx + c = 0 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
O código acima apresenta elementos bastante utilizados nas linguagens de 
programação. Primeiramente temos o nome do programa, as variáveis declaradas 
que serão utilizadas para realizar o cálculo. A próxima etapa inicia-se as 
leituras dos valores das variáveis, é realizado o cálculo da raiz discriminante e é 
escrito na tela os resultados. 
 
 
Neste caso foram declaradas variáveis do tipo real: 
 
var b, c, raizdiscriminante: real; 
 
program bhaskara; 
var b, c , raizdiscriminante : real; 
 
begin 
 read (b) ; 
 read (c) ; 
 raizdiscriminante:= sqrt(b*b – 4*c) ; 
 write ((b - raizdiscriminante)/2) ; 
 write ((b + raizdiscriminante)/2) ; 
end. 
 
CENTRO UNIVERSITÁRIO DE CARATINGA GRADUAÇÃO 
UNEC / EAD ALGORITMOS E PROGRAMAÇÃO 
 
 
NÚCLEO DE ENSINO A DISTÂNCIA - NEAD Página | 4 
Professor: Talles Penini – sistemadeinformacaoead@funec.br 
O programa realiza: 
 
1. Um primeiro comando de leitura, da variável b: read(b); 
 
2. Um segundo comando de leitura, da variável c: read(c); 
 
3. Um comando de atribuição para a variável raizdiscriminante. Este comando faz 
uso de uma expressão aritmética raizdiscriminante:= sqrt(b*b - 4*c); 
 
4. Um primeiro comando de impressão, de uma outra expressão aritmética: 
write((b - raizdiscriminante)/2); 
 
5. Um segundo comando de impressão, de uma terceira expressão aritmética: 
write((b + raizdiscriminante)/2); 
 
 
3.6 Variáveis e expressões booleaneas 
 
As expressões booleanas, também conhecidas como expressões lógicas, são 
utilizadas para resultar em um valor do tipo boolean, que passa a ser o terceiro tipo 
básico da linguagem Pascal. O tipo boolean só pode conter dois valores: verdadeiro 
(true) e falso (false). O caso mais simples de uma expressão booleana é uma 
variável do tipo boolean. Por exemplo: 
 
var valor: boolean; 
valor := true; 
 
As expressões lógicas ou booleanas são utilizadas para valores verdadeiro (true) ou 
falso (false). No caso mais simples da utilização de valores booleanos temos uma 
variável recebendo um valor diretamente true ou false. Existem também outras 
formas de utilizar valores booleanos como expressões aritméticas juntamente com 
operadores relacionais, que são: estritamente maior (>), maior ou igual (>=), 
estritamente menor (<), menor ou igual (<=), igual (=) e diferente (<>). É possível 
também usatilizar conectivos lógicos, que são: o ou lógico (OR), o e lógico (AND) e a 
negação lógica (NOT). Alguns exemplos de expressões booleanas deste tipo são: 
 
• b > 0: b é estritamente maior do que zero; 
 
• c + d = w + z: a soma de a com b é igual à soma de w com z; 
 
• sqrt(b*b + 4*a+c) >= 0: a raiz quadrada do discriminante de uma equação 
 
CENTRO UNIVERSITÁRIO DE CARATINGA GRADUAÇÃO 
UNEC / EAD ALGORITMOS E PROGRAMAÇÃO 
 
 
NÚCLEO DE ENSINO A DISTÂNCIA - NEAD Página | 5 
Professor: Talles Penini – sistemadeinformacaoead@funec.br 
do segundo grau é positiva ou nula, isto é, não é negativa. 
 
• (b >= 4) AND (b <= 6): b está no intervalo 4 ≤ b ≤ 6. Observação: não pode 
escrever 4 <= b <= 6, o compilador rejeita. 
 
• NOT ((b >= 4) AND (b <= 6)): resulta no valor contrário à da expressão anterior, 
isto é, b deve ser estritamente menor do que 4 OU estritamente maior do que 6. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3.6.1 Decisão composta 
 
Em determinadas situações necessitamos que uma estrutura de decisão realize 
outra instrução caso a condição inicial não seja atendida, ou seja, a condição é falsa. 
Para isso utilizamos de uma estrutura chamada de decisão composta. Veremos 
abaixo um exemplo de um pseudocódigo de uma decisão composta: 
 
 
 
 
 
 
 
 
 
 
 
Na linguagem Pascal, utilizamos a palavra else, após a instrução ou bloco de 
instruções do if, para definir que queremos executar um outro conjunto de 
instruções, caso a expressão condicional seja falsa. 
 
 
 
 
 
program exemplo1; 
var a: integer; 
 
begin 
 read(a); 
 if (a < 10) then 
 write(“O valor informado é menor que 10”); 
end. 
LEIA nota 
SE nota >= 7 ENTÃOESCREVA "Aprovado" 
SENÃO 
 ESCREVA "Reprovado" 
 
 
 
 
 
 
 
CENTRO UNIVERSITÁRIO DE CARATINGA GRADUAÇÃO 
UNEC / EAD ALGORITMOS E PROGRAMAÇÃO 
 
 
NÚCLEO DE ENSINO A DISTÂNCIA - NEAD Página | 6 
Professor: Talles Penini – sistemadeinformacaoead@funec.br 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3.7 Estrutura de repetição 
 
Considerando a necessidade de um algoritmo de repetir um conjunto de passos a 
serem realizados, precisamos utilizar uma estrutura que nos permita realizar o 
procedimento sem que seja necessário repetir determinado comando várias vezes. 
Para isso temos as estruturas de repetições que nos permitem que uma instrução ou 
um bloco de instruções seja repetido evitando a necessidade de replicar um mesmo 
código. Estruturas como estas são conhecidas também como estruturas de laço ou 
de iteração. 
 
Quando existir a necessidade de imprimir números de 1 a 10 não será necessário 
replicar o comando de impressão, para isso utilizaremos as estruturas de repetições. 
Essas estruturas facilitam, simplificam e ajudam na otimização do código de um 
algoritmo. 
 
Primeiramente veremos um exemplo sem o uso de estruturas de repetições: 
 
 
 
 
 
 
 
 
 
 
 
program exemplo2; 
var nota: integer; 
 
begin 
 read(a); 
 if (nota >= 7) then 
 write(‘Aprovado’); 
 else 
 write(‘Reprovado’); 
end. 
program contar ; 
begin 
 
write (1) ; 
write (2) ; 
write (3) ; 
write (4) ; 
write (5) ; 
write (6) ; 
write (7) ; 
write (8) ; 
write (9) ; 
write (10) ; 
 
end. 
 
CENTRO UNIVERSITÁRIO DE CARATINGA GRADUAÇÃO 
UNEC / EAD ALGORITMOS E PROGRAMAÇÃO 
 
 
NÚCLEO DE ENSINO A DISTÂNCIA - NEAD Página | 7 
Professor: Talles Penini – sistemadeinformacaoead@funec.br 
Oberve que para realizar a contagem foi necessário reescrever o comando write 
para cada número. Veremos agora o código para o mesmo algoritmo utilizando laços 
de repetição. 
 
 
 
 
 
 
 
 
 
 
 
Como podemos ver o código foi simplificado, não sendo mais necessária a repetição 
do comando write (escreva) por várias vezes. Ao entrar na estrutura de repetição 
while (enquanto) o programa irá escrever o valor da variável i e posteriormente 
somará mais um, o laço será executado até que o valor de i seja maior que 10. 
 
Veremos agora outro exemplo do uso de laços de repetição. O programa irá solicitar 
a entrada de notas de alunos e irá imprimir “Aprovado” caso a nota seja maior ou 
igual a 7 e “Reprovado” para notas menores que 7. Para sair do programa será 
necessário inserir o valor -1, o valor fará com o programa saia do laço de repetição. 
Abaixo temos o programa em pseudocódigo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
program contar ; 
var i : integer; 
 
begin 
 
i:= 1; 
while i <= 10 do 
begin 
 writeln ( i ) ; 
 i:= i + 1; 
end; 
 
end. 
LEIA nota 
ENQUANTO nota <> -1 FAÇA 
 SE nota >= 7 ENTÃO 
 ESCREVA "Aprovado” 
 SENÃO 
 ESCREVA "Reprovado” 
LEIA nota 
FIM-ENQUANTO 
 
CENTRO UNIVERSITÁRIO DE CARATINGA GRADUAÇÃO 
UNEC / EAD ALGORITMOS E PROGRAMAÇÃO 
 
 
NÚCLEO DE ENSINO A DISTÂNCIA - NEAD Página | 8 
Professor: Talles Penini – sistemadeinformacaoead@funec.br 
Veja agora o exemplo convertido para a linguagem de programação Pascal: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Vimos que utilizando estruturas de repetição evitamos repetições desnecessárias de 
código e que facilitam para o programador ao desenvolver um algoritmo. 
 
3.7.1 Critério de parada 
 
Uma estrutura de repetição necessita de uma variável de controle, onde será 
possível estabelecer o momento em que o laço de repetição será finalizado. É 
preciso ficar atento para que o as repetições não se tornem infinitas, caso isto 
aconteça o programa poderá travar e consumir toda memória disponível. 
 
As condições de parada podem ser diversas, um usuário poderá inserir determinada 
informação que fará com que o laço de repetição se encerre ou após um 
determinado número de repetições o laço será finalizado, isso dependerá da 
necessidade e da situação esperada. 
 
 
program nota_alunos ; 
var nota : real; 
 
begin 
 
 while nota <> -1 do 
 begin 
 read(a); 
 if (nota >= 7) then 
 write(‘Aprovado’); 
 else 
 write(‘Reprovado’); 
 end; 
 
end. 
 
CENTRO UNIVERSITÁRIO DE CARATINGA GRADUAÇÃO 
UNEC / EAD ALGORITMOS E PROGRAMAÇÃO 
 
 
NÚCLEO DE ENSINO A DISTÂNCIA - NEAD Página | 9 
Professor: Talles Penini – sistemadeinformacaoead@funec.br 
Referências 
 
DE SOUZA, Bruno Jefferson; JÚNIOR, José Jorge Lima Dias; FORMIGA, Andrei de 
Araújo. Introdução a Programação. João Pessoa: UFPB, 2014. 
VASCONCELOS, José; REIS, Luís Paulo. Introdução à Algoritmia e Estrutura de 
Dados. Universidade Fernando Pessoa, 2002. 
CASTILHO, Marcos; SILVA, Fabiano; WEINGAERTNER, Daniel. Algoritmos e 
Estruturas de Dados I, 2020. 
DAURICIO, Juliana Schiavetto. Algoritmos e lógica de programação. Londrina: 
Editora e Distribuidora Educacional S.A., 2015. 
Puga, Sandra; Rissetti, Gerson. Lógica de Programação e Estruturas de Dados. 
São Paulo: Pearson, 2016. 
 
	3.5 Comandos de entrada e saída
	3.5 Atribuições e expressões aritméticas
	3.6 Variáveis e expressões booleaneas
	3.7 Estrutura de repetição
	3.7.1 Critério de parada

Continue navegando

Outros materiais