Você está na página 1de 4

Exercícios Funções e Procedimentos

1) (função) Escrever um algoritmo para determinar se um determinado número inteiro é par ou


ímpar. Utilizar um subalgoritmo de função que retorna um valor lógico para indicar se o
valor recebido é par ou não. O algoritmo deverá parar quando for fornecido um valor zero.

2) (função) Escreva um algoritmo que lê um número não determinado de valores m, todos


inteiros e positivos, um valor de cada vez, e, se m<10 utiliza um subalgoritmo do tipo
função que calcula o fatorial de m, e caso contrário, utiliza um subalgoritmo do tipo função
para obter o número de divisores de m (quantos divisores m possui). Valide o número m
lido garantindo que o mesmo seja inteiro e positivo. Escrever cada m lido e seu fatorial ou
seu número de divisores. O Algoritmo deverá parar quando for fornecido um valor zero.

3) (procedimento) Escreva um algoritmo que apresente um menu com quatro opções:


1 – Inserir
2 – Remover
3 – Escrever na Tela o Vetor
4 – Sair
Considere um vetor de 20 posições com valores inteiros. Quando for escolhida a opção
número 1, uma subrotina chamada insere deve inserir um elemento (número) fornecido em
uma posição informada do vetor. A subrotina deve receber por referência o número a ser
inserido e a posição(índice) a ser inserido. Quando for escolhida a opção número 2, uma
subrotina chamada remove deve eliminar um elemento de um vetor. A subrotina deve
receber por referência a posição (índice) do elemento a ser eliminado. A subrotina deverá
apresentar na tela o valor existente na posição removida e substituir no vetor por zero.
Quando for escolhida a opção número 3, uma subrotina chamada escreve deve escrever na
tela os elementos do vetor. Quando for escolhida a opção número 4 o programa deverá ser
encerrado.

4) (procedimento) Faça uma subrotina que receba uma matriz M(10,10), o número de uma
linha L, o número de uma coluna C e produza como resultado a matriz N(9,9) resultante da
remoção da linha L e da coluna C

5) (procedimento) Faça uma subrotina que receba dois vetores V1(100) e V2(100) em que
cada posição contem um dígito e retorne V3(101) com a soma dos números nos vetores.
Ex: V1 = 0 0 0 3 2 1
V2 = 0 0 4 7 3 2
-----------------------
V3 = 0 0 5 0 5 3

6) A tabela abaixo expressa os valores de apartamentos de diferentes metragens em diferentes


bairros da cidade de Vitória. As colunas dessa Matriz 5x5 contém os valores para cada
metragem (100, 150, 200, 250 ou 300m2) e as linhas os valores para cada Bairro. Faça um
algoritmo principal que chama os seguintes subalgoritmos abaixo (a, b, c, d, e). O algoritmo
principal deve ler a matriz; escrevê-la; e repetidamente permitir a escolha de uma das
opções (1, 2 ou 3).
a) Procedimento de Leitura da matriz 5x5;
b) Procedimento de Escrita da matriz 5x5;
c) (opção 1) Função em que a pessoa informa o bairro (linha) e retorna o preço do
apartamento mais caro do bairro;
d) (opção 2) Função em que a pessoa informa o bairro (linha) e retorna o preço do
apartamento mais barato do bairro;
e) (opção 3) Função em que a pessoa informa o bairro (linha) e a metragem (coluna) e
retorna o preço do apartamento;
100 m² 150 m² 200 m² 250m² 300 m²
Centro 70 80 90 100 200
Jardim da penha 120 180 240 300 360
Jd. Camburi 100 150 250 300 450
Mata da Praia 180 250 360 410 540
Maruípe 90 130 170 210 350

7) Faça um algoritmo que leia uma frase em uma variável do tipo caractere e informe quantas
palavras há nessa frase. Use uma função.

8) Considerando a necessidade de desenvolver uma agenda que contenha nomes, endereços e


telefones de 10 pessoas, construa um programa com uso de vetores e sub-rotinas que
apresente um menu com as seguintes funcionalidades:
a) cadastrar contato: cadastra o nome (caractere), endereço (caractere) e telefone (inteiro)
b) pesquisa nome: busca um nome entre os nomes existentes e apresenta todas as
informações da pessoa encontrada.
c) classificar as contatos: ordena os vetores de nome, endereço e telefone por ordem de
nome.
d) apresentar contatos: apresenta todas as informações de todas as pessoas
e) sair do programa: termina o programa

9) Elabore um programa que armazene o nome e a altura de 15 pessoas (dois vetores, um de


caractere e um de real) . O programa deverá utilizar sub-rotinas para apresentação do menu
e para as seguintes ações:
a) Cadastrar o nome e altura das 15 pessoas;
b) Apresentar o nome e altura das pessoas menores que 1,5m
c) Apresentar o nome e altura das pessoas maiores que 1,5m
d) Apresentar o nome e altura de todas as pessoas e a média das alturas armazenadas
e) Sair do programa

10) Escreva um programa que é informado repetidamente 3 notas de um aluno. Funções


receberão como parâmetro as 3 notas de um aluno e uma letra. Se a letra for A uma função
calculará a média aritmética das notas do aluno, se for P, uma função calculará a média
ponderada (pesos: 5, 3 e 2) e se for H, uma função calculará a média harmônica. A média
harmônica dos números reais positivos a1,...,an é definida como sendo o número de
membros dividido pela soma do inverso dos membros, como segue. O programa deverá
parar se for fornecida uma letra X.

