Portugol Linguagens de Programação Objetivo Principal • O aluno deverá estar apto a raciocinar e desenvolver a sua capacidade de abstração, para a criação de algoritmos e programas elementares. Contextualizando • As técnicas de programação serão vistas através da utilização de uma pseudolinguagem em português, denominada "Portugol". Assim, o aluno poderá escrever algoritmos e aplicar as técnicas de desenvolvimento para serem usadas com qualquer linguagem de programação. Portugol - Objetivo • Introdução ao Portugol para o desenvolvimento de algoritmos, declaração de variáveis, desvio condicional, laços de repetição. Algoritmo • Algoritimo é um conjunto de instruções executadas em sequência até determinada condição. Digamos assim, para nós humanos é muito fácil mandar alguém abrir uma porta. A pessoa vai e abre, mas imagine se você fosse pedir para um computador/robô abrir uma porta. O que aconteceria? Para o computador/robô conseguir abrir a porta você teria que colocar uma série de comandos em sequência para que ele executasse um por um até abrir a porta. Ex: 1º - Levante, 2º Vire-se 30 graus para a direita, 3º Dê 5 passos para frente, 4º levante o braço 25 cm, 5º coloque a mão na maçaneta, 6º Gire a maçaneta 90 graus no sentido anti horário, 7º Puxe a porta. • A máquina precisa receber todos os passos de um processo para conseguir executá-lo, como se fosse uma receita. Isso é algoritmo. Algoritmo – Resumindo... • Algoritmo = como definir o problema, esquematizar, exercício do raciocínio; • Técnicas de programação = como operacionalizar, recursos, exercício da implementação. Exemplo a) Seqüência de ações para chegar ao trabalho/universidade: Acordar → levantar → tomar café → pegar o ônibus Ou → chegar ao destino → pegar o carro • Note que, para cada ação acontecer, é necessário que a ação imediatamente anterior tenha sido executada. • Note também que, cada ação pode conter outros eventos associados (outros algoritmos). Algoritmo em Portugol • Um algoritmo é de forma geral, uma descrição passo a passo de como um problema pode ser solucionado. A descrição deve ser finita, e os passos devem ser bem definidos sem ambiguidades" [Terada] . A razão da existência do algoritmo vem da dissonância entre um estado desejado e aquele observado na realidade. • Algoritmo não é a solução de um problema, mas é o meio de obtê-la. A resolução de um problema envolve vários parâmetros que devem ser organizados através de alguma técnica formal. Algoritmo em Portugol As técnicas de desenvolvimento estruturado de algoritmos, tem o objetivo de: • Facilitar o desenvolvimento de algoritmos; • Facilitar o seu entendimento pelos operadores; • Antecipar a correção; • Facilitar manutenção e modificações; • Permitir que o desenvolvimento seja feita por uma equipe de pessoas. Algoritmo em Portugol • Uma técnica formal afasta a possibilidade de uma ambiguidade. Ou seja, a partir de dadas condições iniciais a execução do algoritmo será realizada por um mesmo "caminho" (sequência de ações), que deve resultar num mesmo estado final. Uma destas técnicas é o Portugol. Algoritmo em Portugol • Portugol é uma pseudolinguagem que permite ao programador pensar no problema em si e não no equipamento que irá executar o algoritmo. Devem ser considerados a sintaxe (em relação à forma) e a semântica (em relação ao conteúdo ou seu significado). Em Portugol a sintaxe é definida pela linguagem e a semântica depende do significado que quer se dar ao algoritmo. • No Portugol e nas linguagens de programação, basicamente têm-se comandos e variáveis que operacionalizam a execução de um algoritmo. Estes comandos são executados sequencialmente, de forma que um comando só será executado após a finalização do comando anterior. Algoritmo em Portugol A estrutura de um algoritmo em portugol pode ser dada como: • Exemplo: início <declarações de variáveis> <comandos> fim Variáveis • Variáveis como o próprio nome diz, são as partes de um algoritmo que vão variar. Elas podem servir para armazenar resultados de operações, armazenar a entrada de dados do usuário e por aí vai. De um modo geral variáveis servem para armazenar na memória RAM de um computador dados que posteriormente serão processados. Tipos de Variáveis No Portugol, os tipos básicos de variáveis são: • Inteiro: Qualquer número inteiro (negativo, nulo ou positivo). Exemplo: -100, 0, 1, 2, 1250. • Real: Qualquer número real, nulo ou positivo. Exemplo: -10, -1.5, 11.2, 0,1, 2, 50. • Caracter: Caracteres alfanuméricos. Exemplo: casa, Win31, 123, alfa#2, etc... • Lógico: valor lógico verdadeiro ou falso Exemplo: x > y ? Constante • Uma constante é um valor fixo, que não se modifica ao longo do tempo, durante a execução do programa. Em algoritmos representaremos constantes pelo tipo const. Exemplo: const M 10; Operadores Aritméticos Os símbolos das operações básicas são: • A multiplicação é dada através do operador * (asterisco); – Exemplo: z <- x * y; • A soma é realizada através do operador + ; – Exemplo: z <- x + y; • A subtração é dada através do operador -; – Exemplo: z <- x - y; • A divisão para real será dada por / ; – Exemplo: z <- x / y; • A divisão para inteiro será dada por div ; – Exemplo: z <- x div y; • O resto de uma divisão é dada pelo comando mod . – Exemplo: z <- x mod y; • O cálculo de x elevado à y é dado pelo símbolo ^ . – Exemplo: z <- x^y; • A raiz de uma valor é extraída através do comando raiz() . – Exemplo: z <- raiz(x); Exemplo Observações sobre o exemplo • O inconveniente deste algoritmo é que sempre fornecerá o mesmo resultado, o que não é interessante. De maneira mais correta, os valores de x e y podem ser fornecidos pelo usuário, permitindo ao algoritmo que efetue a soma de dois números quaisquer. - Neste exemplo podemos observar que o resultado da soma de x + y será armazenado em z. Como o usuário ficará sabendo da resposta ? É necessário usar comandos de escrita, para apresentar os resultados. Entrada e Saída de Dados • Na construção de algoritmos, é conveniente que o usuário possa informar dados externos, para serem operados pelo programa. Assim, um programa pode receber um dado informado por um operador através de um comando de leitura. Da mesma forma, pode ser necessário conhecer o resultado de determinada operação executada pelo computador, então será necessária uma forma de exibir os dados. Entrada e Saída de Dados • Cada linguagem tem uma forma específica para entrada e saída de dados. Em algoritmos usaremos os comandos genéricos leia() e escreva(), para realizar a interface com o usuário. Entrada e Saída de Dados Regras para escrever Algoritmos em Portugol • Incluir comentários pelo menos nas linhas mais importantes do programa; • Usar nomes significativos para as variáveis e constantes, que possam identificar o conteúdo; • Grifar as palavras chaves do Portugol; • Alinhar os comandos facilita a legibilidade do algoritmo e reduz a possibilidade de erros. Exemplo Algoritmo Inicio algoritmo “Exemplo”; variaveis idade: inteiro; nome: caractere; inicio escreva “Informe seu nome: “; leia nome; escreva “Informe sua idade: “; leia idade; escreva “Você se chama”, nome, “e possui”, idade, “anos!”; fim Fim algoritmo Exercícios • Em uma folha nomeada, elabore os algoritmos a seguir: Exercício 1 • Desenvolva um algoritmo em Portugol para multiplicar 3 valores a serem informados pelo usuário e que seja demonstrado em tela. Exercício 2 • Desenvolva um algoritmo em Portugol para somar 4 valores a serem informados pelo usuário e que seja demonstrado em tela. Exercício 3 • Desenvolva um algoritmo em Portugol para subtrair 2 valores a serem informados pelo usuário e que seja demonstrado em tela. Exercício 4 • Desenvolva um algoritmo em Portugol para dividir 2 valores para tipo Real a serem informados pelo usuário e que seja demonstrado em tela. Exercício 5 • Desenvolva um algoritmo em Portugol para dividir 2 valores para tipo Inteiro a serem informados pelo usuário e que seja demonstrado em tela. Exercício 6 • Desenvolva um algoritmo em Portugol para elevar o número 5 à terceira potência e que seja demonstrado em tela. Exercício 7 • Desenvolva um algoritmo em Portugol para encontrar a raíz quadrada do número 49 e que seja demonstrado em tela. Exercício 8 • Desenvolva um algoritmo em Portugol com as variáveis “nome” e “matrícula” donde o usuário digite as informações e que seja demonstrado em tela. Estruturas Condicionais • As estruturas condicionais são utilizadas quando há uma condição que desvia o fluxo do programas para diferentes partes, dependendo do fato de a condição ser verdadeira ou falsa. Na condição das estruturas condicionais, utilizam-se os operadores relacionais (<, >, =, <=, >=, <>) para as comparações, observando suas características particulares • As estruturas condicionais dividem-se em estrutura SE e estrutura ESCOLHA/CASO. • A estrutura condicional SE é a estrutura mais flexível, podendo acontecer de várias formas, dependendo do fato de a condição ser satisfeita ou não e do fato de cada desvio do fluxo poder ou não ter outros comandos antes da finalização da estrutura. • a) Estrutura Condicional SE Simples • As instruções contidas dentro do laço condicional SE serão executadas somente se a condição retornar um resultado verdadeiro se (A = 1) então escreva “Um”; fim_se; se (A = 2) então escreva “Dois”; fim_se; se (A = 3) então escreva “Três”; fim_se. Inicio algoritmo “ExMedia”; variáveis nome: caractere; nota_1, nota_2, media: real; contador: inteiro; início media ← 0; contador ← 1; enquanto (contador<=30) faça escreva (“Nome do aluno: “); leia(nome); escreva (“Primeira nota: “); leia(nota_1); escreva(“Segunda nota: “); leia(nota_2); media ← (nota_1 + nota_2)/2; se (media<=3,0) então escreva(nome, media, ”Rep.”); senão se(media>=6,0) então escreva(nome, media, “Apr.”); senão escreva(nome, media, “Rec.”); fim se; fim se; contador ← contador + 1; fim enquanto; Fim. Exercícios • Escreva um algoritmo em Portugol para calcular a média entre dois números quaisquer. Resposta Algoritmo • A idéia principal do algoritmo está centrada na expressão matemática utilizada no cálculo da média (M) entre dois números, N1 e N2, dada por: M = (N1 + N2) / 2 • Para que o valor de M possa ser calculado pelo algoritmo, é necessário que os valores de N1 e N2 tenham sido fornecidos ao mesmo com antecedência. Portanto, a primeira etapa do algoritmo consiste da obtenção (leitura) dos valores de N1 e N2 e armazenamento dos mesmos em posições distintas de memória (variáveis). • Na seqüência, o valor da média deve ser calculado por meio de uma expressão apropriada e atribuído a uma terceira variável (M). • Por fim, deve-se relatar ao usuário o valor calculado por meio de uma instrução primitiva de saída de dados. Resposta Algoritmo • A transformação do fluxograma em pseudocódigo exige a disponibilidade de algumas informações adicionais concernentes ao tipo das variáveis utilizadas. Como o algoritmo opera apenas com dados numéricos, certamente as variáveis utilizadas serão do tipo inteiro ou real. Como se deseja calcular a média entre dois números quaisquer, então as variáveis N1 e N2 devem ser capazes de armazenar números com ou sem parte fracionária e, portanto, é necessário que estas sejam do tipo real. Como o valor médio entre dois números reais é um número que pode ou não ter parte fracionária, então a variável M também deve ser do tipo real. • De posse dessa informação, pode-se escrever o pseudocódigo do algoritmo em questão, a partir de seu fluxograma. Solução Algoritmo MEDIA Var N1, N2, M : real Início Escreva “Algoritmo para calcular a média entre dois números” Escreva “Digite o primeiro número: ” Leia N1 Escreva “Digite o segundo número: ” Leia N2 M ← (N1 + N2) / 2 Escreva “O valor da média é:”, M • Fim.