Sie sind auf Seite 1von 8

Programação

Folha Prática 5

Lab. 5

Departamento de Informática
Universidade da Beira Interior
Portugal
2017

Copyright Ó 2000 All rights reserved.


LAB. 5
5ª semana
SUBPROGRAMAS
1. Revisão.
2. Objectivos.
3. Exercícios
Lab. 5

SUBPROGRAMAS

1. Revisão
1. Cabeçalho (tipo de retorno, nome e parâmetros) e corpo de uma função.
2. Protótipo: declaração da função.
3. Chamada da função.
4. Implementação da função.
5. Comunicação entre funções.

2. Objectivos
No final deste módulo prático, o aluno deve ser capaz de:
1. Fazer a análise prévia dum problema, decompor um problema em sub-problemas, e depois, para cada
um deles, identificar as entradas e a saída, bem como um algoritmo para cada sub-problema que
produza a sua saída a partir das suas entradas.
2. Os subprogramas por ora tratados podem ter n entradas, mas só têm uma saída.
3. Programar em C usando subprogramas e estruturas de controlo.

3. Exercícios

Exercício 5.1 (Par ou ímpar)


Escreva um programa em C que determine que determine se um dado número inteiro é par ou ímpar. Para
isso, deverá usar a função par, cujo protótipo a seguir se apresenta:
int par (int);
• Retorna 1 se o inteiro passado como parâmetro for par e 0 caso contrário.
Exercício 5.2 (Maior de 3 números – versão 1)
Escreva um programa em C que determine o maior de três números inteiros.
Deverá usar a função maiorDeTres, cujo protótipo a seguir se apresenta e que devolve o maior dos
inteiros passados como parâmetro.
int maiorDeTres (int, int, int);

Exercício 5.3 (Maior de 3 números – versão 2)


Repita o exercício usando simplesmente a função maior que retorna o maior de dois números:
int maior (int, int);

Exercício 5.4 (Máximo e mínimo de N números)


Escreva um programa em C que permita determinar o maior e o menor número duma sequência de N
números inteiros dados pelo utilizador. O valor de N deverá ser superior ou igual a 2. Se não for o seu
valor deverá ser pedido novamente até obter um valor válido.
A introdução de números deverá terminar quando forem inseridos N números. Nessa altura a aplicação
deverá mostrar o valor máximo e mínimo de entre os valores introduzidos.

Deverá usar as funções maximo e minimo, cujos protótipos a seguir se apresentam:

float maximo (float, float);


• Devolve o maior dos reais passados como parâmetros.
float minimo (float, float);
• Devolve o maior dos reais passados como parâmetros.

Exercício 5.5 (Média de N números)


Escreva um programa em C que determine a média duma sequência de N números inteiros dados pelo
utilizador.
Deverá usar a função media, cujo protótipo a seguir se apresenta e que devolve a media dos inteiros:
float media (int);
O argumento passado à função media é o valor N, sendo que os números inteiros são fornecidos pelo
utilizador via scanf.

Exercício 5.6 (Tabuada)


Escreva um programa em C que apresente no ecrã a tabuada de N. Para isso deverá pedir ao utilizador o
valor de N que deverá ser obrigatoriamente maior ou igual 1 e menor ou igual a 10. A tabuada
apresentada é o exemplo para N = 2.
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20

Deverá usar a função tabuada, cujo protótipo a seguir se apresenta e que escreve no ecrã a tabuada do
inteiro passado como parâmetro:
void tabuada (int);

Exercício 5.7 (Quadrado de números)


Escreva um programa em C que apresente no ecrã um quadrado de números como o que se segue. Para
isso deverá pedir ao utilizador o valor de N que deverá ser obrigatoriamente maior ou igual 2. O quadrado
apresentado é o exemplo para N = 5.

1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9

Deverá usar a função quadrado, cujo protótipo a seguir se apresenta e que escreve no ecrã um quadrado
do tipo anterior onde o inteiro passado como parâmetro é o número de linhas:
void quadrado (int);

Exercício 5.8 (Árvore de Natal)


