FACULDADE DE CIÊNCIAS
Departamento de Matemática e Informática
Trabalho de Licenciatura em
[Ciencias de Informacao Geografica]
Dissertação para obtenção do Grau de Mestre em
[Engenharia Informática]
[Desenvolvimento de Programa]
Autores:
Carla Mugabe.
Maida Germano Tembe.
Shelcia Djessminy Nhantumbo.
Maputo, [Maio de 2025]
1
FACULDADE DE CIÊNCIAS
Departamento de Matemática e Informática
Trabalho de Licenciatura em
[Ciências de Informação Geográfica]
Dissertação para obtenção do Grau de Mestre em
[Engenharia Informática]
[Desenvolvimento de Programa]
Trabalho de Pesquisa e programação
Docente: Orlando Zacarias
Unidade Curricular: Introdução a Informática
Autores:
Carla Mugabe.
Maida Germano Tembe.
Shelcia Djessminy Nhatumbo.
Maputo, [Maio de 2025]
2
Índice
Problema..........................................................................................................................................1
Descrição Geral...............................................................................................................................1
Estrutura de Dados...........................................................................................................................1
Variáveis Globais.............................................................................................................................2
Procedimentos e Funções................................................................................................................2
Função ObterPercentualAumento.............................................................................2
Procedimento LerDados....................................................................................................2
Procedimento CalcularReajuste.................................................................................2
Procedimento MostrarResultados..............................................................................2
Corpo Principal do Programa..........................................................................................................3
Apresentação dos resultados............................................................................................................3
Tabela de classificação....................................................................................................................4
Código..............................................................................................................................................5
3
Problema
Uma empresa irá dar um aumento de salário aos seus funcionários de acordo com a categoria de
cada empregado. O aumento seguirá a seguinte regra:
a) Funcionários das categorias A, C, F, e H ganharão 10% de aumento sobre o salário
b) Funcionários das categorias B, D, E, I J e T ganharão15% de aumento sobre o salário
c) Funcionários das categorias K e R ganharão 25% de aumento sobre o salário
d) Funcionários das categorias L, M, N, O, P, Q, R e S ganharão 35% de aumento sobre o salário
e) Funcionários das categorias U, V, X, Y, W e Z ganharão 50% de aumento sobre o salário.
Faça um programa que Escreva Nome, categoria e salário reajustado de cada funcionário.
Considere 1000 funcionários em geral, na empresa.
Descrição Geral
Este programa Pascal é projectado para processar informações de um conjunto de 1000
funcionários de uma empresa, com o objectivo de calcular o reajuste salarial de cada um
conforme a sua categoria profissional. Cada registo de funcionário contém o nome, a categoria e
o salário actual. O programa executa operações como a leitura desses dados, o cálculo do novo
salário com base em percentuais definidos por categoria, e a exibição do nome, categoria e
salário reajustado de cada funcionário. Para isso, são utilizadas estruturas como vetores,
procedimentos e funções, garantindo uma organização clara e modular do código.
Estrutura de Dados
O programa define uma constante NUMERO_DE_FUNCIONARIOS, que estabelece o número máximo
de funcionários que podem ser processados, fixado em 1000. Para armazenar os dados, são
definidos três vetores (arrays): ListaNomes, que contém os nomes dos funcionários como
strings; ListaCategorias, que armazena as categorias como caracteres; e dois vetores do tipo
ListaSalarios, usados para guardar, respectivamente, os salários originais e os salários
reajustados de cada funcionário. Cada vetor tem índices de 1 até NUMERO_DE_FUNCIONARIOS. A
estrutura de dados é simples e utiliza apenas tipos básicos e arrays paralelos.
1
Variáveis Globais
O vetor nomes do tipo ListaNomes armazena os nomes de todos os funcionários. O vetor
categorias do tipo ListaCategorias guarda a categoria de cada funcionário, representada por
um caractere. Os vetores salariosOriginais e salariosReajustados, ambos do tipo
ListaSalarios, armazenam, respectivamente, os salários antes e depois do reajuste. A variável
i é utilizada como índice de controlo em diversas estruturas de repetição ao longo do programa,
especialmente nos laços de leitura, cálculo e exibição dos dados. Essas variáveis são declaradas
de forma global para permitir o seu uso em diferentes procedimentos e funções do programa.
Procedimentos e Funções
Função ObterPercentualAumento
Recebe uma categoria como parâmetro e retorna o percentual de aumento
correspondente, conforme os critérios definidos pelo problema. A função garante que a
letra da categoria seja tratada em maiúscula para evitar erros de comparação.
Procedimento LerDados
Responsável por ler os dados de entrada dos funcionários, incluindo o nome, a categoria e
o salário. Esses dados são armazenados nos vetores globais correspondentes.
Procedimento CalcularReajuste
Calcula o salário reajustado de cada funcionário, aplicando o percentual de aumento
obtido pela função ObterPercentualAumento. Os novos salários são armazenados no
vetor salariosReajustados.
Procedimento MostrarResultados
Exibe, para cada funcionário, seu nome, categoria e salário reajustado. Este procedimento
é responsável pela saída final do programa (output).
2
Corpo Principal do Programa
O corpo principal do programa começa chamando o procedimento LerDados, que realiza a
leitura e o armazenamento das informações dos 1000 funcionários, incluindo nome, categoria e
salário actual. Em seguida, é chamado o procedimento CalcularReajuste, responsável por
aplicar os percentuais de aumento conforme a categoria e calcular o novo salário de cada
funcionário. Por fim, o procedimento MostrarResultados é chamado para exibir, para cada
funcionário, o nome, a categoria e o salário reajustado. O fluxo do programa é sequencial e
organizado, garantindo clareza na execução das etapas de entrada, processamento e saída de
dados.
Apresentação dos resultados
Fig: Exemplo de execução do programa para 2 funcionários
3
Tabela de classificação
Nome do Estudante Classificação Quantitativa Assinatura
Carla Mugabe 32%
Maida Tembe 31%
Shelcia Nhatumbo 37%
4
Código
program Aumento_Salarial_Dos_Funcionarios;
uses crt;
const
NUMERO_DE_FUNCIONARIOS = 2;
type
ListaNomes = array[1..NUMERO_DE_FUNCIONARIOS] of string;
ListaCategorias = array[1..NUMERO_DE_FUNCIONARIOS] of char;
ListaSalarios = array[1..NUMERO_DE_FUNCIONARIOS] of real;
var
nomes: ListaNomes;
categorias: ListaCategorias;
salariosOriginais, salariosReajustados: ListaSalarios;
i: integer;
function ObterPercentualAumento(categoria: char): real;
begin
categoria := upcase(categoria);
case categoria of
'A', 'C', 'F', 'H': ObterPercentualAumento := 0.10;
'B', 'D', 'E', 'I', 'J', 'T': ObterPercentualAumento := 0.15;
'K', 'R': ObterPercentualAumento := 0.25;
'L', 'M', 'N', 'O', 'P', 'Q', 'S': ObterPercentualAumento := 0.35;
'U', 'V', 'W', 'X', 'Y', 'Z': ObterPercentualAumento := 0.50;
5
else
ObterPercentualAumento := 0.0;
end;
end;
procedure LerDados(var nomes: ListaNomes; var categorias: ListaCategorias; var salarios:
ListaSalarios);
begin
WriteLn(' ======== Registo de Funcionarios =========');
writeln('');
for i := 1 to NUMERO_DE_FUNCIONARIOS do
begin
writeln(' Funcionario ', i);
writeln;
write(' Nome: ');
readln(nomes[i]);
write(' Categoria: ');
readln(categorias[i]);
write(' Salario: ');
readln(salarios[i]);
writeln;
end;
end;
6
procedure CalcularReajuste(salarios: ListaSalarios; categorias: ListaCategorias; var reajustados:
ListaSalarios);
var
aumento: real;
begin
for i := 1 to NUMERO_DE_FUNCIONARIOS do
begin
aumento := ObterPercentualAumento(categorias[i]);
reajustados[i] := salarios[i] + (salarios[i] * aumento);
end;
end;
procedure MostrarResultados(nomes: ListaNomes; categorias: ListaCategorias; reajustados:
ListaSalarios);
begin
writeln(' ======= Lista de Funcionarios com Salario Reajustado =========');
WriteLn;
for i := 1 to NUMERO_DE_FUNCIONARIOS do
begin
writeln(' Funcionario ', i);
writeln(' Nome: ', nomes[i]);
writeln(' Categoria: ', categorias[i]);
writeln(' Salario Reajustado: ', reajustados[i]:0:2);
writeln;
7
end;
end;
begin
clrscr;
LerDados(nomes, categorias, salariosOriginais);
CalcularReajuste(salariosOriginais, categorias, salariosReajustados);
MostrarResultados(nomes, categorias, salariosReajustados);
readln;
end.