Técnicas de
Programação I
Conceitos básicos C/C++
Material baseado nas aulas da Profa. Isabel Harb Manssour
http://www.inf.pucrs.br/~manssour/LaproI, entre outros materias
Registros e Arquivos
z
Conceito de Registros
z
Sintaxe na Linguagem C
z
z
z
z
Struct
Vetor de Struct
exercícios
Introdução a Arquivos
z
z
Funções para Manipular Arquivo Texto
Exercícios
1
Registros: Utilização
z
Vetores e matrizes
z
z
z
Problemas reais
z
z
Estruturas de dados homogêneas
Armazenam vários valores, mas todos de um mesmo
Coleções de dados que são de tipos diferentes
z Exemplo: ficha de um cadastro de cliente
Ficha:
Nome: ________
Endereço: ______
Telefone: _______
Salário: ________
Idade: _________
Nome: string
Endereço: string
Telefone: string
Salário: float
Idade: int
Registros: Características
z
z
z
z
z
z
Tipo de dado estruturado heterogêneo
Coleção de variáveis referenciadas sobre um mesmo nome
Permite agrupar dados de diferentes tipos numa mesma
estrutura:
z ao contrário de matrizes que possuem elementos de um mesmo
tipo
Cada componente de um registro pode ser de um tipo diferente
z (int, char, ...)
Estes componentes são referenciados por um identificador
Utilizado para armazenar informações de um mesmo objeto
z Carro Æ cor, marca, ano, placa, chassi
z Pessoa Æ nome, idade, endereço
2
Registros: Características
z
Registro:
z
z
Conjunto de campos relacionados
Exemplo:
z
z
nome, endereço, telefone, salário e idade de uma
pessoa
Elementos de um registro
z
z
Denominados campos ou membros do registro
Exemplo: nome
Registros: Sintaxe C++
z
z
A palavra reservada struct indica ao compilador
que está sendo criada um registro
Uma Struct normalmente é declarada após incluir
as bibliotecas e antes da função main
z
z
Não é obrigatório
Sintaxe:
struct <identificador_struct> {
tipo <nome_variável_campo1>;
tipo <nome_variável_campo2>;
…
} <variáveis_estrutura>;
3
Registros: Sintaxe C++
z
z
z
A informação contida em uma struct pode ser
atribuída a outra struct do mesmo tipo
Não é necessário atribuir os valores de todos os
campos separadamente
Por exemplo:
z
z
z
<var1> = <var2>;
Todos os campos de <var1> receberão os valores
correspondentes dos campos de <var2>
Para acessar os campos da struct:
z
z
Utiliza-se o nome da variável struct, seguido de ponto,
seguido do nome do campo
Exemplo: <var1>.<nome_variável_campo2>;
Struct: Exemplo
z
z
z
Declaração de um Struct endereço que guarda os
elementos nome, rua, cidade, estado e cep:
struct T_endereco{
char nome[30];
char rua[40];
char cidade[20];
char estado[3];
long int cep;
};
Foi feita apenas a declaração da struct, ainda não foi criada
nenhuma variável do tipo da struct endereço
O comando para declarar uma variável com esta struct é:
z
[struct] T_endereco endereco;
z
A palavra reservada “struct” é opcional
4
Struct: Exemplo
z
Para inicializar o cep da variável endereco que é
uma variável da struct endereço:
z
z
Para obter o nome da pessoa e colocar na string
nome da struct se poderia utilizar:
z
z
endereco.cep = 242100450;
cin >> endereco.nome;
Para percorrer toda a string rua seria:
z
for(int i=0; i < 40; i++)
cout << info_end.rua[i];
Struct: Exemplo
struct T_aluno {
char nome[40];
float P1;
float P2;
float T;
int faltas;
};
int main() {
T_aluno joao, maria;
joao.P1 = 9.5;
joao.P2 = 8.5;
joao.T = 9.0;
joao.faltas = 4;
maria = joao;
}
5
Exemplo
#include <stdio.h>
#include <string.h>
struct endereco {
char rua[40];
int num;
int complemento;
char cidade[20];
char estado[3];
char cep[10];
};
int main() {
struct endereco e1;
struct endereco e2;
//
//
//
//
declaração de variáveis do
tipo "endereco" compilador
aloca memoria para
todos os campos
:
:
Exemplo
// inicialização dos campos de e1...
strcpy(e1.rua, "Avenida Ipiranga");
e1.num = 1234;
e1.complemento = 101;
strcpy(e1.cidade, "Porto Alegre");
strcpy(e1.estado, "RS");
strcpy(e1.cep, "90000-123");
// inicialização dos campos de e2...
strcpy(e2.rua, "Rua Lima e Silva");
e2.num = 1987;
e2.complemento = 308;
strcpy(e2.cidade, "Porto Alegre");
strcpy(e2.estado, "RS");
strcpy(e2.cep, "90000-345");
6
Exemplo
:
// exibição dos dados
cout << e1.rua << e1.num <<
cout << e1.cep << e1.cidade
cout << e2.rua << e2.num <<
cout << e2.cep << e2.cidade
}
e1.complemento;
<< e1.estado;
e2.complemento;
<< e2.estado;
Vetores de Struts
z
Para declarar um vetor de struct:
z
z
z
Definir a struct
Declarar o vetor do tipo struct criado
Exemplo:
struct aluno Turma380[28];
struct endereco vetorEndAmigos[100];
7
Vetores de Struts
z
Manipulação dos dados de um vetor de struct:
z
z
fornecer o índice e o campo
Exemplo:
strcpy(Turma380[0].nome, “Fulano”);
Turma380[0].P1 = 9.5;
Turma380[0].P2 = 8.5;
Turma380[0].T = 9.0;
Turma380[0].faltas = 4;
strcpy(vetorEndAmigos[0].rua, “Carlos Gomes”);
strcpy(vetorEndAmigos[1].rua, “Goethe”);
Exemplo
#include <iostream.h>
struct endereco{
char nome[30];
char rua[40];
char cidade[20];
char estado[3];
long int cep;
};
main() {
struct endereco info_end[100];
:
// Imprime todos os nomes do vetor
for(int i = 0; i < 100; i++)
cout << info_end[i].nome;
8
Exercícios
z
z
Criar uma estrutura chamada DadosAluno, que
armazena o nome e idade de um aluno. Na função
main: criar uma variável que é uma estrutura
DadosAluno; ler o nome e a idade de um aluno e
armazenar na variável criada; exibir na tela o nome do
aluno, caracter por caracter, e a idade do aluno.
Considerando o exercício anterior, criar uma variável
vetor da estrutura DadosAluno. O programa deve
obter o nome e a idade de 10 alunos. Depois, estes
dados devem ser exibidos.
Exercícios
z
z
Fazer um programa que cria uma estrutura livro, que
contém os elementos nome, editora, isbn, ano de
edição, número de páginas e preço. Criar uma
variável desta estrutura que é um vetor de 5
elementos. Ler os valores para a estrutura e imprimir
a média do número de páginas do livros.
Foi realizada uma pesquisa entre 500 habitantes de
uma certa região. De cada habitante foram coletados
os dados: idade, sexo, salário e número de filhos.
Construa um programa C++ que armazene as
informações da pesquisa e calcule a média do salário
dos habitantes e de filhos e liste os habitantes com
salário inferior a média e o número de filhos superior a
média.
9
Download

Fundamentos de Programação (C++)