SlideShare una empresa de Scribd logo
1 de 16
Programação I: Estruturas
Rodrigo Paes
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Agenda!
 Objetivo
 Aprender a usar estruturas
 O que veremos?
 O que são ?
 Como criar uma estrutura?
 Como usar?
 Estruturas como parâmetros de funções
 Exercícios de fixação
rodrigo@ic.ufal.br slide 2
Instituto de Computação – UFAL
Motivação
 Voltemos ao Array
 Um array é um exemplo de uma estrutura de dados
 Pega um tipo de dados simples: int, char, float,
double …
 … organiza-os em uma cadeia linear de elementos
desses tipos
 Restrição
 Um array é composto de elementos de um mesmo
tipo
rodrigo@ic.ufal.br slide 3
Instituto de Computação – UFAL
Motivação
 Mas pra que serveria uma estrutura de dados
que permita tipos diferentes?
 Por exemplo, 05 primeiros elementos são int e os
dois ultimos são char
 Você consegue visualizar algum cenário em que tipos
diferentes seriam úteis?
 Exemplo: Ficha cadastral dos clientes de uma locadora
 nome : char[255];
 idade: int;
 casado: int; // 1=sim, 2=não
 …
rodrigo@ic.ufal.br slide 4
Instituto de Computação – UFAL
Motivação
 Com o que sabemos até agora, teríamos que
trabalhar com variáveis diferentes
 Até já fizemos um exemplo disso, lembram da
lanchonete?
 int codigo[TAMANHO] = {101, 102, 103, 104, 105} ;
 float preco[TAMANHO] = {1.20, 1, 2.5, 1, 2};
 char *descricao[TAMANHO] = {"Refrigerante", "Suco", "Sanduiche", "Salgado",
"Torta"};
 int quantidade[TAMANHO] = {0,0,0,0,0};
 float subtotal[TAMANHO];
 int indice, i;
 Na verdade, o que queríamos eram as informações dos produtos e
dos pedidos
rodrigo@ic.ufal.br slide 5
Instituto de Computação – UFAL
Definindo um novo tipo
 Em C já existem uma série de tipos pré-
definidos
 int, float, char, double …
 Vamos aprender a definir novos tipos
 Os tipos definidos por nós serão “tipos
compostos”
 Tipos que são compostos de outros tipos
rodrigo@ic.ufal.br slide 6
Instituto de Computação – UFAL
Estruturas
 São uma forma de definir novos tipos
compostos
 O que precisaremos fazer?
 Duas etapas
 Definir a estrutura
 Declarar as variáveis do tipo da estrutura que acabamos de
definir
rodrigo@ic.ufal.br slide 7
Instituto de Computação – UFAL
Estruturas
 Suponha que vamos fazer o registro dos
funcionários de uma empresa
 Nome
 Idade
 Salário
 A estrutura:
struct funcionario
{
char nome[255];
int idade;
float salario;
};
rodrigo@ic.ufal.br slide 8
Instituto de Computação – UFAL
Declaração de variáveis
 Podemos usar o novo tipo para declarar
