Menu

Linguagem OpenAlg

Davi Carnaúba

Linguagem OpenAlg

Estrutura de um Algoritmo

algoritmo "nome do algoritmo"

/* variáveis globais */

/* funções e procedimentos */

inicio

fimalgoritmo


Funções de Entrada/Saída

  • escreva(<valor>) - Exibe na tela o conteúdo especificado entre parênteses.
  • escreval(<valor>) - Exibe na tela o conteúdo especificado entre parênteses e quebra uma linha no final.
  • leia(<variável>) - Lê um dado digitado pelo usuário. O tipo de dado a ser lido dependerá do tipo da variável informado para a função leia.

algoritmo "nome do algoritmo"

/* variáveis globais */
var
  i: inteiro

/* Inicio do algoritmo */
inicio
  escreva("Digite a sua idade: ")
  leia(i)
  escreval("Você tem " + i + "anos.")
fimalgoritmo


Funções Matemáticas

  • arccos(<valor>) - Arco cosseno
  • arcsen(<valor>) - Arco seno
  • arctan(<valor>) - Arco tangente
  • cos(<valor>) - Cosseno
  • cotan(<valor>) - Cotangente
  • sen(<valor>) - Seno
  • tan(<valor>) - Tangente
  • emrad(<valor>) - Recebe em graus e devolve em radianos
  • emgrau(<valor>) - Recebe em radianos e devolve em graus
  • abs(<valor>) - Valor absoluto
  • log(<valor>) - Logarítimo na base 10
  • logn(<valor>) - Logarítimo natural
  • raizq(<valor>) - Raiz quadrada
  • rand(<valor>) - Gera um número randômico

Sintaxe

Tipos de dados

  • Inteiro - Números inteiros.
  • Real - Números reais. A parte inteira é separada da parte fracionária pelo . (ponto). Exemplo: 3.14
  • Caractere - Um caractere. Caracteres são especificados entre aspa simples. Exemplo: 'a'
  • Texto - Fila de caracteres. Uma fila de caracteres é especificada entre aspa dupla. Exemplo: "Davi"
  • Logico - Armazena apenas dois valores Verdadeiro e Falso

Declaração de Variáveis

As declarações devem ser realizadas após a palavra reservada var. Para declarar uma variável deve-se utilizar a seguinte sintaxe:

<nome_variável>: <tipo_dado>

  • <tipo_dado> pode ser inteiro, real, caractere ou texto.
  • <nome_variável> deve-se estar atento para as regras ao dar um nome para uma variável:
  1. deve iniciar com uma letra ou _;
  2. não pode conter caracteres especiais, tais como: ç, ~, ^, $, %, ...;
  3. não pode conter espaços.
  • Exemplos de nomes válidos: idade, c99, end_completo.
  • Exemplos de nomes inválidos: 99c, end completo, número.

algoritmo "nome do algoritmo"

/* variáveis globais */
var
  i: inteiro

/* Inicio do algoritmo */
inicio

fimalgoritmo


Caso exista mais de uma varíavel com mesmo tipo é possível declará-las em uma única linha com o uso da vírgula (,).

algoritmo "nome do algoritmo"

/* variáveis globais */
var
  i, numero: inteiro
  nome, endereco: texto
  sexo: caractere

/* Inicio do algoritmo */
inicio

fimalgoritmo


Vetores

Para declarar vetores deve-se especificar o número de dimensões e o tamanho de cada dimensão além do tipo de dado que o vetor irá armazenar. Para isto, deve-se utilizar a seguinte sintaxe:

<nome_variável>: vetor [<tamanho_dimensão>][<tamanho_dimensão>]... de <tipo_dado>

  • <tamanho_dimensão> deve ser um intervalo entre dois números inteiros separados por .. (dois pontos). Exemplo: 1..10, -5..5, 0..9

Exemplo da declaração de um vetor com 2 dimensões para armazenar números inteiros, onde a primeira possui tamanho 5 e a segunda tamanho 4:

nump: vetor [1..5][1..4] de inteiro


Neste segundo exemplo mostro como declarar um vetor com apenas uma dimensão de tamanho 5:

nomes: vetor [1..5] de texto


Atribuição de Valores

Para atribuir valores a uma variável utiliza-se o operador <-.

algoritmo "nome do algoritmo"

/* variáveis globais */
var
  i, numero: inteiro
  nome, endereco: texto
  sexo: caractere

/* Inicio do algoritmo */
inicio
  i <- 5
  numero <- 2001
  nome <- "Fulando da silva"
  endereco <- "Rua X"
  sexo <- 'M'
fimalgoritmo


Vetores

Para atribuir valores em um vetor é necessário especificar os índices de cada uma das dimensões.

algoritmo "nome do algoritmo"

/* variáveis globais */
var
  numeros: vetor [1..5][1..4] de inteiro
  nomes: vetor [1..5] de texto

/* Inicio do algoritmo */
inicio
  numeros[1][1] <- 55
  numeros[1][2] <- 5801

  nomes[1] <- "Fulano de tal"
