LINGUAGENS DE PROGRAMAÇÃO
Caderno de Exercícios - 2002
Engenharia Informática
Engenharia Electrotécnica
Informática de Gestão
Paulo Gouveia
Nuno Dinis
M. João Barros
Halestino Pimentel
Escola Superior de Tecnologia e de Gestão – IPB
Linguagens de Programação
caderno de exercícios - 2002
Exercício 1
a) Servindo-se do editor de texto “pico”, digite o código que se segue e crie com ele
um ficheiro, designado por “exerc1.c”, com o código fonte de um pequeno
programa em C.
#include <stdio.h>
main(){
printf(“Olá Mundo \n”);
}
b) Obtenha o respectivo programa executável, fazendo uso do compilador “gcc”.
c) Altere o programa de forma a visualizar no écran o seguinte texto:
Olá Mundo
Este é o meu primeiro programa
E funciona!!!
d) Volte, por fim, a modificar o programa de forma a obter o mesmo resultado da
alínea anterior, mas utilizando apenas uma única função printf( ).
Exercício 2
e) Após ter editado o código que se segue, gere o respectivo programa executável.
#include <stdio.h>
main(){
int a;
printf(“Inserir um número inteiro\n”);
scanf("%d",&a);
printf("O número é: %d \n",a);
}
f) Altere o programa de forma a que passe a ler dois números inteiros e a mostrar no
écran os seus valores.
g) Volte, finalmente, a alterar o programa de forma a visualizar no écran a soma dos
dois números.
Exercício 3
Escreva um programa capaz de ler para duas variáveis dois números inteiros, trocar o
seus conteúdos e mostrar os seus valores alterados.
Exercício 4
Um objecto, que se encontra inicialmente em repouso, é sujeito a uma força que lhe
provoca uma aceleração a de valor constante. O espaço percorrido s por esse objecto
num espaço de tempo t é dado pela seguinte equação:
s=
a *t 2
2
Pretende-se que construa um programa que pergunte os valores da aceleração e do
tempo e apresente, como resultado, o espaço percorrido.
Escola Superior de Tecnologia e de Gestão – IPB
2
Linguagens de Programação
caderno de exercícios - 2002
Exercício 5
Escreva um programa que solicite ao utilizador um determinado tempo em horas,
minutos e segundos, e que imprima o tempo correspondente em segundos.
Exercício 6
Escreva um programa que leia três valores inteiros e que indique para cada um deles
qual o desvio em relação à média.
Exercício 7
Execute o seguinte programa e comente os resultados.
#include <stdio.h>
main( ){
int n;
float x;
char ch;
x = 100.554;
n = x;
ch = ‘d’;
printf(“%f é o valor de x.\n”, x);
printf(“%d é o valor de n.\n”, n);
printf(“%c é o valor (char) de n.\n”, n);
printf(“%c é o valor de ch.\n”, ch);
printf(“%d é o valor (int) de ch.\n”, ch);
}
Exercício 8
a) Desenvolva um programa que lhe permita Calcular qual o capital acumulado de um
deposito bancário a prazo ao fim do 1º ano, sabendo que a taxa de juro anual é de
10% e que sobre os juros incide um imposto de capital de 20%.
b) Altere o programa anterior de forma a calcular o capital acumulado ao fim de n
anos.
Exercício 9
Implemente um programa que permita ler um valor inteiro e indique se este é ou não
zero.
a) Acrescente ao programa a possibilidade de indicar se o número introduzido é
positivo, negativo ou zero.
b) Reformule agora o programa de forma a permitir ler dois números inteiros e indicar
qual o maior.
c) Por fim modifique o programa de forma a ler três valores inteiros e os apresente
por ordem crescente.
Exercício 10
Desenvolva um programa que diga se um dado caracter lido é do tipo algarismo, letra
minúscula, letra maiúscula ou de um tipo não alfanumérico.
Escola Superior de Tecnologia e de Gestão – IPB
3
caderno de exercícios - 2002
Linguagens de Programação
Exercício 11
Implemente um programa que receba dois valores do tipo inteiro, e que apresente o
resultado das seguintes operações aritméticas aplicadas sobre eles:
Introduza dois valores
17
5
A divisão inteira é: 3
A divisão real é: 3.4
O resto da divisão é: 2
A raiz quadrada da soma dos dois valores é:
O primeiro valor incrementado é: 18
O segundo valor decrementado é: 4
Exercício 12
a) Sabendo que x e y são variáveis do tipo inteiro, diga qual o resultado de cada uma
das seguintes atribuições:
y=4+3*2;
x= 3*4/2-2;
y= y++;
x+=3;
y-= 2;
x /= 3;
y %=3;
x *= y++ + 3;
y=____________
x=____________
y=____________
x=____________
y=____________
x=____________
x=____________
y=____________
y=____________
b) Após ter calculado o resultado de cada uma das seguintes operações, implemente
um programa de forma a poder verificar os resultados obtidos.
Exercício 13
Escreva um programa capaz de identificar se uma pessoa é anã, gigante ou de
estatura normal. Utilize apenas condições IF. As condições são as seguintes:
Altura<1.40m
Anã
1.40m=<Altura<=2.00m Estatura normal
Altura>2.00m
Gigante
Exercício 14
Implemente um programa que calcule as raízes de uma equação de 2º grau. O
programa deve ser capaz de determinar se as raízes são reais, se não o forem deve
apresentar uma mensagem de erro.
Exercício 15
Utilizando uma estrutura switch, escreva um programa que leia um valor inteiro e que
consoante esse valor, imprima a mensagem respectiva.
1-BENFICA
2-S.C.BRAGA
3-G.D.BEIRA MAR
4-V.S.GUIMARÃES
Escola Superior de Tecnologia e de Gestão – IPB
4
caderno de exercícios - 2002
Linguagens de Programação
5-C.F.BELENENSES
6-ALVERCA
Se o número inserido não estiver compreendido por estes valores deverá aparecer a
mensagem “Clube sem motivos de interesse”.
Exercício 16
Rescreva o programa do exercício anterior utilizando uma estrutura IF ELSE.
Exercício 17
Implemente um programa que receba o peso de uma pessoa e o seu sexo, e indique o
seu estado actual.
Peso
..50
51..60
61..80
81..90
91..
Masculino
Estado actual
Muito Magro
Magro
Equilibrado
Gordo
Muito Gordo
Peso
..40
41..50
51..65
66..80
81..
Feminino
Estado actual
Muito Magra
Magra
Equilibrada
Gorda
Muito Gorda
Exercício 18
Crie um programa que simule uma máquina de calcular que efectue as operações
aritméticas mais básicas (+, -, /, x).
A-Adição
S-Subtracção
D-Divisão
M-Multiplicação
Q-Sair
Escolha opção: 2
Introduza dois números:
10
4
O resultado é igual a: 6
O que se encontra descrito acima deverá repetir-se até que o utilizador escolha a
opção Q.
Exercício 19
Implemente um programa que permita ler 10 números inteiros e que no final da leitura
apresente a soma de todos eles e a sua média. Utilize para isso uma estrutura de
repetição while.
Exercício 20
Execute um programa que leia um inteiro e se este for menor do que 5 calcule o seu
factorial, caso contrário não deverá efectuar qualquer operação.
Exercício 21
Utilizando uma estrutura for.
Escola Superior de Tecnologia e de Gestão – IPB
5
Linguagens de Programação
caderno de exercícios - 2002
a) Implemente um programa que calcule o factorial de 10 e o somatório dos 10
primeiros inteiros positivos.
b) Utilizando o programa efectuado na alínea anterior altere-o para que passe a
calcular o factorial de n e o somatório dos n primeiros inteiros positivos, sendo o
valor do n dado pelo utilizador.
Exercício 22
Construa um conversor electrónico que permita ler um valor em euros ou em escudos
e o converta para a outra moeda. Este programa deve permitir fazer quantas
conversões o utilizador quiser, devendo apenas terminar quando for inserido o valor
zero no campo das moedas.
Exercício 23
Implemente um programa que leia uma série de números. Este deve terminar quando
for introduzido o valor zero, ou então quando o número de valores introduzidos for
igual a dez. No final deverão ser apresentados o maior e o menor valores introduzidos.
Exercício 24
Reformule o programa criado no exercício 21
a) Defina funções para cálculo do factorial e do somatório.
b) Implemente as mesmas funções, sem fazer uso de qualquer estrutura de iteração.
Exercício 25
a) Implemente uma função que aceite como parâmetro uma letra do alfabeto [a-z, AZ] e faça a conversão de minúscula para maiúscula e vice-versa.
b) Construa agora um programa que faça a referida conversão tantas vezes quantas o
utilizador desejar.
Exercício 26
Tendo em conta a seguinte função matemática
|1
se x=1
f(x)= |
| x+f(x-1) se x>1
a) defina a respectiva função em C utilizando um ciclo for;
b) construa agora um programa que mediante o valor de x, inserido pelo utilizador,
calcule f(x);
c) implemente a mesma função na sua forma recursiva.
Exercício 27
a) Implemente em linguagem C a seguinte função matemática
| x
se y=1
g(x,y)= | x+g(x,y-1) se y>1
b) Construa um pequeno programa que faça uso dessa função.
Escola Superior de Tecnologia e de Gestão – IPB
6
caderno de exercícios - 2002
Linguagens de Programação
Exercício 28
a) Pretende-se que implemente num único ficheiro o conjunto de funções que se
segue, para a gestão de um acumulador de valores inteiros, tendo o cuidado de
manter o valor acumulado inacessível a funções que não pertençam a esse ficheiro.
Adiciona
– Aceita como parâmetro, um valor a somar ao valor acumulado.
Subtrai
– Aceita como parâmetro, um valor a subtrair ao val. acumulado.
Escreve
– Aceita como parâmetro, um valor a atribuir ao val. acumulado.
Limpa
– Coloca o valor acumulado a zero.
Le
– Devolve o valor acumulado.
b) Defina uma função main num outro ficheiro, incluindo-lhe o código necessário para
que o programa utilize todas as funções de gestão do acumulador.
Exercício 29
a) Considere que o espaço ocupado por um valor do tipo inteiro pode ser visto como
uma memória de 32 células de um bit, com endereços entre 0 e 31. Crie um
ficheiro com funções de leitura e escrita para uma memória desse tipo.
São as seguintes, as funções a implementar:
SetBit -
Permite colocar o bit da posição addr a 1;
ClrBit -
Permite colocar o bit da posição addr a 0;
ReadBit-
Permite ler o valor da posição addr;
ClrAll -
Permite colocar todas as posições da memória a zero.
Para representar o espaço de memória em causa, declare uma variável sem sinal,
que ocupe 4 Bytes de memória e que apenas seja acessível às funções anteriores.
b) Defina uma função main num outro ficheiro, incluindo-lhe o código necessário para
que o programa utilize todas as funções de gestão da memória anterior.
Exercício 30
Considere pch um apontador para a variável ch (do tipo caracter), pa e pb apontadores
respectivamente para as variáveis a e b (do tipo inteiro), e ppa um apontador para pa.
Implemente um programa que execute as instruções necessárias de forma a ter o
seguinte output:
Introduza um caracter: C
Introduza dois inteiros: 6 9
O endereço de ch = ???????
O endereço de pch = ???????
O conteúdo de pch = ???????
O valor apontado por pch = ?
Os endereços de a e b = ??????? e ???????
Os endereços de pa e pb = ??????? e ???????
Os conteúdos de pa e pb = ??????? e ???????
Os valores apontados por pa e pb = ? e ?
O endereço de ppa = ???????
O conteúdo de ppa = ???????
O valor apontado por ppa = ???????
O valor apontado pelo valor apontado por ppa = ?
Escola Superior de Tecnologia e de Gestão – IPB
7
caderno de exercícios - 2002
Linguagens de Programação
Exercício 31
Implemente um programa que leia dois valores para duas variáveis inteiras e recorra a
uma função para trocar os seus conteúdos, mostrando de seguida os seus valores
alterados.
Exercício 32
Escreva um programa capaz de ler inteiros até ser introduzido o valor zero. No final o
programa deverá apresentar qual o maior e menor número introduzidos (o valor zero
não conta). Para tal recorra a uma função responsável por actualizar o maior e o
menor valor armazenados, que será invocada após a leitura de cada valor. A mesma
deverá ter três parâmetros: um deles representa um dos números lidos, e os outros
dois representam o maior e menor.
Exercício 33
vect
3
4
2
1000
1002
1004
-1
1006
0
7
1
1008
1010
1012
-5
1014
9
1016
Supondo o array anterior, de valores do tipo short int, e p um apontador para short int,
responda às seguintes questões:
Qual o valor de
p=vect;
Qual o valor de
p+=3;
Qual o valor de
p=&vect[5];
*(p--)=10;
Qual o valor de
vect, vect+1 e de vect[6]?
p, *p, &p[0] e de p[0]?
p, *p, p[2], p+2 e de *(p+2)?
p, p-vect, *p+1, *(p+1) e de p[1]?
Exercício 34
Escreva um programa que leia 12 valores correspondentes às temperaturas médias
mensais ao longo de um ano. Terminada a leitura, o programa deve apresentar todos
os valores de temperatura registados.
a) Altere a versão do programa anterior de forma a que, após a leitura das
temperaturas, seja lido um valor de procura e indique se existe alguma
temperatura registada com esse valor. Construa o algoritmo de modo a que a
pesquisa termine assim que o valor seja encontrado, evitando assim percorrer
totalmente o vector quando tal não seja necessário.
b) Altere uma vez mais o programa de forma a que, depois da leitura, calcule a média
da temperatura anual, a temperatura mais elevada, a mais baixa e a amplitude
térmica (diferença entre a maior e a menor).
Exercício 35
a) Escreva uma função que leia n valores inteiros para um array cujo endereço entre
como parâmetro, sendo n inicialmente indicado pelo utilizador. A função deverá
devolver o número de valores lidos.
b) Implemente uma função que troque os conteúdos de dois vectores que receba
como parâmetros.
Escola Superior de Tecnologia e de Gestão – IPB
8
Linguagens de Programação
caderno de exercícios - 2002
c) Implemente uma função que mostre o conteúdo de um vector de inteiros.
d) Escreva um programa que faça uso das duas funções anteriores.
Exercício 36
Escreva um programa que leia para um vector apenas letras maiúsculas ou minúsculas,
devendo a leitura terminar quando for introduzido um caracter diferente dos atrás
descritos. De seguida escreva uma função que separe as maiúsculas das minúsculas,
colocando-as em arrays diferentes. E imprima os dois vectores resultantes.
Exercício 37
a) Escreva uma função que leia valores inteiros positivos. A leitura deverá terminar
com a introdução de um valor menor ou igual a zero.
b) Imprima no ecrã a sequência.
c) Escreva uma função que inverta a ordem dos elementos do vector.
d) Imprima a nova sequência.
e) Imprima apenas os valores superiores à média dos valores armazenados no array.
Exercício 38
Escreva um programa que permita armazenar num array valores inteiros lidos do
teclado que sejam superiores a zero e inferiores a 50. A leitura deverá terminar
quando for lido um valor inferior a zero (este valor não deve ser armazenado).
Acrescente-lhe então funções que façam o seguinte:
a) devolva a posição do valor mínimo contido no vector;
b) devolva a posição do valor máximo contido no vector;
c) mostre a diferença entre o valor máximo e o valor mínimo contidos no vector;
d) mostre todos os valores do array.
Conclua o programa de forma a que, após a leitura, mostre a diferença entre o valor
máximo e mínimo lidos, apresente todos os valores lidos e por fim mostre todos os
valores situados no array entre as posições dos valores mínimo e máximo.
Exercício 39
Pretendem-se guardar, numa pauta, as notas de todos os alunos do 1º ano de um
determinado curso, a todas as disciplinas. Utilize um array bidimensional (número de
disciplinas X número de alunos) para armazenar a informação pretendida. Construa um
programa, devidamente modularizado, que disponibilize repetidamente ao utilizador
um menu que inclua as seguintes opções:
a) Inserir pauta;
b) mostrar taxa de aprovação e reprovação a uma determinada disciplina;
c) mostrar qual a disciplina onde se verifica uma maior taxa de reprovações;
d) qual a média de um determinado aluno;
e) qual o aluno com melhor média.
Escola Superior de Tecnologia e de Gestão – IPB
9
Linguagens de Programação
caderno de exercícios - 2002
Exercício 40
Escreva uma função que, dada uma string como argumento, a inverta.
Exercício 41
Escreva uma função que, dada uma string, converta as respectivas letras para
maiúsculas.
Exercício 42
Escreva uma função, de protótipo char *mystrchr(char *, char), que devolva o
endereço da primeira ocorrência de um dado caracter numa string, ou NULL caso o
caracter não seja encontrado.
Exercício 43
Como sabe, a função scanf está limitada à leitura de uma única palavra. Escreva uma
outra função que não tenha a referida limitação. Essa função, de protótipo char
*mygets(char *, int), deve ler uma string do teclado para o endereço entrado como
parâmetro e devolver ainda esse endereço. A string deve ser lida, caracter a caracter,
até ser pressionado <enter> ou até ter uma dimensão igual ao valor entrado como
segundo parâmetro.
Exercício 44
a) Defina em C um novo tipo denominado TAula que contenha as seguintes
características: disciplina, número, sala, tipo (teórica, teórico-prática, prática),
curso e sumário.
b) Escreva agora a função LerSumario que permita ler todos os dados relativos a uma
determinada aula.
c) Escreva por fim a função MostrarSumario que permita mostrar todos os dados
relativos a uma dada aula.
Exercício 45
Considere a estrutura de dados:
typedef enum {jan=1, fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez} TMes;
typedef struct {
int dia;
TMes mes;
int ano;
} TData;
typedef struct {
char nome[30];
TData nasc; /* data de nascimento */
} TAniv;
Escreva agora as seguintes funções:
a) Uma função que solicite ao utilizador a informação dos diversos campos de uma
estrutura do tipo TAniv. A mesma deve devolver, como valor da retorno, essa
estrutura.
Escola Superior de Tecnologia e de Gestão – IPB
10
caderno de exercícios - 2002
Linguagens de Programação
b) Uma função que, dado um apontador para uma estrutura do tipo TAniv, apresente
a informação dessa estrutura da seguinte forma:
João nasceu no dia 13 de Agosto de 1976.
c) Uma função que apresente ao utilizador todos os dados recolhidos dos vários
aniversariantes.
d) Uma função que, depois de ler para uma string um nome (ou parte dele), mostre a
data de nascimento de todos aqueles cujo nome inclua essa string.
e) Escreva uma função que mostre a idade de uma determinada pessoa que se
encontre registada.
f) Uma função que remova o primeiro aniversariante registado.
g) Escreva finalmente um programa que faça uso de todas as funções anteriores,
facultando ao utilizador um menu com as seguintes opções: Registar
aniversariante; Consultar data de nascimento; Mostrar idade; Remover primeiro;
Listar todos os aniversariantes; Sair.
Exercício 46
Implemente um pequeno programa que simule as operações de uma máquina
calculadora rudimentar. Considere que as operações aritméticas possíveis são: x
(multiplicação), / (divisão), - (subtracção) e + (adição). O programa deve executar
apenas uma das 4 operações e ter como argumentos na linha de invocação:
operando1 operador operando2 (Exemplo: a.out 20 + 3).
Exercício 47
a) Implemente uma função que grave uma string, entrada como parâmetro, num
ficheiro denominado myfile.txt.
b) Implemente agora uma função para ler o ficheiro myfile.txt. A mesma deve ler a
string para o endereço entrado como parâmetro.
c) Implemente por fim um pequeno programa que faça uso das funções anteriores e
de outras que considere necessárias, e disponha do seguinte menu:
Ler do Ficheiro
- Permite ler o conteúdo do ficheiro para uma string
Gravar no Ficheiro
- Permite gravar a string no ficheiro
Mostrar no écran
- Permite ver o conteúdo da string
Ler do teclado
- Permite modificar a string
Exercício 48
Escreva um programa que conte o número de caracteres, de palavras e de parágrafos
de um ficheiro de texto cujo nome entre como argumento na linha de comando
(considere, para simplificar, que entre cada duas palavras existe sempre um único
espaço).
Exercício 49
Escreva um programa que faça a fusão de vários ficheiros de texto, dados os seus
nomes como argumentos da linha de comando, e escreva o resultado no écran.
Escola Superior de Tecnologia e de Gestão – IPB
11
Download

Exercícios de LP 2002