variáveis
main()
{
struct funcionario rodrigo, carlos, jose, maria;
}
rodrigo@ic.ufal.br
tipo Identificadores das variáveis
slide 9
Instituto de Computação – UFAL
Como usar as estruturas?
main()
{
struct funcionario joao, maria;
strcpy(joao.nome, "Joao da Silva");
joao.idade = 32;
joao.salario = 3000.00;
strcpy(maria.nome, "Maria Jose");
maria.idade = 41;
maria.salario = 4250.00;
}
rodrigo@ic.ufal.br slide 10
Instituto de Computação – UFAL
Estruturas como parâmetro de funções
void imprimir(struct funcionario um_funcionario)
{
printf("#####################n");
printf("Nome: %sn",um_funcionario.nome );
printf("Idade: %dn",um_funcionario.idade );
printf("Salario: %.2fn",um_funcionario.salario );
}
main()
{
struct funcionario joao, maria;
strcpy(joao.nome, "Joao da Silva");
joao.idade = 32;
joao.salario = 3000.00;
strcpy(maria.nome, "Maria Jose");
maria.idade = 41;
maria.salario = 4250.00;
imprimir(joao);
imprimir(maria);
rodrigo@ic.ufal.br slide 11
Instituto de Computação – UFAL
Estruturas como parâmetro de funções
 A passagem é feita por valor e não por
referência!
 Exemplo:
https://dl.dropbox.com/u/17364381/p1/estruturas
.c
rodrigo@ic.ufal.br slide 12
Instituto de Computação – UFAL
Compondo estruturas com outras estruturas
 Podemos definir estruturas que são compostas
de outras estruturas
rodrigo@ic.ufal.br slide 13
Instituto de Computação – UFAL
No nosso código
 Ponteiros para estruturas
 Formas de acessar os elementos da estrutura
através de um ponteiro
 Passagem por referência
 Usando um array como um elemento da
estrutura
 Arrays de estruturas
rodrigo@ic.ufal.br slide 14
Instituto de Computação – UFAL
Typedef
 Define explicitamente um tipo de dado
 Sem o typedef:
struct funcionario
{
char nome[255];
int idade;
float salario;
};
struct funcionario funcionario1, funcionario2;
 Com o typedef:
typedef struct
{
char nome[255];
int idade;
float salario;
}t_funcionario;
t_funcionario funcionario1, funcionario2;
rodrigo@ic.ufal.br slide 15
Instituto de Computação – UFAL
Exercícios de fixação
 Ler Seção 9.2 do livro do Jaime
 Refaça os exemplos vistos em sala.
 Modifique o seu trabalho para usar estruturas
 Olhe as estruturas das bibliotecas que você está
utilizando no trabalho final e procure entende-
las
 Atenção: Na próxima aula, faremos um mini-
teste na sala de aula.
 Assunto: arrays, ponteiros e estruturas
rodrigo@ic.ufal.br slide 16

Más contenido relacionado

La actualidad más candente

01 engenharia financeira - mercado de capitais
01   engenharia financeira - mercado de capitais01   engenharia financeira - mercado de capitais
01 engenharia financeira - mercado de capitaisIago Henrique Tavares
 
Introdução a programação gráfica com Processing - Aula 01
Introdução a programação gráfica com Processing - Aula 01Introdução a programação gráfica com Processing - Aula 01
Introdução a programação gráfica com Processing - Aula 01Lucas Cabral
 
Introdução a programação gráfica com Processing - Aula 02
Introdução a programação gráfica com Processing - Aula 02Introdução a programação gráfica com Processing - Aula 02
Introdução a programação gráfica com Processing - Aula 02Lucas Cabral
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05thomasdacosta
 
Introdução - Algoritmos
Introdução - AlgoritmosIntrodução - Algoritmos
Introdução - AlgoritmosPsLucas
 

La actualidad más candente (12)

01 engenharia financeira - mercado de capitais
01   engenharia financeira - mercado de capitais01   engenharia financeira - mercado de capitais
01 engenharia financeira - mercado de capitais
 
Introdução a programação gráfica com Processing - Aula 01
Introdução a programação gráfica com Processing - Aula 01Introdução a programação gráfica com Processing - Aula 01
Introdução a programação gráfica com Processing - Aula 01
 
Utilizandoo winplot
Utilizandoo winplotUtilizandoo winplot
Utilizandoo winplot
 
Introdução a programação gráfica com Processing - Aula 02
Introdução a programação gráfica com Processing - Aula 02Introdução a programação gráfica com Processing - Aula 02
Introdução a programação gráfica com Processing - Aula 02
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Aula 5 algoritimos(continuacao)
Aula 5   algoritimos(continuacao)Aula 5   algoritimos(continuacao)
Aula 5 algoritimos(continuacao)
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05
 
Tutorial R
Tutorial RTutorial R
Tutorial R
 
Aula1
Aula1Aula1
Aula1
 
Introdução - Algoritmos
Introdução - AlgoritmosIntrodução - Algoritmos
Introdução - Algoritmos
 
Objective c
Objective   cObjective   c
Objective c
 
Linguagem C 07 Registros
Linguagem C 07 RegistrosLinguagem C 07 Registros
Linguagem C 07 Registros
 

Destacado

Full photo day 1
Full photo day 1Full photo day 1
Full photo day 1APCSE
 
Nara, gal e rita trajetórias, projetos e migrações das mulheres do tropicalismo
Nara, gal e rita trajetórias, projetos e migrações das mulheres do tropicalismoNara, gal e rita trajetórias, projetos e migrações das mulheres do tropicalismo
Nara, gal e rita trajetórias, projetos e migrações das mulheres do tropicalismoLuara Schamó
 
Ejercicio tendencia de la demanda. merlic m.
Ejercicio tendencia de la demanda. merlic m.Ejercicio tendencia de la demanda. merlic m.
Ejercicio tendencia de la demanda. merlic m.merlicmedina910
 
Applied Futures Research Overview, 2002
Applied Futures Research Overview, 2002Applied Futures Research Overview, 2002
Applied Futures Research Overview, 2002Wendy Schultz
 
TEMA 2.1. ARTE ROMANO. ARQUITECTURA . RESUMEN
TEMA   2.1. ARTE ROMANO. ARQUITECTURA . RESUMENTEMA   2.1. ARTE ROMANO. ARQUITECTURA . RESUMEN
TEMA 2.1. ARTE ROMANO. ARQUITECTURA . RESUMENmanuel G. GUERRERO
 
Rostra And Comitium
Rostra And ComitiumRostra And Comitium
Rostra And Comitiumahendry
 
JESSICA GENITH MUÑOZ VILLOTA
JESSICA GENITH MUÑOZ VILLOTAJESSICA GENITH MUÑOZ VILLOTA
JESSICA GENITH MUÑOZ VILLOTAgenith
 
Arquitectura renancentista
Arquitectura renancentistaArquitectura renancentista
Arquitectura renancentistaMariannyHernadez
 
Calidad Total
Calidad TotalCalidad Total
Calidad Totalaniyliz
 
Diapositivas de enfermedades transmitidas por artropodos
Diapositivas de enfermedades transmitidas por artropodosDiapositivas de enfermedades transmitidas por artropodos
Diapositivas de enfermedades transmitidas por artropodosJeniffer Verdezoto
 
Effects of Simultaneous KP transplantation VS KD single in type 2 diabetics: ...
Effects of Simultaneous KP transplantation VS KD single in type 2 diabetics: ...Effects of Simultaneous KP transplantation VS KD single in type 2 diabetics: ...
Effects of Simultaneous KP transplantation VS KD single in type 2 diabetics: ...Francesco Luparini
 
fourier representation of signal and systems
fourier representation of signal and systemsfourier representation of signal and systems
fourier representation of signal and systemsSugeng Widodo
 
Empreendedorismo - Conceitos Iniciais - aula 1
Empreendedorismo  - Conceitos Iniciais - aula 1Empreendedorismo  - Conceitos Iniciais - aula 1
Empreendedorismo - Conceitos Iniciais - aula 1Ueliton da Costa Leonidio
 
Trabajo de gaudi. veronica sanchez riquelme
Trabajo de gaudi. veronica sanchez riquelmeTrabajo de gaudi. veronica sanchez riquelme
Trabajo de gaudi. veronica sanchez riquelmeOnempresas
 
Congreso de carreras de Comunicación y Periodismo: Mejor Periodismo, mejor so...
Congreso de carreras de Comunicación y Periodismo: Mejor Periodismo, mejor so...Congreso de carreras de Comunicación y Periodismo: Mejor Periodismo, mejor so...
Congreso de carreras de Comunicación y Periodismo: Mejor Periodismo, mejor so...DPeriodistas
 
El Sonido presentacion
El Sonido presentacionEl Sonido presentacion
El Sonido presentacioncarmengonza
 
Protocolo+para+la+explantación,+seguimiento+y+sustitución+de+prótesis+mamaria...
Protocolo+para+la+explantación,+seguimiento+y+sustitución+de+prótesis+mamaria...Protocolo+para+la+explantación,+seguimiento+y+sustitución+de+prótesis+mamaria...
Protocolo+para+la+explantación,+seguimiento+y+sustitución+de+prótesis+mamaria...ANAP Protesis Pip
 

Destacado (20)

Full photo day 1
Full photo day 1Full photo day 1
Full photo day 1
 
Nara, gal e rita trajetórias, projetos e migrações das mulheres do tropicalismo
Nara, gal e rita trajetórias, projetos e migrações das mulheres do tropicalismoNara, gal e rita trajetórias, projetos e migrações das mulheres do tropicalismo
Nara, gal e rita trajetórias, projetos e migrações das mulheres do tropicalismo
 
Ejercicio tendencia de la demanda. merlic m.
Ejercicio tendencia de la demanda. merlic m.Ejercicio tendencia de la demanda. merlic m.
Ejercicio tendencia de la demanda. merlic m.
 
Applied Futures Research Overview, 2002
Applied Futures Research Overview, 2002Applied Futures Research Overview, 2002
Applied Futures Research Overview, 2002
 
Mais
MaisMais
Mais
 
Secrets of the Remix Mashup YouTube Gen 2015
Secrets of the Remix Mashup YouTube Gen 2015Secrets of the Remix Mashup YouTube Gen 2015
Secrets of the Remix Mashup YouTube Gen 2015
 
TEMA 2.1. ARTE ROMANO. ARQUITECTURA . RESUMEN
TEMA   2.1. ARTE ROMANO. ARQUITECTURA . RESUMENTEMA   2.1. ARTE ROMANO. ARQUITECTURA . RESUMEN
TEMA 2.1. ARTE ROMANO. ARQUITECTURA . RESUMEN
 
Rostra And Comitium
Rostra And ComitiumRostra And Comitium
Rostra And Comitium
 
JESSICA GENITH MUÑOZ VILLOTA
JESSICA GENITH MUÑOZ VILLOTAJESSICA GENITH MUÑOZ VILLOTA
JESSICA GENITH MUÑOZ VILLOTA
 
Arquitectura renancentista
Arquitectura renancentistaArquitectura renancentista
Arquitectura renancentista
 
Calidad Total
Calidad TotalCalidad Total
Calidad Total
 
Diapositivas de enfermedades transmitidas por artropodos
Diapositivas de enfermedades transmitidas por artropodosDiapositivas de enfermedades transmitidas por artropodos
Diapositivas de enfermedades transmitidas por artropodos
 
Effects of Simultaneous KP transplantation VS KD single in type 2 diabetics: ...
Effects of Simultaneous KP transplantation VS KD single in type 2 diabetics: ...Effects of Simultaneous KP transplantation VS KD single in type 2 diabetics: ...
Effects of Simultaneous KP transplantation VS KD single in type 2 diabetics: ...
 
Telar mapuche y las Matemáticas
Telar mapuche y las MatemáticasTelar mapuche y las Matemáticas
Telar mapuche y las Matemáticas
 
fourier representation of signal and systems
fourier representation of signal and systemsfourier representation of signal and systems
fourier representation of signal and systems
 
Empreendedorismo - Conceitos Iniciais - aula 1
Empreendedorismo  - Conceitos Iniciais - aula 1Empreendedorismo  - Conceitos Iniciais - aula 1
Empreendedorismo - Conceitos Iniciais - aula 1
 
Trabajo de gaudi. veronica sanchez riquelme
Trabajo de gaudi. veronica sanchez riquelmeTrabajo de gaudi. veronica sanchez riquelme
Trabajo de gaudi. veronica sanchez riquelme
 
Congreso de carreras de Comunicación y Periodismo: Mejor Periodismo, mejor so...
Congreso de carreras de Comunicación y Periodismo: Mejor Periodismo, mejor so...Congreso de carreras de Comunicación y Periodismo: Mejor Periodismo, mejor so...
Congreso de carreras de Comunicación y Periodismo: Mejor Periodismo, mejor so...
 
El Sonido presentacion
El Sonido presentacionEl Sonido presentacion
El Sonido presentacion
 
Protocolo+para+la+explantación,+seguimiento+y+sustitución+de+prótesis+mamaria...
Protocolo+para+la+explantación,+seguimiento+y+sustitución+de+prótesis+mamaria...Protocolo+para+la+explantación,+seguimiento+y+sustitución+de+prótesis+mamaria...
Protocolo+para+la+explantación,+seguimiento+y+sustitución+de+prótesis+mamaria...
 

Similar a Programação I: Estruturas de Dados

Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)Márcio Rizzatto
 
