4

Click here to load reader

Resumo de gPortugol

Embed Size (px)

DESCRIPTION

Resumo da linguagem de programação gPortugol.

Citation preview

Page 1: Resumo de gPortugol

Resumo de G-Portugol

Emannuel - Fanor

15/10/2011

Versao 1

G-Portugol é um dialeto da linguagem/pseudo-código portugol (ou portugês estruturado), que é muito usada para descrever algoritmos em português, de forma livre e espontânea. Em geral, livros dedicados ao ensino de algoritmos, lógica e estruturas de dados utilizam alguma forma dessa linguagem.

A proposta de G-Portugol é disponibilizar uma implementação da linguagem portugol, fornecendo ferramentas que ofereçam recursos de edição, compilação, execução e depuração de programas escritos nessa linguagem, de forma a favorecer estudantes que dão os primeiros passos no aprendizado de desenvolvimento de softwares e algoritmos. Portanto, seu foco é primariamente didático. Em breve será disponibilizada a versão 2.0 do gpt.

A linguagem é case sensitive, o que significa que, por exemplo, uma função chamada "leia" é diferente de uma função chamada "Leia".

TIPOS DE DADOS

TIPO EXEMPLOinteiro --> 19real --> 12.5caractere --> 'a'literal --> "uma frase"lógico --> verdadeiro ou falso

DECLARAÇÃO DE VARIÁVEISAs variáveis são criadas dentro do bloco e são chamadas de variáveis globais. Exemplo:

variáveismeuNome:literal;nota1, nota2, media: real;idade1, idade2:inteiro;flag:lógico;memoria: matriz[4][8] de inteiros;fim-variáveis

Conteúdo

Existem três tipos básicos de operadores usados em expressões em g-portugol: (i) Aritméticos, (ii) Relacionais e (iii) Lógicos.

ARITMÉTICOS+ operador de soma- operador de subtração* operador de multiplicaçao/ 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

LÓGICOSe operador AND logicoou operador OR logiconão operador NOT logico

EXEMPLOalgoritmo media;variáveisnumero1, numero2, media:real;fim-variáveisinícioimprima("Digite o 1o numero:");numero1:=leia();imprima("Digite o 2o numero:");numero2:=leia();media:=(numero1+numero2)/2;imprima("A media eh ",media);fim

Operadores - G-Portugol

Para compilar

Introdução 1

Operadores 1

Estruturas

condicionais 2

Estruturas de repetição

sem controle 2

Estruturas de repetição

com controle 3

Funções 3

Considerações finais -

Vetores e Matrizes 4

Para intruções de como

instalar o compilador gpt e

começar 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

Page 2: Resumo de gPortugol

Página 2 Resum

Estruturas condicionais

Consiste na estrutura se/então/senão e sua versão aninhada. Essa estrutura utiliza expressões, que são avaliadas para que uma decisão seja tomada (repetir execução, selecionar o bloco de instruções a ser executado, etc). Qualquer expressão pode ser avaliada como expressão lógica (verdadeiro ou falso) no teste de condição. Expressões numéricas de valor "0" são avaliadas como falso. Demais valores numéricos são avaliados como verdadeiro. Valores literais

nulos, da mesma forma, são avaliados como falso, e demais textos, como verdadeiro.Após a palavra reservada "se", a condição deve ser explicitada. Exemplo:se idade > 60 entãoimprima("Idoso");senão se idade >= 21 e idade <=60 entãoimprima("Adulto");senãoimprima("Jovem");fim-sefim-se

se (...) então

comandos;

senão

comandos;

fim-se

ENQUANTO

A estrutura "enquanto" é a mais básica e comum das estruturas de repetição. Seu funcionamento é o mesmo que em outras linguagens de programação, onde um conjunto de instruções é executado repetidamente enquanto o valor lógico da expressão condicional for avaliado como "verdadeiro". Veja sua estrutura no quadro ao lado. Exemplo:

algoritmo enquanto_faca;variáveis contador:inteiro;fim-variáveis

iníciocontador:=1;enquanto contador<=10 façaimprima("Contagem de numero ",contador);contador:=contador+1;fim-enquantofim

Nota: observe que esta estrutura faz o teste de condição no início do laço. Portanto, se o resultado do teste for "falso", os comandos do laço nem serão executados.

REPITA

Na estrutura "repita" todos os comandos serão executados e, ao final de cada execução, haverá uma expressão lógica que fará o teste de condição, se a expressão for avaliada como verdadeira o laço será encerrado.

Observe que a estrutura "enquanto" executa o laço sempre que o resultado do teste de condição resultar verdadeiro. No entanto, a estrutura "repita" se manterá executando o laço sempre que o teste de condição resultar em falso. Exemplo:

algoritmo repita_ate;variáveiscontador:inteiro;fim-variáveis

iníciocontador:=1;repitaimprima("Estamos na contagem de número ",contador);contador:=contador+1;até contador>10;fim

Nota: Observe que a estrutura repita faz o teste de condição no final do laço, após executar todos os comandos do laço. Essa estrutura garante que os comandos serão executados ao menos uma vez.

Estruturas de repetição sem controle

enquanto (...) faça

comandos;

fim-enquanto

repita

comandos;

até (...);

Page 3: Resumo de gPortugol

Página 3

Resumo

função nome(p1:tipo, p2:tipo):tipoRoutras variáveis que não p1 e p2;iníciocomandos;retorne resultado;fim