fimalgoritmo


Expressões

Precendência:
1. Parênteses
2. Funções Matemáticas
3. Operadores Matemáticos
4. Operadores Relacionais
5. Operadores Lógicos

Operadores Matemáticos

  • + - Soma
  • - - Subtração
  • * - Multiplicação
  • / - Divisão
  • ^ - Exponenciação
  • % - Resto

Precedência:
1. Parênteses
2. Exponenciação
3. Multiplicação e divisão
4. Soma e subtração

Operadores Relacionais

  • = - Igual
  • > - Maior
  • < - Menor
  • >= - Maior ou igual
  • <= - Menor ou igual
  • <> - Diferente

Precedência:
1. O que aparecer primeiro da esquerda para a direita.

Operadores Lógicos

  • e
  • ou
  • nao

Precedência:
1. nao
2. e
3. ou

Estruturas de Controle

Se/Senao

A estrutura condicional Se verifica uma expressão lógica e executa um conjunto de comandos caso o resultado da expressão lógica seja Verdadeiro. Este conjunto de comandos é encerrado com a instrução fimse

se (<expressão>) entao
  /* comandos... */
fimse

É possível inserir a instrução senao antes do fimse para agrupar um outro conjunto de comandos que serão executados caso o resultado da expressão lógica seja Falso.

se (<expressão>) entao
  /* comandos caso verdadeiro... */
senao
  /* comandos caso falso... */
fimse

O programa abaixo informa se um número solicitado ao usuário é par ou ímpar.

algoritmo "par ou impar"

var
  n: inteiro

inicio
  escreva("Digite um número: ")
  leia(n)
  se (n%2 = 0) entao
    escreval("O número digitado é par.")
  senao
    escreval("O número digitado é ímpar.")
  fimse
fimalgoritmo


Para

A estrutura de repetição para é utilizada para repetir uma quantidade de vezes um conjunto de comandos.

para <variável> de <inicio> ate <fim> [passo <pvalor>] faca
  /* comandos... */
fimpara

O conjunto de comandos será repetido enquanto o valor da variável especificada em <variável> não alcançar o valor final especificado em <fim>. Por padrão a variável aumenta em passos de 1 se <inicio> for maior que <fim> ou em passos de -1, caso contrário. Opcionalmente é possível especificar o tamanho do passo com a opção passo.

algoritmo "para"

var
  r: real

inicio
  para r de 1 ate 2 passo 0.1 faca
    escreval(r)
  fimpara
fimalgoritmo

Enquanto

A estrutura de repetição enquanto é utilizada para repetir um conjunto de comandos enquanto uma expressão booleana for Verdadeira.

enquanto (<expressão>) faca
  /* comandos... */
fimenquanto

O programa abaixo é uma reescrita do programa anterior utilizando o comando enquanto. O resultado é o mesmo.

algoritmo "enquanto"

var
  r: real

inicio
  r <- 1
  enquanto(i <= 2) faca
    escreval(r)
    r <- r + 0.1
  fimenquanto
fimalgoritmo

Repita

A estrutura de repetição repita irá repetir um conjunto de comandos até uma expressão booleana ser falsa. A única diferença entre o repita e o enquanto é que o primeiro garante repetir pelo menos uma vez o conjunto de comandos.

repita
  /* comandos... */
ate (<expressão>)

O programa abaixo apresenta o mesmo resultado do anterior quando utilizado o enquanto.

algoritmo "enquanto"

var
  r: real

inicio
  r <- 1
  repita
    escreval(r)
    r <- r + 0.1
  ate (i < <=span style="color:purple">2)
fimalgoritmo

Comando Interrompa

O comando interrompa pode ser utilizado para parar um laço de repetição.

algoritmo "enquanto"

var
  r: real

inicio
  enquanto(verdadeiro) faca
    escreva("Digite um número: ")
    leia(r)
    se (r < 0) entao
      Interrompa
    fimse
  fimenquanto
fimalgoritmo

Procedimentos

procedimento <nome>(<parametros>)
var
  /* declaração de variáveis locais */
inicio
  /* comandos... */
fimprocedimento

Funções

funcao <nome>(<parametros>): <tipo_retorno>
var
  /* declaração de variáveis locais */
inicio
  /* comandos... */
fimfuncao

algoritmo "fibonacci"

/* variáveis globais */
var
  i, n: inteiro

/* função fibonacci */
funcao fibonacci(n: inteiro): inteiro
inicio
  se (n = 1 ou n = 2) entao
    retorne 1
  senao
    retorne fibonacci(n-1) + fibonacci(n-2)
  fimse
fimfuncao

/* Inicio do algoritmo */
inicio
  escreva("Digite a quantidade de termos: ")
  leia(n)
  escreva("A sequência de Fibonacci é: ")
  para i de 1 ate n faca
    escreva(fibonacci(i) + " ")
  fimpara
  escreval()
fimalgoritmo


Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.