Aula 5 - Programação 1
Aula 5 - Programação 1Aula 5 - Programação 1
Aula 5 - 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
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03thomasdacosta
 
Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06thomasdacosta
 
Aula 4 - Programação 1
Aula 4 - Programação 1Aula 4 - Programação 1
Aula 4 - Programação 1Isaac Barros
 
Algoritmos e LP - Aula 02 - Tipos de Dados.pdf
Algoritmos e LP - Aula 02 - Tipos de Dados.pdfAlgoritmos e LP - Aula 02 - Tipos de Dados.pdf
Algoritmos e LP - Aula 02 - Tipos de Dados.pdfEnio Filho
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Marco Pinheiro
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasCJR, UnB
 
Capítulo 13 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 13 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 13 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 13 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
Sobre o workshop "Raspagem de dados para mulheres"
Sobre o workshop "Raspagem de dados para mulheres"Sobre o workshop "Raspagem de dados para mulheres"
Sobre o workshop "Raspagem de dados para mulheres"Patricia Minamizawa
 
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
 

Similar a Programação I: Estruturas de Dados (20)

Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)
 
Aula 5 - Programação 1
Aula 5 - Programação 1Aula 5 - Programação 1
Aula 5 - 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
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03
 
Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06
 
Aula 4 - Programação 1
Aula 4 - Programação 1Aula 4 - Programação 1
Aula 4 - Programação 1
 
