O que é algoritmo?
Uma sequência finita, ordenada e sem ambiguidade de passos para resolver um problema. Todo programa começa com um algoritmo bem definido.
Pense em uma receita de bolo: tem ingredientes (entradas), passos em ordem (processamento) e o bolo pronto (saída).
Características obrigatórias
Finito Deve terminar em algum momento.
Definido Cada passo tem apenas uma interpretação.
Eficaz Resolve o problema corretamente.
Com entradas/saídas Recebe dados e produz resultados.
Estrutura de um programa em Portugol Studio
programa
{
funcao inicio ()
{
// seu código fica aqui dentro
escreva("Olá, mundo!")
}
}
No Portugol Studio todo programa começa com programa e a execução inicia na função inicio().
Os três blocos da lógica
Conceito
Sequência passos em ordem
Seleção decisões (se/senão)
Repetição laços (para/enquanto)
Em Portugol
// linha a linha
se / senao
para / enquanto
Saída de dados — escreva()
Exibe informações na tela para o usuário.
programa
{
funcao inicio ()
{
escreva("Bem-vindo ao sistema!")
escreva("\n") // pula linha
escreval("Esta linha já pula sozinha")
}
}
escreva() fica na mesma linha. escreval() pula a linha automaticamente ao final.
Entrada de dados — leia()
Lê o que o usuário digita e guarda em uma variável.
programa
{
funcao inicio ()
{
inteiro idade
cadeia nome
escreva("Digite seu nome: ")
leia(nome)
escreva("Digite sua idade: ")
leia(idade)
escreval("Olá, " + nome + "!")
escreval("Você tem " + idade + " anos.")
}
}
Concatenação na saída
Use o operador + para juntar texto e variáveis dentro do escreva().
real media = 8.5
escreval("Sua média é: " + media)
// Saída: Sua média é: 8.5
A variável precisa estar declarada antes de ser usada no escreva() ou leia().
Declarando variáveis em Portugol Studio
A declaração sempre vem no início da função, antes de qualquer comando.
tipo nome_da_variavel
tipo nome_da_variavel = valor_inicial
// exemplos:
inteiro idade = 17
real altura = 1.75
cadeia nome = "Ana"
caracter letra = 'A'
logico aprovado = verdadeiro
Tipos de dados disponíveis
| Palavra-chave | O que armazena | Exemplo de valor |
| inteiro | Números inteiros (sem vírgula) | 10, -3, 0 |
| real | Números com vírgula (decimais) | 3.14, 7.5, -0.5 |
| cadeia | Texto (uma ou mais palavras) | "Olá mundo" |
| caracter | Um único caractere | 'A', '9', '@' |
| logico | Verdadeiro ou falso | verdadeiro, falso |
Constantes
Valores que não mudam durante o programa. Declaradas com a palavra const.
const real PI = 3.14159
const inteiro MAX_ALUNOS = 40
Regras de nomenclatura
Deve começar com letra ou _ (nunca com número).
Sem espaços — use _ para separar palavras.
Sem acentos ou caracteres especiais.
// correto
inteiro idade_aluno
real salario_mensal
// errado
inteiro 1ano // começa com número
real salário // tem acento
cadeia meu nome // tem espaço
Operadores aritméticos
| Operador | Operação | Exemplo |
| + | Adição | a + b |
| - | Subtração | a - b |
| * | Multiplicação | a * b |
| / | Divisão | a / b |
| % | Resto da divisão | 10 % 3 → 1 |
se … senao
Executa um bloco se a condição for verdadeira, outro se for falsa.
programa
{
funcao inicio ()
{
real nota
escreva("Digite sua nota: ")
leia(nota)
se (nota >= 7.0)
{
escreval("Aprovado!")
}
senao
{
escreval("Reprovado.")
}
}
}
se encadeado (senao se)
Para testar múltiplas condições em sequência.
se (nota >= 9.0)
{
escreval("Conceito A")
}
senao se (nota >= 7.0)
{
escreval("Conceito B")
}
senao se (nota >= 5.0)
{
escreval("Conceito C")
}
senao
{
escreval("Reprovado")
}
Operadores relacionais e lógicos
Relacionais
| Op. | Significado |
| == | igual a |
| != | diferente de |
| > | maior que |
| < | menor que |
| >= | maior ou igual |
| <= | menor ou igual |
Lógicos
| Op. | Significado |
| e | E (AND) — ambos verdadeiros |
| ou | OU (OR) — um verdadeiro |
| nao | NÃO (NOT) — inverte |
se (idade >= 18 e tem_rg)
se (x > 0 ou y > 0)
se (nao aprovado)
escolha … caso (switch)
Útil quando se testa uma variável contra vários valores fixos.
inteiro opcao
leia(opcao)
escolha (opcao)
{
caso 1:
escreval("Cadastrar")
pare
caso 2:
escreval("Listar")
pare
caso 3:
escreval("Sair")
pare
caso contrario:
escreval("Opção inválida")
}
Não esqueça o pare em cada caso — sem ele, o programa continua executando os casos seguintes!
para — repetição com contador
Use quando você sabe exatamente quantas vezes vai repetir.
programa
{
funcao inicio ()
{
inteiro i
para (i = 1; i <= 5; i++)
{
escreval("Contagem: " + i)
}
}
}
// Saída: Contagem: 1, 2, 3, 4, 5
A estrutura para tem três partes: (início ; condição ; incremento).
enquanto — condição no início
Testa a condição antes de executar. Pode não executar nenhuma vez se a condição já começar falsa.
programa
{
funcao inicio ()
{
inteiro numero
escreva("Digite um número positivo: ")
leia(numero)
enquanto (numero <= 0)
{
escreval("Valor inválido! Tente novamente.")
leia(numero)
}
escreval("Número aceito: " + numero)
}
}
A variável de controle deve ser atualizada dentro do enquanto, senão o laço nunca termina (laço infinito).
faca … enquanto — condição no fim
Executa o bloco pelo menos uma vez, depois testa a condição.
programa
{
funcao inicio ()
{
inteiro opcao
faca
{
escreval("1 - Jogar")
escreval("2 - Sair")
escreva("Escolha: ")
leia(opcao)
} enquanto (opcao != 2)
}
}
Ideal para menus — o menu sempre aparece pelo menos uma vez antes de verificar se o usuário quer sair.
Comparativo das três estruturas
| Estrutura | Condição testada | Mín. de execuções | Quando usar |
| para | No início | 0 | Sabe quantas vezes repetir |
| enquanto | No início | 0 | Condição incerta, pode não executar |
| faca enquanto | No fim | 1 | Deve executar ao menos uma vez |