Estrutura de repetição com controle

A estrutura de repetição "para" permite ao programador um controle maior da execução do laço, pois pode-se definir a quantidade de iterações na própria estrutura. Obs: a quantidade de iterações é o número de vezes que o laço será executado. A estrutura "para" tem a seguinte forma:

para <variável> de <valor inicial> até <valor final> passo <inteiro> façacomandos;fim-para

Onde a variável que irá contar as iterações deverá já ter sido criada no início do programa. Os valores inicial e final junto com o passo delimitam a quantidade de iterações.

Exemplo:

para x de 1 até 10 façacomandos;fim-para

O laço acima começará com o contador x com valor 1 e encerrará a execução do laço quando o contador x assumir o valor 10. Quando o passo é omitido, ele é considerado passo 1. Portanto, esse laço executará o bloco de comandos 10 vezes.

Da mesma forma, para uma iteração decrescente, de 2 em 2, escreve-se:

para x de 10 até 0 passo -2 faça//comandos...fim-para

O laço anterior começará com o contador x com o valor 10 e encerrará a execução quando o contador x assumir o valor 0. Portanto, esse laço executará 6 vezes, para x com os valores de 10, 8, 6, 4, 2, 0.

Exemplo:

algoritmo para_de_ate_faca;variáveisx:inteiro;fim-variáveis

iníciopara contador de 10 até 0 passo -2 façaimprima("Contagem nº ", contador);fim-parafim

Funções em G-Portugol

Subprogramas em G-Portugol são implementados no modelo de funções. Quando você percebe que existe uma parte do código que está se repetindo no decorrer do programa, você cria uma função com essa parte do código. Então, onde você necessitar desse código, basta chamar a função criada. Isso diminui o tamanho do programa e deixa o mesmo mais legível.

As funções podem ter zero ou mais

parâmetros de qualquer tipo, tanto primitivos quanto complexos (vetores e matrizes). As funções podem definir valores de retorno, que deve ser de tipo primitivo. Tanto o retorno de dados como a passagem de argumentos são feitos por valor.

A estrutura da função, que deve ser colocada no final do código, é a seguinte:

função nome(p1:tipo, p2:tipo):tipoRoutras variáveis que não p1 e p2;iníciocomandos;retorne resultado;fim

- nome: nome da função;-p1 e p2: variáveis(parâmetros) que recebem os argumentos que entram;-tipoR: tipo de dado a ser retornado;- resultado: valor entregue pela função;

para variável de ? até ? passo ? faça

comandos;

fim-para

Page 4: Resumo de gPortugol

Emannuel/Fanor

email: [email protected]

web: http://emannuelfernandes.blogspot.com/

Considerações Finais

FUNÇÕES INTERNAS

Como já foi visto em exemplos anteriores, G-Portugol oferece duas funções internas: "leia()" e "imprima", que permitem uso básico de entrada e saída de dados, respectivamente.

A função "leia" não recebe argumentos e retorna o valor lido da entrada padrão, ou seja, os dados que o usuário digitar no teclado. O tipo de dado retornado por "leia" é implicitamente convertido para o tipo da variável a que ela se destina.

A função "imprima" recebe um número variável de argumentos de qualquer tipo, sendo que pelo menos um argumento deve ser passado. Os valores passados como argumentos são convertidos para texto, concatenados na ordem definida e enviados à tela. Não há retorno de valor para esta função.

Exemplo:

n:=leia(); - variável n recebe entrada do teclado, por exemplo: 5;

media:=leia(); - variável media recebe entrada do teclado, por exemplo: 10;

imprima("A media dos ", n," primeiros num. eh ", media);

A saída na tela do comando imprima acima é:A media dos 5 primeiros num. eh 10

VETORES E MATRIZES

Duas estruturas de dados são usadas para armazenar várias variáveis de mesmo tipo e que tem relação entre si, são os vetores e matrizes. Vetores são matrizes de uma dimensão, logo, em portugol, vetores são criados como matrizes. Observe a criação de variáveis vetores e matrizes.

Exemplo de vetor:dias : matriz [7] de literais;

Exemplo de matriz:velocidades: matriz[4][7] de reais;

Para colocar dados dentro da matriz deve-se lembrar que os índices da matriz começam a contar de 0 e vão até n-1, onde n é a quantidade de posições da matriz.

Exemplo:idades: matriz[4] de inteiros;Para o vetor criado acima temos as quatro variáveis na memória da seguinte forma:espaço {} {} {} {}posição 0 1 2 3

Para colocar o valor 23 no terceiro espaço do vetor temos que colocá-lo na posição 2, basta então dar o comando:idades[2]:=23;

Para preencher os espaços das variáveis da matriz é comum o uso dos laços "para" aninhados. Devido a restrições de espaço não colocaremos exemplos aqui. Maiores detalhes consulte a aula.

Emannuel J. Fernandes possui graduação (2006.2), Mestrado (2009.2) e está

cursando Doutorado em Engenharia Elétrica, além de cursar Administração de

Empresas, todos esses cursos pela Universidade Federal do Ceará. Tem

experiência na área de Engenharia Elétrica, com ênfase em Informática

Industrial e interesse em Máquinas Elétricas, Inteligência Computacional

aplicada a sistemas de potência, como também em Modelagem, Análise e

Controle de Sistemas Dinâmicos.