Pular para conteúdo

Exemplos de Código

Esta seção apresenta diversos exemplos práticos de programas em Portugol e sua tradução para C.

Programas Básicos

Hello World

=== "Portugol"

programa {
    funcao inicio() {
        escreva("Hello, World!")
    }
}

=== "C Gerado"

#include <stdio.h>

int main() {
    printf("Hello, World!");
    return 0;
}

Variáveis e Tipos

=== "Portugol"

programa {
    funcao inicio() {
        inteiro idade
        caracter inicial
        logico ativo

        idade = 25
        inicial = 65  // 'A'
        ativo = 1     // verdadeiro

        escreva("Idade: ", idade)
        escreva("Inicial: ", inicial)
        escreva("Ativo: ", ativo)
    }
}

=== "C Gerado"

#include <stdio.h>

int main() {
    int idade;
    char inicial;
    bool ativo;
    idade = 25;
    inicial = 65;
    ativo = 1;
    printf("Idade: %d\n", idade);
    printf("Inicial: %c\n", inicial);
    printf("Ativo: %d\n", ativo);
    return 0;
}

Estruturas de Controle

Condicionais

=== "Portugol"

programa {
    funcao inicio() {
        inteiro numero
        leia(numero)

        se (numero > 0) {
            escreva("Número positivo")
        } senao se (numero < 0) {
            escreva("Número negativo")
        } senao {
            escreva("Número é zero")
        }
    }
}

=== "C Gerado"

#include <stdio.h>

int main() {
    int numero;
    scanf("%d", &numero);
    if (numero > 0) {
        printf("Número positivo");
    } else if (numero < 0) {
        printf("Número negativo");
    } else {
        printf("Número é zero");
    }
    return 0;
}

Laço While

=== "Portugol"

programa {
    funcao inicio() {
        inteiro contador
        contador = 1

        enquanto (contador <= 5) {
            escreva("Contador: ", contador)
            contador = contador + 1
        }
    }
}

=== "C Gerado"

#include <stdio.h>

int main() {
    int contador;
    contador = 1;
    while (contador <= 5) {
        printf("Contador: %d\n", contador);
        contador = contador + 1;
    }
    return 0;
}

Laço For

=== "Portugol"

programa {
    funcao inicio() {
        inteiro i

        para (inteiro i = 1; i <= 10; i++) {
            escreva("Número: ", i)
        }
    }
}

=== "C Gerado"

#include <stdio.h>

int main() {
    for (int i = 1; i <= 10; i++) {
        printf("Número: %d\n", i);
    }
    return 0;
}

Vetores (Arrays)

Vetor de Inteiros

=== "Portugol"

programa {
    funcao inicio() {
        inteiro numeros[5]
        inteiro i

        // Preenchendo o vetor
        para (inteiro i = 0; i < 5; i++) {
            numeros[i] = i * 10
        }

        // Exibindo o vetor
        para (inteiro i = 0; i < 5; i++) {
            escreva("numeros[", i, "] = ", numeros[i])
        }
    }
}

=== "C Gerado"

#include <stdio.h>

int main() {
    int numeros[5];
    int i;
    for (int i = 0; i < 5; i++) {
        numeros[i] = i * 10;
    }
    for (int i = 0; i < 5; i++) {
        printf("numeros[%d] = %d\n", i, numeros[i]);
    }
    return 0;
}

Vetor de Reais

=== "Portugol"

programa {
    funcao inicio() {
        real notas[3]
        real media

        notas[0] = 8.5
        notas[1] = 9.0
        notas[2] = 7.5

        media = (notas[0] + notas[1] + notas[2]) / 3
        escreva("Média: ", media)
    }
}

=== "C Gerado"

#include <stdio.h>

int main() {
    float notas[3];
    float media;
    notas[0] = 8.5;
    notas[1] = 9.0;
    notas[2] = 7.5;
    media = (notas[0] + notas[1] + notas[2]) / 3;
    printf("Média: %f\n", media);
    return 0;
}

Operações Avançadas

Operadores Bitwise

=== "Portugol"

programa {
    funcao inicio() {
        inteiro a, b, resultado
        a = 12  // 1100 em binário
        b = 7   // 0111 em binário

        resultado = a & b  // AND
        escreva("AND: ", resultado)

        resultado = a | b  // OR
        escreva("OR: ", resultado)

        resultado = a ^ b  // XOR
        escreva("XOR: ", resultado)
    }
}

=== "C Gerado"

#include <stdio.h>

int main() {
    int a, b, resultado;
    a = 12;
    b = 7;
    resultado = a & b;
    printf("AND: %d\n", resultado);
    resultado = a | b;
    printf("OR: %d\n", resultado);
    resultado = a ^ b;
    printf("XOR: %d\n", resultado);
    return 0;
}

Incremento e Decremento

=== "Portugol"

programa {
    funcao inicio() {
        inteiro contador
        contador = 5

        escreva("Valor inicial: ", contador)
        contador++
        escreva("Após incremento: ", contador)
        contador--
        escreva("Após decremento: ", contador)
    }
}

=== "C Gerado"

#include <stdio.h>

int main() {
    int contador;
    contador = 5;
    printf("Valor inicial: %d\n", contador);
    contador++;
    printf("Após incremento: %d\n", contador);
    contador--;
    printf("Após decremento: %d\n", contador);
    return 0;
}

Programas Completos

Calculadora Simples

=== "Portugol"

programa {
    funcao inicio() {
        real num1, num2, resultado
        caracter operacao

        escreva("Digite o primeiro número: ")
        leia(num1)
        escreva("Digite a operação (+, -, *, /): ")
        leia(operacao)
        escreva("Digite o segundo número: ")
        leia(num2)

        escolha(operacao) {
            caso '+':
                resultado = num1 + num2
            pare
            caso '-':
                resultado = num1 - num2
            pare
            caso '*':
                resultado = num1 * num2
            pare
            caso '/':
                se (num2 != 0) {
                    resultado = num1 / num2
                } senao {
                    escreva("Erro: Divisão por zero!")
                    retorne 1
                }
            pare
            caso contrario:
                escreva("Operação inválida!")
                retorne 1
        }

        escreva("Resultado: ", resultado)
    }
}

Nota sobre os Exemplos

Todos estes exemplos foram testados e validados pelo nosso sistema automatizado de testes. Você pode encontrar mais exemplos na pasta exemplos/ do repositório.