Algoritmos e LP - Aula 02 - Tipos de Dados.pdf
Algoritmos e LP - Aula 02 - Tipos de Dados.pdfAlgoritmos e LP - Aula 02 - Tipos de Dados.pdf
Algoritmos e LP - Aula 02 - Tipos de Dados.pdf
 
SQLAlchemy - Desenvolvendo uma aplicação com Python
SQLAlchemy - Desenvolvendo uma aplicação com Python SQLAlchemy - Desenvolvendo uma aplicação com Python
SQLAlchemy - Desenvolvendo uma aplicação com Python
 
aula01-TDA (1).ppt
aula01-TDA (1).pptaula01-TDA (1).ppt
aula01-TDA (1).ppt
 
Modulo02
Modulo02Modulo02
Modulo02
 
Orientação a Objetos (3)
Orientação a Objetos (3)Orientação a Objetos (3)
Orientação a Objetos (3)
 
Orientação a objetos (tecnologias)
Orientação a objetos (tecnologias)Orientação a objetos (tecnologias)
Orientação a objetos (tecnologias)
 
Aula 7
Aula 7 Aula 7
Aula 7
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
 
Modelação de Dados
Modelação de DadosModelação de Dados
Modelação de Dados
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
 
Capítulo 13 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 13 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 13 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 13 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Sobre o workshop "Raspagem de dados para mulheres"
Sobre o workshop "Raspagem de dados para mulheres"Sobre o workshop "Raspagem de dados para mulheres"
Sobre o workshop "Raspagem de dados para mulheres"
 
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
 

