Instituto Politécnico de Setúbal
Escola Superior de Tecnologia
Departamento de Sistemas e Informática
Laboratório 11 – Estruturas
Disciplina de Introdução à Programação
Ano Lectivo 2006/2007
Série 8 – Utilização de estruturas
Objectivos da Série:
Com esta série de exercícios pretende-se que o aluno:
1. Perceba a necessidade e a utilidade na utilização de estruturas. 2. Reconheça a diferença entre estruturas e vectores.
3. Pratique o acesso a membros de estruturas e a passagem de estruturas para subprogramas.
4. Conheça a definição de novos tipos de dados por uma questão de simplificação.
Exercício 1
De entre as seguintes definições de estruturas e novos tipos de dados e declarações de variáveis, indique as que são inválidas e apresente os argumentos em que se baseia a sua decisão:
1- Struct Data {
int dia, ano; char mes[12]; } 2- struct Pessoa { int idade; char nome[60]; } Paulo;
3- struct Pessoa Carlos, Tobias;
4- struct {
int dia, mes, ano;
};
5- typedef struct Aluno {
int num;
char email[30], nome[60];
} ALUNO;
6- struct ALUNO hulk;
7- ALUNO barnabe, lista_alunos[10];
8- struct {
int dia, mes, ano; } data_nasc;
9- struct Data { int dia, ano; char mes[12];
} data_inicial = {23,”Jan”,1998};
10- typedef struct Data TDATA;
11- TDATA tabela[2] = {{12,1999,”Mar”}, {01,2001,”Dez”}};
12- typedef struct {
int num;
char nome[50];
TDATA dt_matricula;
} ALUNINHOOO;
13- struct ALUNINHOOO a1={232456,”passos dias aguiar”,{2,06,”Nov”}};
12- typedef struct al {
int num;
char nome[50]; struct Data {
int dia, ano;
char mes[12];
} dt_matricula; } ALUNINHOOO alunoX;
Exercício 2
Desenvolva um programa em que:
- Declare um novo tipo denominado pessoa que contenha o nome, idade, salário e data de nascimento. typedef struct { int Dia; char Mes[3+1]; int Ano; } DATA;
typedef struct pessoa {
char Nome[100];
int Idade; float Salario;
DATA dt_Nasc;
} TPESSOA;
- Adicione um dia à data de nascimento da variável simples.
- Actualize a segunda pessoa do vector colocando 1999 no ano da data. - Altere o mês da última pessoa do vector para “NOV”.
- Mostre no ecrã a primeira letra de cada um dos meses das pessoas do vector.
- Escreva um subprograma que permita escrever no ecrã os valores existentes numa estrutura do tipo TPESSOA recebida como argumento.
- Escreva um subprograma que carregue os dados para uma estrutura TPESSOA a partir do teclado.
- Utilize os subprogramas anteriores para preencher e mostrar o vector de 3 pessoas.
Exercício 3
Escreva um programa que, para um parque de estacionamento, após ler os momentos de chegada e de partida apresente no ecrã o preço a cobrar pelo estacionamento. A
especificação mais detalhada do problema encontra-se nos acetatos (16 e 17) sobre estruturas.
Exercício 4
Desenvolva uma aplicação para registo e consulta de veículos automóveis para stand de usados.
a) Defina um novo tipo de dados chamado Automovel que tenha a seguinte informação: • Marca • Ano • Nº Série motor • Cor • Preço
b) Defina um subprograma chamado Construtor que inicie os valores dos campos de um Automovel.
c) Defina os seguintes subprogramas “selectores”: • getMarca – retorna o valor do campo marca. • getAno – retorna o valor do campo ano. • getSerie – retorna o valor do campo Série. • getCor – retorna o valor do campo Cor. • getPreco – retorna o valor do campo Preço. d) Defina o seguinte subprograma “modificador”:
e) No programa principal:
• Crie uma base de dados de informação de automóveis (através da criação de um vector de Automóveis).
• E teste os próximos subprogramas. f) Defina os seguintes subprogramas:
• PreencheBD – para preenchimento da base de dados.
• ProcuraMarca – lista os automóveis de uma determinada marca. • ProcuraAno – lista os automóveis de um determinado ano.
• AlteraPreco - actualiza o preço para automóveis de um determinado ano. • QuantosMarcaAno – determina quantos automóveis existem de uma
determinada marca do ano X com preço abaixo de precoN.
• ListaAutomovelOrdemSerie – lista todas as características de um automóvel pelo seu nº de série (ordem crescente).