Você está na página 1de 4

Resumo de G-Portugol

Emannuel - Fanor
15/10/2011 Versao 1 G-Portugol um dialeto da linguagem/pseudo-cdigo portugol (ou portugs estruturado), que muito usada para descrever algoritmos em portugus, de forma livre e espontnea. Em geral, livros dedicados ao ensino de algoritmos, lgica e estruturas de dados utilizam alguma forma dessa linguagem. A proposta de G-Portugol disponibilizar uma implementao da linguagem portugol, fornecendo ferramentas que ofeream recursos de edio, compilao, execuo e depurao de programas escritos nessa linguagem, de forma a favorecer estudantes que do os primeiros passos no aprendizado de desenvolvimento de softwares e algoritmos. Portanto, seu foco primariamente didtico. Em breve ser disponibilizada a verso 2.0 do gpt. A linguagem case sensitive, o que significa que, por exemplo, uma funo chamada "leia" diferente de uma funo chamada "Leia". TIPOS DE DADOS TIPO inteiro real caractere literal lgico --> EXEMPLO --> 19 --> 12.5 --> 'a' --> "uma frase" verdadeiro ou falso

Contedo
Introduo 1 Operadores 1 Estruturas condicionais 2 Estruturas de repetio sem controle 2 Estruturas de repetio com controle 3 Funes 3 Consideraes finais Vetores e Matrizes 4

DECLARAO DE VARIVEIS As variveis so criadas dentro do bloco e so chamadas de variveis globais. Exemplo: variveis meuNome:literal; nota1, nota2, media: real; idade1, idade2:inteiro; flag:lgico; memoria: matriz[4][8] de inteiros; fim-variveis

Para compilar
Para intrues de como instalar o compilador gpt e comear a programar, vide o site do professor no final do artigo. Para compilar um algoritmo na janela do DOS ou na linha de comandos do linux, use o comando abaixo. >> gpt programa.gpt -o programa.exe

Operadores - G-Portugol
Existem trs tipos bsicos de operadores usados em expresses em g-portugol: (i) Aritmticos, (ii) Relacionais e (iii) Lgicos. ARITMTICOS + operador de soma operador de subtrao * operador de multiplicaao / operador de divisao % resto da divisao inteira () parentesis em expressoes RELACIONAIS = operador igual <> operador diferente > operador "maior que" >= operador maior ou igual < operador "menor que" <= operador maior ou igual LGICOS e operador AND logico ou operador OR logico no operador NOT logico

EXEMPLO algoritmo media; variveis numero1, numero2, media:real; fim-variveis incio imprima("Digite o 1o numero:"); numero1:=leia(); imprima("Digite o 2o numero:"); numero2:=leia(); media:=(numero1+numero2)/2; imprima("A media eh ",media); fim

Estruturas condicionais
Consiste na estrutura se/ento/seno e sua verso aninhada. Essa estrutura utiliza expresses, que so avaliadas para que uma deciso seja tomada (repetir execuo, selecionar o bloco de instrues a ser executado, etc). Qualquer expresso pode ser avaliada como expresso lgica (verdadeiro ou falso) no teste de condio. Expresses numricas de valor "0" so avaliadas como falso. Demais valores numricos so avaliados como verdadeiro. Valores literais nulos, da mesma forma, so avaliados como falso, e demais textos, como verdadeiro. Aps a palavra reservada "se", a condio deve ser explicitada. Exemplo: se idade > 60 ento imprima("Idoso"); seno se idade >= 21 e idade <=60 ento imprima("Adulto"); seno imprima("Jovem"); fim-se fim-se

se (...) ento comandos; seno comandos; fim-se

Estruturas de repetio sem controle


ENQUANTO A estrutura "enquanto" a mais bsica e comum das estruturas de repetio. Seu funcionamento o mesmo que em outras linguagens de programao, onde um conjunto de instrues executado repetidamente enquanto o valor lgico da expresso condicional for avaliado como "verdadeiro". Veja sua estrutura no quadro ao lado. Exemplo: algoritmo enquanto_faca; variveis contador:inteiro; fim-variveis incio contador:=1; enquanto contador<=10 faa imprima("Contagem de numero ",contador); contador:=contador+1; fim-enquanto fim Nota: observe que esta estrutura o teste de condio no incio lao. Portanto, se o resultado teste for "falso", os comandos lao nem sero executados. faz do do do REPITA Na estrutura "repita" todos os comandos sero executados e, ao final de cada execuo, haver uma expresso lgica que far o teste de condio, se a expresso for avaliada como verdadeira o lao ser encerrado. Observe que a estrutura "enquanto" executa o lao sempre que o resultado do teste de condio resultar verdadeiro. No entanto, a estrutura "repita" se manter executando o lao sempre que o teste de condio resultar em falso. Exemplo: algoritmo repita_ate; variveis contador:inteiro; fim-variveis incio contador:=1; repita imprima("Estamos na contagem de nmero ",contador); contador:=contador+1; at contador>10; fim

enquanto (...) faa comandos; fim-enquanto

repita comandos; at (...);


Nota: Observe que a estrutura repita faz o teste de condio no final do lao, aps executar todos os comandos do lao. Essa estrutura garante que os comandos sero executados ao menos uma vez.

Pgina 2

Resum

Estrutura de repetio com controle