Más de Isaac Barros

Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1Isaac Barros
 
Aula 11 strings - Programação 1
Aula 11 strings - Programação 1Aula 11 strings - Programação 1
Aula 11 strings - Programação 1Isaac Barros
 
Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1Isaac Barros
 
Aula 9 repeticao - Programação 1
Aula 9 repeticao - Programação 1Aula 9 repeticao - Programação 1
Aula 9 repeticao - Programação 1Isaac Barros
 
Aula 8 principios_programacao - Programação 1
Aula 8 principios_programacao - Programação 1Aula 8 principios_programacao - Programação 1
Aula 8 principios_programacao - Programação 1Isaac Barros
 
Aula 3 - Programação 1
Aula 3 - Programação 1Aula 3 - Programação 1
Aula 3 - Programação 1Isaac Barros
 
Aula 2 - Programação 1
Aula 2 - Programação 1Aula 2 - Programação 1
Aula 2 - Programação 1Isaac Barros
 
Aula 1 - Programação 1
Aula 1 - Programação 1Aula 1 - Programação 1
Aula 1 - Programação 1Isaac Barros
 
Aula 16 arquivos - Programação 1
Aula 16 arquivos - Programação 1Aula 16 arquivos - Programação 1
Aula 16 arquivos - Programação 1Isaac Barros
 

