Resumo de gPortugol
Click here to load reader
-
Upload
emannuel-fernandes -
Category
Documents
-
view
120 -
download
0
description
Transcript of 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
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é (...);
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
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.