A estrutura de repetio "para" permite ao programador um controle maior da execuo do lao, pois pode-se definir a quantidade de iteraes na prpria estrutura. Obs: a quantidade de iteraes o nmero de vezes que o lao ser executado. A estrutura "para" tem a seguinte forma: para <varivel> de <valor inicial> at <valor final> passo <inteiro> faa comandos; fim-para Onde a varivel que ir contar as iteraes dever j ter sido criada no incio do programa. Os valores inicial e final junto com o passo delimitam a quantidade de iteraes. Exemplo: para x de 1 at 10 faa comandos; fim-para O lao acima comear com o contador x com valor 1 e encerrar a execuo do lao quando o contador x assumir o valor 10. Quando o passo omitido, ele considerado passo 1. Portanto, esse lao executar o bloco de comandos 10 vezes. Da mesma forma, para uma iterao decrescente, de 2 em 2, escreve-se: para x de 10 at 0 passo -2 faa //comandos... fim-para O lao anterior comear com o contador x com o valor 10 e encerrar a execuo quando o contador x assumir o valor 0. Portanto, esse lao executar 6 vezes, para x com os valores de 10, 8, 6, 4, 2, 0. Exemplo: algoritmo para_de_ate_faca; variveis x:inteiro; fim-variveis incio para contador de 10 at 0 passo -2 faa imprima("Contagem n ", contador); fim-para fim

para varivel de ? at ? passo ? faa comandos; fim-para

Funes em G-Portugol
Subprogramas em G-Portugol so implementados no modelo de funes. Quando voc percebe que existe uma parte do cdigo que est se repetindo no decorrer do programa, voc cria uma funo com essa parte do cdigo. Ento, onde voc necessitar desse cdigo, basta chamar a funo criada. Isso diminui o tamanho do programa e deixa o mesmo mais legvel. As funes podem ter zero ou mais parmetros de qualquer tipo, tanto primitivos quanto complexos (vetores e matrizes). As funes podem definir valores de retorno, que deve ser de tipo primitivo. Tanto o retorno de dados como a passagem de argumentos so feitos por valor. A estrutura da funo, que deve ser colocada no final do cdigo, a seguinte: funo nome(p1:tipo, p2:tipo):tipoR outras variveis que no p1 e p2; incio comandos; retorne resultado; fim - nome: nome da funo; -p1 e p2: variveis(parmetros) que recebem os argumentos que entram; -tipoR: tipo de dado a ser retornado; - resultado: valor entregue pela funo;

Resumo

funo nome(p1:tipo, p2:tipo):tipoR outras variveis que no p1 e p2; incio comandos; retorne resultado; fim

Pgina 3

Consideraes Finais
FUNES INTERNAS Como j foi visto em exemplos anteriores, G-Portugol oferece duas funes internas: "leia()" e "imprima", que permitem uso bsico de entrada e sada de dados, respectivamente. A funo "leia" no recebe argumentos e retorna o valor lido da entrada padro, ou seja, os dados que o usurio digitar no teclado. O tipo de dado retornado por "leia" implicitamente convertido para o tipo da varivel a que ela se destina. A funo "imprima" recebe um nmero varivel de argumentos de qualquer tipo, sendo que pelo menos um argumento deve ser passado. Os valores passados como argumentos so convertidos para texto, concatenados na ordem definida e enviados tela. No h retorno de valor para esta funo. Exemplo: n:=leia(); - varivel n recebe entrada do teclado, por exemplo: 5; media:=leia(); - varivel media recebe entrada do teclado, por exemplo: 10; imprima("A media dos ", primeiros num. eh ", media); n," Exemplo de matriz: velocidades: matriz[4][7] de reais; Para colocar dados dentro da matriz deve-se lembrar que os ndices da matriz comeam a contar de 0 e vo at n-1, onde n a quantidade de posies da matriz. Exemplo: idades: matriz[4] de inteiros; Para o vetor criado acima temos as quatro variveis na memria da seguinte forma: espao {} {} {} {} posio 0 1 2 3 Para colocar o valor 23 no terceiro espao do vetor temos que coloclo na posio 2, basta ento dar o comando: idades[2]:=23; Para preencher os espaos das variveis da matriz comum o uso dos laos "para" aninhados. Devido a restries de espao no colocaremos exemplos aqui. Maiores detalhes consulte a aula.

A sada na tela do comando imprima acima : A media dos 5 primeiros num. eh 10 VETORES E MATRIZES Duas estruturas de dados so usadas para armazenar vrias variveis de mesmo tipo e que tem relao entre si, so os vetores e matrizes. Vetores so matrizes de uma dimenso, logo, em portugol, vetores so criados como matrizes. Observe a criao de variveis vetores e matrizes. Exemplo de vetor: dias : matriz [7] de literais;

Emannuel/Fanor

Emannuel J. Fernandes possui graduao (2006.2), Mestrado (2009.2) e est cursando Doutorado em Engenharia Eltrica, alm de cursar Administrao de Empresas, todos esses cursos pela Universidade Federal do Cear. Tem experincia na rea de Engenharia Eltrica, com nfase em Informtica Industrial e interesse em Mquinas Eltricas, Inteligncia Computacional aplicada a sistemas de potncia, como tambm em Modelagem, Anlise e Controle de Sistemas Dinmicos.
email: efernandes@fanor.edu.br web: http://emannuelfernandes.blogspot.com/