Escreva um programa em C que desenhe no ecrã uma árvore de Natal como a que se segue.

*
***
*****
*******
*********
***********
*************
***
***
***
***

Deverá usar a função escreveCaracter, cujo protótipo a seguir se apresenta e que escreve o caracter
passado no primeiro parâmetro tantas vezes quantas forem passadas no segundo parâmetro:
void escreveCaracter (char, int);

Exemplo: escreveCaracter (‘*’, 13) escreve 13 vezes o caracter ‘*’ no ecrã.

Deverá também pedir ao utilizador:


• o valor de B que representa o número de asteriscos (*) na base da árvore. O valor de B deverá
ser obrigatoriamente ímpar e maior ou igual 3.
• o valor de L e A que representam, respectivamente a largura e a altura do tronco da árvore. A
largura do tronco L deverá ser pelo menos 1 asterisco, deverá ser obrigatoriamente ímpar e não
poderá ultrapassar metade de B, isto é metade do número de asteriscos da base. A altura do
tronco A deverá ser pelo menos 2 asteriscos e também não deverá ultrapassar metade de B. Em
caso de valores inválidos o programa deverá apresentar um erro e voltar a pedi-los.
O exemplo da árvore acima tem uma base com B = 13 asteriscos, um tronco com largura L = 3 asteriscos
e altura A = 4 asteriscos.

Exercício 5.9 (Pirâmide de números)


Escreva um programa em C que apresente num ecrã uma pirâmide de números como a que se segue.
Para isso deverá pedir ao utilizador o valor de N que deverá ser obrigatoriamente maior ou igual 2. A
pirâmide apresentada é o exemplo para N = 5.
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1

Deverá usar as funções com os protótipos seguintes:

void escreveCaracter (char, int);


• escreve o carácter passado no primeiro parâmetro tantas vezes quantas forem passadas no
segundo parâmetro.

void escreveNumerosAsc (int, int);


• escreve os números inteiros entre o primeiro parâmetro e o segundo em ordem crescente.

void escreveNumerosDesc (int, int);


• escreve os números inteiros entre o primeiro parâmetro e o segundo em ordem decrescente.

Exercício 5.10 (Pirâmide de números invertida)


Altere o programa anterior para desenhar uma pirâmide de números invertida.

1 2 3 4 5 4 3 2 1
1 2 3 4 3 2 1
1 2 3 2 1
1 2 1
1

Exercício 5.11 (Triângulos)


Construa as seguintes funções:

void escreveCaracter (char, int);


• escreve o carácter passado no primeiro parâmetro tantas vezes quantas forem passadas no
segundo parâmetro.

void triangulo1 (int);


• Recebe o número de caracteres que formam a base de um triângulo rectângulo. Desenha o
triângulo usando a função escreverCaracter. Por exemplo, se base = 5, o triângulo a criar deve
ser o seguinte:
T
TT
TTT
TTTT
TTTTT

void triangulo2 (int base);


• Recebe o número de caracteres que formam a base de um triângulo rectângulo. Desenha o
triângulo usando a função escreverCaracter. Por exemplo, se base = 5 o triângulo a criar deve
ser o seguinte:

TTTTT
TTTT
TTT
TT
T

A função escreverCaracter deve ser usada dentro das funções triangulo1 e triangulo2 para escrever os
caracteres ' ' (espaço) e 'T' (letra T maiúscula).

O programa principal deve pedir ao utilizador o tamanho da base e chamar as funções triangulo1 e
triangulo2 para construir os triângulos.

EXEMPLO DE INPUT/OUTPUT:
Introduza o tamanho da base:
6

T
TT
TTT
TTTT
TTTTT
TTTTTT

TTTTTT
TTTTT
TTTT
TTT
TT
T

Exercício 5.12 (Triângulos – versão 2)


Altere as funções do exercício anterior para desenhar os seguintes triângulos e produzir o output que se
segue quando o tamanho da base é 6:

TTTTTT
TTTTT
TTTT
TTT
TT
T

T
TT
TTT
TTTT
TTTTT
TTTTTT

Das könnte Ihnen auch gefallen