Más de Isaac Barros (9)

Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1
 
Aula 11 strings - Programação 1
Aula 11 strings - Programação 1Aula 11 strings - Programação 1
Aula 11 strings - Programação 1
 
Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1
 
Aula 9 repeticao - Programação 1
Aula 9 repeticao - Programação 1Aula 9 repeticao - Programação 1
Aula 9 repeticao - Programação 1
 
Aula 8 principios_programacao - Programação 1
Aula 8 principios_programacao - Programação 1Aula 8 principios_programacao - Programação 1
Aula 8 principios_programacao - Programação 1
 
Aula 3 - Programação 1
Aula 3 - Programação 1Aula 3 - Programação 1
Aula 3 - Programação 1
 
Aula 2 - Programação 1
Aula 2 - Programação 1Aula 2 - Programação 1
Aula 2 - Programação 1
 
Aula 1 - Programação 1
Aula 1 - Programação 1Aula 1 - Programação 1
Aula 1 - Programação 1
 
Aula 16 arquivos - Programação 1
Aula 16 arquivos - Programação 1Aula 16 arquivos - Programação 1
Aula 16 arquivos - Programação 1
 

Programação I: Estruturas de Dados

  • 1. Programação I: Estruturas Rodrigo Paes rodrigo@ic.ufal.br
  • 2. Instituto de Computação – UFAL Agenda!  Objetivo  Aprender a usar estruturas  O que veremos?  O que são ?  Como criar uma estrutura?  Como usar?  Estruturas como parâmetros de funções  Exercícios de fixação rodrigo@ic.ufal.br slide 2
  • 3. Instituto de Computação – UFAL Motivação  Voltemos ao Array  Um array é um exemplo de uma estrutura de dados  Pega um tipo de dados simples: int, char, float, double …  … organiza-os em uma cadeia linear de elementos desses tipos  Restrição  Um array é composto de elementos de um mesmo tipo rodrigo@ic.ufal.br slide 3
  • 4. Instituto de Computação – UFAL Motivação  Mas pra que serveria uma estrutura de dados que permita tipos diferentes?  Por exemplo, 05 primeiros elementos são int e os dois ultimos são char  Você consegue visualizar algum cenário em que tipos diferentes seriam úteis?  Exemplo: Ficha cadastral dos clientes de uma locadora  nome : char[255];  idade: int;  casado: int; // 1=sim, 2=não  … rodrigo@ic.ufal.br slide 4
  • 5. Instituto de Computação – UFAL Motivação  Com o que sabemos até agora, teríamos que trabalhar com variáveis diferentes  Até já fizemos um exemplo disso, lembram da lanchonete?  int codigo[TAMANHO] = {101, 102, 103, 104, 105} ;  float preco[TAMANHO] = {1.20, 1, 2.5, 1, 2};  char *descricao[TAMANHO] = {"Refrigerante", "Suco", "Sanduiche", "Salgado", "Torta"};  int quantidade[TAMANHO] = {0,0,0,0,0};  float subtotal[TAMANHO];  int indice, i;  Na verdade, o que queríamos eram as informações dos produtos e dos pedidos rodrigo@ic.ufal.br slide 5
  • 6. Instituto de Computação – UFAL Definindo um novo tipo  Em C já existem uma série de tipos pré- definidos  int, float, char, double …  Vamos aprender a definir novos tipos  Os tipos definidos por nós serão “tipos compostos”  Tipos que são compostos de outros tipos rodrigo@ic.ufal.br slide 6
  • 7. Instituto de Computação – UFAL Estruturas  São uma forma de definir novos tipos compostos  O que precisaremos fazer?  Duas etapas  Definir a estrutura  Declarar as variáveis do tipo da estrutura que acabamos de definir rodrigo@ic.ufal.br slide 7
  • 8. Instituto de Computação – UFAL Estruturas  Suponha que vamos fazer o registro dos funcionários de uma empresa  Nome  Idade  Salário  A estrutura: struct funcionario { char nome[255]; int idade; float salario; }; rodrigo@ic.ufal.br slide 8
  • 9. Instituto de Computação – UFAL Declaração de variáveis  Podemos usar o novo tipo para declarar variáveis main() { struct funcionario rodrigo, carlos, jose, maria; } rodrigo@ic.ufal.br tipo Identificadores das variáveis slide 9
  • 10. Instituto de Computação – UFAL Como usar as estruturas? main() { struct funcionario joao, maria; strcpy(joao.nome, "Joao da Silva"); joao.idade = 32; joao.salario = 3000.00; strcpy(maria.nome, "Maria Jose"); maria.idade = 41; maria.salario = 4250.00; } rodrigo@ic.ufal.br slide 10
  • 11. Instituto de Computação – UFAL Estruturas como parâmetro de funções void imprimir(struct funcionario um_funcionario) { printf("#####################n"); printf("Nome: %sn",um_funcionario.nome ); printf("Idade: %dn",um_funcionario.idade ); printf("Salario: %.2fn",um_funcionario.salario ); } main() { struct funcionario joao, maria; strcpy(joao.nome, "Joao da Silva"); joao.idade = 32; joao.salario = 3000.00; strcpy(maria.nome, "Maria Jose"); maria.idade = 41; maria.salario = 4250.00; imprimir(joao); imprimir(maria); rodrigo@ic.ufal.br slide 11
  • 12. Instituto de Computação – UFAL Estruturas como parâmetro de funções  A passagem é feita por valor e não por referência!  Exemplo: https://dl.dropbox.com/u/17364381/p1/estruturas .c rodrigo@ic.ufal.br slide 12
  • 13. Instituto de Computação – UFAL Compondo estruturas com outras estruturas  Podemos definir estruturas que são compostas de outras estruturas rodrigo@ic.ufal.br slide 13
  • 14. Instituto de Computação – UFAL No nosso código  Ponteiros para estruturas  Formas de acessar os elementos da estrutura através de um ponteiro  Passagem por referência  Usando um array como um elemento da estrutura  Arrays de estruturas rodrigo@ic.ufal.br slide 14
  • 15. Instituto de Computação – UFAL Typedef  Define explicitamente um tipo de dado  Sem o typedef: struct funcionario { char nome[255]; int idade; float salario; }; struct funcionario funcionario1, funcionario2;  Com o typedef: typedef struct { char nome[255]; int idade; float salario; }t_funcionario; t_funcionario funcionario1, funcionario2; rodrigo@ic.ufal.br slide 15
  • 16. Instituto de Computação – UFAL Exercícios de fixação  Ler Seção 9.2 do livro do Jaime  Refaça os exemplos vistos em sala.  Modifique o seu trabalho para usar estruturas  Olhe as estruturas das bibliotecas que você está utilizando no trabalho final e procure entende- las  Atenção: Na próxima aula, faremos um mini- teste na sala de aula.  Assunto: arrays, ponteiros e estruturas rodrigo@ic.ufal.br slide 16