SlideShare a Scribd company logo
1 of 21
Estruturas em C/C++
struct
Prof. Márcio Roberto Rizzatto
Laboratório de Programação II
Ciência da Computação
FAI
Laboratório de Programação II
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Revisão Rápida
Qual a diferença entre um
algoritmo e um programa?
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Revisão Rápida
 Algoritmo
 Sequência de ações executáveis para a solução
de um determinado tipo de problema
 Exemplo: “Receita de Bolo”
 Em geral, algoritmos trabalham sobre
Estruturas de Dados
 Estruturas de Dados
 Conjunto de dados que representa uma situação
real
 Abstração da realidade
 Estruturas de Dados e Algoritmos estão
intimamente ligados
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Revisão Rápida
 Tipos de dados
 Os dados podem estar representados
(estruturados) de diferentes maneiras
 Normalmente, a escolha da representação é
determinada pelas operações que serão
utilizadas sobre eles
 Exemplo: números inteiros
 Representação por palitinhos: II + IIII = IIIIII
 Boa para pequenos números (operação simples)
 Representação decimal: 1278 + 321 = 1599
 Boa para números maiores (operação complexa)
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Revisão Rápida
 Programa
 Um programa é uma formulação concreta de um
algoritmo abstrato, baseado em representações
de dados específicas
 Os programas são feitos em alguma linguagem
que pode ser entendida e seguida pelo
computador
 Linguagem de máquina
 Linguagem de alto nível (uso de compilador)
 Aqui vamos utilizar a Linguagem C/C++
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Revisão Rápida
 Linguagem C
 Criada no início da década de 70 para a
programação do sistema operacional Unix
 Uma das linguagens mais utilizadas no mundo, e