11) Faça um programa em que o usuário fornece um valor inteiro e positivo. Uma função
deverá receber o valor como parâmetro e retornar o valor lógico Verdadeiro caso o valor
seja primo e Falso em caso contrário. O programa deverá informar se o valor é primo ou
não baseado no valor lógico de retorno da função.

12) Faça um programa em que um usuário fornece valores de horas, minutos e segundos e o
programa transforma em segundos e apresenta o resultado. Uma função deverá fazer a a
conversão.

13) Faça um programa que o usuário informa a sua nota e o programa apresenta na tela o
conceito equivalente. Uma função deverá converter a nota para conceito conforme a tabela
abaixo.
Nota Conceito
de 0,0 a 4,9 D
de 5,0 a 6,9 C
de 7,0 a 8,9 B
de 9,0 a 10,0 A

14) Escreva um programa que leia 3 valores inteiros e informe o tipo de triãngulo que os valores
podem formar. A(s) função (ões) deverá(ão) receber os 3 valores X, Y e Z e verificar se
esses valores podem ser os comprimentos dos lados de um triângulo e, neste caso, retornar
qual o tipo de triângulo formado.

15) Faça um programa que leia repetidamente valores N inteiros e apresente a tabuada de N
conforme o exemplo abaixo. O programa deverá parar quando for fornecido um valor
negativo. Um procedimento deverá utilizar como parâmetro o valor N fornecido e
apresentar a tabuada de N.
1xN=N
2 x N = 2N
...
N x N = N2

16) Faça um programa que leia repetidamente 5 valores e carregue os mesmos em um Vetor A
(var. global). Um procedimento fatorial deverá calcular o fatorial de todos os valores e
colocar nas respectivas posições de um vetor B (var. global). O valor de todos os 5 fatoriais
deverá ser apresentado em cada repetição. O programa deverá parar quando for lido valor
negativo para a 1ª posição do vetor A.

17) Faça um programa que leia todos os elementos de uma matriz 5x6. O programa principal
deverá chamar e apresentar o resultado de cada uma das funçõs abaixo A matriz deverá ser
uma variável global não sendo passada como parâmetro da função.
a) a média aritmética dos elementos abaixo da diagonal principal.
b) a soma dos elementos acima da diagonal principal.
c) a média aritmética dos elementos da diagonal principal
d) o menor elemento da matriz
e) a soma dos elementos da matriz

18) As informações de conta corrente de correntistas de um banco são armazenadas em duas


estruturas de dados, um vetor e uma matriz que, respectivamente, guardam as informações de
números de contas corrente (vetor), os saldos bancários e os limites de cheque especial (matriz).

O significado da informação “limite do cheque especial” é o valor máximo negativo que a


conta de um correntista pode atingir. Por exemplo, o saldo da conta 13 pode chegar no
máximo a R$ -100,00.

vetor matriz
pos. números conta saldo sem o limite do cheque
corrente cheque especial especial
1 8731 253,00 200,00
2 0257 427,00 0,00
3 1458 12,00 500,00
conta 13 4 0013 -25,00 100,00
5 1729 1200,00 1000,00
...

procedimento cadastrar_contas():
O procedimento deverá permitir o cadastramento das informações de todos os correntistas de
uma única vez.
procedimento relatorio_contas():
O procedimento deverá apresentar um relatório com todas as informações das contas bancárias
existentes.

funcao deposito_conta(conta: inteiro; valor: real): real


função que acrescenta valor em conta. A função deverá retornar o saldo bancário ou -9999 caso
a conta seja inexistente.

funcao debito_conta (conta: inteiro; valor: real): real


função que debita valor de conta. A função deverá retornar o saldo bancário considerando o
cheque especial, ou -9998 se o saldo incluindo o limite do cheque especial for insuficiente ou -
9999 se a conta for inexistente.

Ex. 1: se o for realizada uma tentativa de débito de 100 de uma conta que possui 30 de saldo e
limite de cheque especial de 100 (saldo com limite ficando em 130) o saldo ficará em -70 que é
abaixo do limite do cheque especial da conta e a função retornará -70.

Ex. 2: se o for realizada uma tentativa de débito de 200 de uma conta que possui 30 de saldo e
limite de cheque especial de 100 (saldo com limite ficando em 130) o saldo ficaria em -170 que
é acima do limite do cheque especial da conta. Neste caso o débito não deverá ser realizado e o
saldo ficará no mesmo valor (30) e a função retornará -9998.

o algoritmo principal deverá cadastrar as contas (invocar o procedimento cadastrar_contas),


apresentar um relatório da situação inicial das contas bancárias (invocar o procedimento
relatorio_contas), repetidamente permitir a realização de operações de depósito ou débito sobre
contas por meio de um menu com as opções abaixo e ao terminar apresentar um relatório da
situação final das contas bancárias (procedimento relatorio_contas)
Após invocar as funções deposito_conta ou debito_conta, o programa principal deverá
apresentar o número da conta, o novo saldo ou “conta inexistente”se for retornado -9999 ou
“saldo insuficiente” se for retornado -9998.

1 Depósito em conta
2 Débito em conta
3 Sair