Baixe o app para aproveitar ainda mais
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
Compartilhar