serviu como base para outras como C++, Java,
C#, Perl, Python, etc.
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Revisão Rápida - Exemplo
#include<stdio.h>
#define MAX 10
int LeInteiro() {
int num;
printf(“Digite um numero: ");
scanf("%d", &num);
printf("n");
return num;
}
int main() {
int v[10], cont, aux, i, soma;
float media;
cont = 0;
aux = LeInteiro();
while(aux >= 0) {
v[cont] = aux;
aux = LeInteiro();
cont++;
}
soma = 0;
for(i=0;i<cont;i++)
soma += v[i];
media = soma / (float) cont;
printf("resultado: %fn",media);
}
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Revisão Rápida
 Tipos Abstratos de Dados (TAD)
 Agrupa a estrutura de dados juntamente com as
operações que podem ser feitas sobre esses
dados
 O TAD encapsula a estrutura de dados. Os
usuários do TAD só tem acesso a algumas
operações disponibilizadas sobre esses dados
 Usuário só “enxerga” a interface, não a
implementação
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Tipos Abstratos de Dados (TADs)
 Dessa forma, o usuário pode abstrair da
implementação específica.
 Qualquer modificação nessa implementação
fica restrita ao TAD
 A escolha de uma representação específica é
fortemente influenciada pelas operações a
serem executadas
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Exemplo: Lista de números inteiros
 Operações
 Faz Lista Vazia
 Insere número no começo da lista
 Remove de uma posição i
20 13 02 30Implementação por Vetores:
void Insere(int x, Lista L) {
for(i=0;...) {...}
L[0] = x;
}
20 13 02 30
Implementação por Listas Encadeadas
void Insere(int x, Lista L) {
p = CriaNovaCelula(x);
L^.primeiro = p;
...
}
Programa usuário do TAD:
int main() {
Lista L;
int x;
x = 20;
FazListaVazia(L);
Insere(x,L);
...
}
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Implementação de TADs
 Em linguagens orientadas por objeto (C++, Java) a
implementação é feita através de classes
 Em linguagens estruturadas (C, pascal) a
implementação é feita pela definição de tipos
juntamente com a implementação de funções
 Como vocês não viram o conceito de orientação por
objetos*, vamos utilizar os conceitos de C/C++ com
typedef e structs
 Orientação por objetos (classes, etc) vai ser vista
mais adiante em Programação Orientada para
Objetos (POO ou do inglês OOP) com C++.
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Estruturas (Structs) em C / C++
 Uma estrutura é uma coleção de uma ou mais
variáveis, possivelmente de tipos diferentes,
colocadas juntas sob um único nome para
manipulação conveniente
 Por exemplo, para representar um aluno são
necessárias as informações nome, matrícula, conceito
 Ao invés de criar três variáveis, é possível criar uma
única variável contendo três campos.
 Em C/C++, usa-se a construção struct para
representar esse tipo de dado
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Estruturas (Structs) em C / C++
#include<iostream>
#include<string>
using namespace std;
struct Aluno {
string nome;
int matricula;
char conceito;
};
int main() {
struct Aluno al, aux;
al.nome = “Pedro”
al.matricula = 200712;
al.conceito = ‘A’;
aux = al;
cout << aux.nome
}
Pedro
200712 A
al:
Pedro
200712 A
aux:
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Declaração de Tipos
 Para simplificar, uma estrutura ou mesmo
outros tipos de dados podem ser definidos
como um novo tipo
 Uso da construção typedef
typedef struct {
string nome;
int matricula;
char conceito;
} TipoAluno;
typedef int[10] Vetor;
int main() {
TipoAluno al;
Vetor v;
...
}
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
TADs em C
 Para implementar um Tipo Abstrato de
Dados em C, usa-se a definição de tipos
juntamente com a implementação de funções
que agem sobre aquele tipo
 Como boa regra de programação, evita-se
acessar o dado diretamente, fazendo o
acesso só através das funções
 Mas, diferentemente de C++ e Java, não há uma
forma de proibir o acesso.
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
 Uma boa técnica de programação é
implementar os TADs em arquivos separados
do programa principal
 Para isso geralmente separa-se a declaração
e a implementação do TAD em dois arquivos:
 NomeDoTAD.h : com a declaração
 NomeDoTAD.cpp : com a implementação
 O programa ou outros TADs que utilizam o seu
TAD devem dar um #include no arquivo .h
TADs em C
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Exemplo
 Implemente um TAD ContaBancaria, com os
campos número e saldo onde os clientes
podem fazer as seguintes operações:
 Iniciar uma conta com um número e saldo inicial
 Depositar um valor
 Sacar um valor
 Imprimir o saldo
 Faça um pequeno programa para testar o
seu TAD
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
ContaBancaria.h
// definição do tipo
typedef struct {
int numero;
double saldo;
} ContaBancaria;
// cabeçalho das funções
void Inicializa (ContaBancaria&, int, double);
void Deposito (ContaBancaria&, double);
void Saque (ContaBancaria&, double);
void Imprime (ContaBancaria);
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
ContaBancaria.cpp
#include<stdio.h>
#include"Contabancaria.h"
void Inicializa(ContaBancaria &conta, int numero, double saldo)
{
conta.numero = numero;
conta.saldo = saldo;
}
void Deposito (ContaBancaria &conta, double valor) {
conta.saldo += valor;
}
void Saque (ContaBancaria &conta, double valor) {
conta.saldo -= valor;
}
void Imprime (ContaBancaria conta) {
printf("Numero: %dn", conta.numero);
printf("Saldo: %fn", conta.saldo);
}
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Main.cpp
#include<stdio.h>
#include<stdlib.h>
#include "ContaBancaria.h"
int main (void)
{
ContaBancaria conta1;
Inicializa(conta1, 918556, 300.00);
printf("nAntes da movimentacao:n ");
Imprime(conta1);
Deposito(conta1, 50.00);
Saque(conta1, 70.00);
printf("nDepois da movimentacao:n ");
Imprime (conta1);
system("PAUSE");
return(0);
}
© Prof. Márcio Roberto Rizzatto Laboratório de Programação II
Exercício
 Implemente um TAD Número Complexo
 cada número possui os campos real e imaginário
 Implemente as operações:
 Atribui: atribui valores para os campos
 Imprime: imprime o número da forma “R + Ci”
 Copia: Copia o valor de um número para outro
 Soma: Soma dois números complexos
 EhReal: testa se um número é real
 Faça um pequeno programa para testar o
seu TAD

More Related Content

What's hot

mod2-mecanismos
mod2-mecanismosmod2-mecanismos
mod2-mecanismosdiogoa21
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STLMarcos Castro
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosMario Jorge Pereira
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Pacc UAB
 
Lógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalLógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalWesley R. Bezerra
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Leinylson Fontinele
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programaçãorodfernandes
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação João Piedade
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Gercélia Ramos
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Gercélia Ramos
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Gercélia Ramos
 
[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade
[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade
[Curso Java Basico - Orientacao a Objetos] Aula 35: RecursividadeLoiane Groner
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesLeinylson Fontinele
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 

What's hot (20)

Algoritmos: Tipos de Dados
Algoritmos: Tipos de DadosAlgoritmos: Tipos de Dados
Algoritmos: Tipos de Dados
 
mod2-mecanismos
mod2-mecanismosmod2-mecanismos
mod2-mecanismos
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
Recursividade
RecursividadeRecursividade
Recursividade
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
6 estruturas de dados heterogêneas
6  estruturas de dados heterogêneas6  estruturas de dados heterogêneas
6 estruturas de dados heterogêneas
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1
 
Lógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalLógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicional
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)
 
[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade
[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade
[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e Funções
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 

Viewers also liked

Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica Yuri Camelo
 
C++ apostila c++ nivel basico
C++   apostila c++ nivel basicoC++   apostila c++ nivel basico
C++ apostila c++ nivel basicorobinhoct
 
Conjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoConjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoElaine Cecília Gatto
 
Livro Linguagem C - Completo
Livro Linguagem C - CompletoLivro Linguagem C - Completo
Livro Linguagem C - CompletoMarcos Quinho
 
Fundamentos da programação de computadores 2ª edição
Fundamentos da programação de computadores   2ª ediçãoFundamentos da programação de computadores   2ª edição
Fundamentos da programação de computadores 2ª ediçãoLeandro Rocha de Oliveira
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dadosJean Martina
 
03 mips assembly language
03 mips assembly language03 mips assembly language
03 mips assembly languageMuberra Duman
 
Plan anual bimestral de desarrollo curricular ballester 2014
Plan anual bimestral de desarrollo curricular ballester 2014Plan anual bimestral de desarrollo curricular ballester 2014
Plan anual bimestral de desarrollo curricular ballester 2014Mariel Claure Alba
 
Fundamentos da Inteligencia Artificial :: Prof Dr. Carlos Estombelo
Fundamentos da Inteligencia Artificial :: Prof Dr. Carlos EstombeloFundamentos da Inteligencia Artificial :: Prof Dr. Carlos Estombelo
Fundamentos da Inteligencia Artificial :: Prof Dr. Carlos EstombeloRogerio P C do Nascimento
 
Linguagem C/C++: Condições ou expressões lógicas
Linguagem C/C++:  Condições ou expressões lógicasLinguagem C/C++:  Condições ou expressões lógicas
Linguagem C/C++: Condições ou expressões lógicasnataferraz
 
Curriculo Regionalizado Quechuas
Curriculo Regionalizado QuechuasCurriculo Regionalizado Quechuas
Curriculo Regionalizado Quechuasnroysr
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CAdriano Teixeira de Souza
 
Princípios e Práticas de Programação com C++
Princípios e Práticas de Programação com C++Princípios e Práticas de Programação com C++
Princípios e Práticas de Programação com C++Grupo A
 

Viewers also liked (20)

Estruturas
EstruturasEstruturas
Estruturas
 
Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica
 
C++ apostila c++ nivel basico
C++   apostila c++ nivel basicoC++   apostila c++ nivel basico
C++ apostila c++ nivel basico
 
Estrutura de Dados - Registros
Estrutura de Dados - RegistrosEstrutura de Dados - Registros
Estrutura de Dados - Registros
 
Linguagem C 07 Registros
Linguagem C 07 RegistrosLinguagem C 07 Registros
Linguagem C 07 Registros
 
Conjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoConjunto de instruções mips - introdução
Conjunto de instruções mips - introdução
 
Livro Linguagem C - Completo
Livro Linguagem C - CompletoLivro Linguagem C - Completo
Livro Linguagem C - Completo
 
Fundamentos da programação de computadores 2ª edição
Fundamentos da programação de computadores   2ª ediçãoFundamentos da programação de computadores   2ª edição
Fundamentos da programação de computadores 2ª edição
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
 
Apresentação c++ UFC-Quixadá
Apresentação c++ UFC-QuixadáApresentação c++ UFC-Quixadá
Apresentação c++ UFC-Quixadá
 
C++11
C++11C++11
C++11
 
03 mips assembly language
03 mips assembly language03 mips assembly language
03 mips assembly language
 
Plan anual bimestral de desarrollo curricular ballester 2014
Plan anual bimestral de desarrollo curricular ballester 2014Plan anual bimestral de desarrollo curricular ballester 2014
Plan anual bimestral de desarrollo curricular ballester 2014
 
Fundamentos da Inteligencia Artificial :: Prof Dr. Carlos Estombelo
Fundamentos da Inteligencia Artificial :: Prof Dr. Carlos EstombeloFundamentos da Inteligencia Artificial :: Prof Dr. Carlos Estombelo
Fundamentos da Inteligencia Artificial :: Prof Dr. Carlos Estombelo
 
Linguagem C/C++: Condições ou expressões lógicas
Linguagem C/C++:  Condições ou expressões lógicasLinguagem C/C++:  Condições ou expressões lógicas
Linguagem C/C++: Condições ou expressões lógicas
 
Curriculo Regionalizado Quechuas
Curriculo Regionalizado QuechuasCurriculo Regionalizado Quechuas
Curriculo Regionalizado Quechuas
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem C
 
Civilização Inca
Civilização IncaCivilização Inca
Civilização Inca
 
Raiz Quadrada
Raiz QuadradaRaiz Quadrada
Raiz Quadrada
 
Princípios e Práticas de Programação com C++
Princípios e Práticas de Programação com C++Princípios e Práticas de Programação com C++
Princípios e Práticas de Programação com C++
 

Similar to Estruturas em C++ (struct)

Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Alex Camargo
 
Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso CompletoProgramação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso Completothomasdacosta
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
Aula 14 estruturas - Programação 1
Aula 14 estruturas - Programação 1Aula 14 estruturas - Programação 1
Aula 14 estruturas - Programação 1Isaac Barros
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Isaac Barros
 
Aula 5 - Programação 1
Aula 5 - Programação 1Aula 5 - Programação 1
Aula 5 - Programação 1Isaac Barros
 
Introdução à linguagem C#
Introdução à linguagem C#Introdução à linguagem C#
Introdução à linguagem C#Antonio Trigo
 
Introdução a linguagem de programação C
Introdução a linguagem de programação CIntrodução a linguagem de programação C
Introdução a linguagem de programação CSchoolByte
 
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxAula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxaronoliveira3
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02thomasdacosta
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03thomasdacosta
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01thomasdacosta
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaLeinylson Fontinele
 

Similar to Estruturas em C++ (struct) (20)

aula01-TDA (1).ppt
aula01-TDA (1).pptaula01-TDA (1).ppt
aula01-TDA (1).ppt
 
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
 
Modulo02
Modulo02Modulo02
Modulo02
 
Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso CompletoProgramação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso Completo
 
Linguagem c parte 2
Linguagem c parte 2Linguagem c parte 2
Linguagem c parte 2
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Aula 14 estruturas - Programação 1
Aula 14 estruturas - Programação 1Aula 14 estruturas - Programação 1
Aula 14 estruturas - Programação 1
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1
 
Series lab
Series labSeries lab
Series lab
 
Aula 5 - Programação 1
Aula 5 - Programação 1Aula 5 - Programação 1
Aula 5 - Programação 1
 
Introdução à linguagem C#
Introdução à linguagem C#Introdução à linguagem C#
Introdução à linguagem C#
 
Introdução a linguagem de programação C
Introdução a linguagem de programação CIntrodução a linguagem de programação C
Introdução a linguagem de programação C
 
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxAula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01
 
Revista programar 21
Revista programar 21Revista programar 21
Revista programar 21
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
 

Recently uploaded

Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Centro Jacques Delors
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfJuliana Barbosa
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...AnaAugustaLagesZuqui
 
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxSlides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdLeonardoDeOliveiraLu2
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)Centro Jacques Delors
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxgia0123
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfLidianeLill2
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfFbioFerreira207918
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docPauloHenriqueGarciaM
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeLEONIDES PEREIRA DE SOUZA
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 

Recently uploaded (20)

Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxSlides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptx
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdf
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidade
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 

Estruturas em C++ (struct)

  • 1. Estruturas em C/C++ struct Prof. Márcio Roberto Rizzatto Laboratório de Programação II Ciência da Computação FAI Laboratório de Programação II
  • 2. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Revisão Rápida Qual a diferença entre um algoritmo e um programa?
  • 3. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Revisão Rápida  Algoritmo  Sequência de ações executáveis para a solução de um determinado tipo de problema  Exemplo: “Receita de Bolo”  Em geral, algoritmos trabalham sobre Estruturas de Dados  Estruturas de Dados  Conjunto de dados que representa uma situação real  Abstração da realidade  Estruturas de Dados e Algoritmos estão intimamente ligados
  • 4. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Revisão Rápida  Tipos de dados  Os dados podem estar representados (estruturados) de diferentes maneiras  Normalmente, a escolha da representação é determinada pelas operações que serão utilizadas sobre eles  Exemplo: números inteiros  Representação por palitinhos: II + IIII = IIIIII  Boa para pequenos números (operação simples)  Representação decimal: 1278 + 321 = 1599  Boa para números maiores (operação complexa)
  • 5. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Revisão Rápida  Programa  Um programa é uma formulação concreta de um algoritmo abstrato, baseado em representações de dados específicas  Os programas são feitos em alguma linguagem que pode ser entendida e seguida pelo computador  Linguagem de máquina  Linguagem de alto nível (uso de compilador)  Aqui vamos utilizar a Linguagem C/C++
  • 6. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Revisão Rápida  Linguagem C  Criada no início da década de 70 para a programação do sistema operacional Unix  Uma das linguagens mais utilizadas no mundo, e serviu como base para outras como C++, Java, C#, Perl, Python, etc.
  • 7. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Revisão Rápida - Exemplo #include<stdio.h> #define MAX 10 int LeInteiro() { int num; printf(“Digite um numero: "); scanf("%d", &num); printf("n"); return num; } int main() { int v[10], cont, aux, i, soma; float media; cont = 0; aux = LeInteiro(); while(aux >= 0) { v[cont] = aux; aux = LeInteiro(); cont++; } soma = 0; for(i=0;i<cont;i++) soma += v[i]; media = soma / (float) cont; printf("resultado: %fn",media); }
  • 8. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Revisão Rápida  Tipos Abstratos de Dados (TAD)  Agrupa a estrutura de dados juntamente com as operações que podem ser feitas sobre esses dados  O TAD encapsula a estrutura de dados. Os usuários do TAD só tem acesso a algumas operações disponibilizadas sobre esses dados  Usuário só “enxerga” a interface, não a implementação
  • 9. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Tipos Abstratos de Dados (TADs)  Dessa forma, o usuário pode abstrair da implementação específica.  Qualquer modificação nessa implementação fica restrita ao TAD  A escolha de uma representação específica é fortemente influenciada pelas operações a serem executadas
  • 10. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Exemplo: Lista de números inteiros  Operações  Faz Lista Vazia  Insere número no começo da lista  Remove de uma posição i 20 13 02 30Implementação por Vetores: void Insere(int x, Lista L) { for(i=0;...) {...} L[0] = x; } 20 13 02 30 Implementação por Listas Encadeadas void Insere(int x, Lista L) { p = CriaNovaCelula(x); L^.primeiro = p; ... } Programa usuário do TAD: int main() { Lista L; int x; x = 20; FazListaVazia(L); Insere(x,L); ... }
  • 11. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Implementação de TADs  Em linguagens orientadas por objeto (C++, Java) a implementação é feita através de classes  Em linguagens estruturadas (C, pascal) a implementação é feita pela definição de tipos juntamente com a implementação de funções  Como vocês não viram o conceito de orientação por objetos*, vamos utilizar os conceitos de C/C++ com typedef e structs  Orientação por objetos (classes, etc) vai ser vista mais adiante em Programação Orientada para Objetos (POO ou do inglês OOP) com C++.
  • 12. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Estruturas (Structs) em C / C++  Uma estrutura é uma coleção de uma ou mais variáveis, possivelmente de tipos diferentes, colocadas juntas sob um único nome para manipulação conveniente  Por exemplo, para representar um aluno são necessárias as informações nome, matrícula, conceito  Ao invés de criar três variáveis, é possível criar uma única variável contendo três campos.  Em C/C++, usa-se a construção struct para representar esse tipo de dado
  • 13. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Estruturas (Structs) em C / C++ #include<iostream> #include<string> using namespace std; struct Aluno { string nome; int matricula; char conceito; }; int main() { struct Aluno al, aux; al.nome = “Pedro” al.matricula = 200712; al.conceito = ‘A’; aux = al; cout << aux.nome } Pedro 200712 A al: Pedro 200712 A aux:
  • 14. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Declaração de Tipos  Para simplificar, uma estrutura ou mesmo outros tipos de dados podem ser definidos como um novo tipo  Uso da construção typedef typedef struct { string nome; int matricula; char conceito; } TipoAluno; typedef int[10] Vetor; int main() { TipoAluno al; Vetor v; ... }
  • 15. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II TADs em C  Para implementar um Tipo Abstrato de Dados em C, usa-se a definição de tipos juntamente com a implementação de funções que agem sobre aquele tipo  Como boa regra de programação, evita-se acessar o dado diretamente, fazendo o acesso só através das funções  Mas, diferentemente de C++ e Java, não há uma forma de proibir o acesso.
  • 16. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II  Uma boa técnica de programação é implementar os TADs em arquivos separados do programa principal  Para isso geralmente separa-se a declaração e a implementação do TAD em dois arquivos:  NomeDoTAD.h : com a declaração  NomeDoTAD.cpp : com a implementação  O programa ou outros TADs que utilizam o seu TAD devem dar um #include no arquivo .h TADs em C
  • 17. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Exemplo  Implemente um TAD ContaBancaria, com os campos número e saldo onde os clientes podem fazer as seguintes operações:  Iniciar uma conta com um número e saldo inicial  Depositar um valor  Sacar um valor  Imprimir o saldo  Faça um pequeno programa para testar o seu TAD
  • 18. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II ContaBancaria.h // definição do tipo typedef struct { int numero; double saldo; } ContaBancaria; // cabeçalho das funções void Inicializa (ContaBancaria&, int, double); void Deposito (ContaBancaria&, double); void Saque (ContaBancaria&, double); void Imprime (ContaBancaria);
  • 19. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II ContaBancaria.cpp #include<stdio.h> #include"Contabancaria.h" void Inicializa(ContaBancaria &conta, int numero, double saldo) { conta.numero = numero; conta.saldo = saldo; } void Deposito (ContaBancaria &conta, double valor) { conta.saldo += valor; } void Saque (ContaBancaria &conta, double valor) { conta.saldo -= valor; } void Imprime (ContaBancaria conta) { printf("Numero: %dn", conta.numero); printf("Saldo: %fn", conta.saldo); }
  • 20. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Main.cpp #include<stdio.h> #include<stdlib.h> #include "ContaBancaria.h" int main (void) { ContaBancaria conta1; Inicializa(conta1, 918556, 300.00); printf("nAntes da movimentacao:n "); Imprime(conta1); Deposito(conta1, 50.00); Saque(conta1, 70.00); printf("nDepois da movimentacao:n "); Imprime (conta1); system("PAUSE"); return(0); }
  • 21. © Prof. Márcio Roberto Rizzatto Laboratório de Programação II Exercício  Implemente um TAD Número Complexo  cada número possui os campos real e imaginário  Implemente as operações:  Atribui: atribui valores para os campos  Imprime: imprime o número da forma “R + Ci”  Copia: Copia o valor de um número para outro  Soma: Soma dois números complexos  EhReal: testa se um número é real  Faça um pequeno programa para testar o seu TAD

Editor's Notes

  1. O que e como representar Cada representacao tem limitacoes