Estruturas (registros)



Documentos relacionados
Estruturas II UFOP 1/1

Registros. Técnicas de Programação. Rafael Silva Guimarães

Técnicas de Programação I

Linguagem algorítmica: Portugol

Algoritmos e Estruturas de Dados I

BCC Introdu c ao ` a Programa c ao I Ponteiros Guillermo C amara-ch avez UFOP 1/61

Controle de Fluxo Comandos de decisão

INF 1620 P1-10/04/02 Questão 1 Nome:

Tipo Abstrato de Dados

Programação científica C++

Aula 1 Tipo Abstrato de Dados

O que é um algoritmo? O que é um programa? Algoritmos. Programas. Aula 1 Tipo Abstrato de Dados

MC-102 Aula 19 Registros

Fundamentos de Programação

9. Estruturas em C Registros

Introdução à Ciência da Computação. Registros em C. Sumário. Registros. Agradecimentos. Parte dos slides a seguir são adaptações dos originais:

Controle de Fluxo Comandos de decisão

Introdução a Algoritmos Parte 07

Busca. Pesquisa sequencial

MC-102 Aula 17 Strings e Matrizes

Estrutura de Dados Básica

Estruturas (Registros)

Linguagens de Programação I

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++

Estruturas II UFOP 1/35

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Aula 1. // exemplo1.cpp /* Incluímos a biblioteca C++ padrão de entrada e saída */ #include <iostream>

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 4

Vetores. Professor Dr Francisco Isidro Massettto

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C

Trabalho 3: Agenda de Tarefas

ESTRUTURA DE DADOS -VARIÁVEIS COMPOSTAS. Prof. Angelo Augusto Frozza, M.Sc.

Variáveis e Comandos de Atribuição

Lista de Exercícios da 3ª Unidade. ( Ponteiros, Alocação dinâmica, Arquivos, Estruturas de Dados)

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

Tipo de Dados em Linguagem C

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

POO Programação Orientada a Objetos. Classes em Java

Conversão de Tipos e Arrays

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais.

Noções sobre Objetos e Classes

Componentes da linguagem C++

Aula Teórica 16: Estruturas de Dados Heterogêneas

Introdução a POO. Introdução a Linguagem C++ e POO

1 Resumo: Strings e vetores de caracteres. Departamento de Ciência da Computação IME/USP

Programação de Computadores I. Linguagem C Vetores

Técnicas de Programação: ESTRUTURAS, UNIÕES E TIPOS DEE UFPB

Linguagem de Programação

INF 1007 Programação II

INTRODUÇÃO À LINGUAGEM C++

Tipos de Dados Simples

Computação II Orientação a Objetos

Algoritmos e Programação

MC-102 Algoritmos e Programação de Computadores IC-UNICAMP. Aula 21 - Registros. Por: Luís Augusto Angelotti Meira (Sala IC-71) 1S2005

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Introdução a linguagem C Estruturas de decisão

Programação: Tipos, Variáveis e Expressões

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

2ª Lista de Exercícios

BC0501 Linguagens de Programação

Linguagem de Programação I

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

2 Orientação a objetos na prática

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Algoritmo e Programação

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos

Trabalho Computacional 2. Aplicativo para Gestão Financeira. Grupos: Os trabalhos devem ser feitos individualmente ou em duplas.

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

3/19/2014. Compilador DEV C++ ENGENHARIAS LÓGICA DE PROGRAMAÇÃO Henry Lubanco/ Joelio Piraciaba

Programação Orientada a Objeto

Capítulo 9. Vetores e Matrizes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 2: Introdução à Linguagem C

Programação de Computadores I Registros na Linguagem C PROFESSORA CINTIA CAETANO

Programação 2ºSemestre MEEC /2011. Programação 2º Semestre 2010/2011 Enunciado do projecto

INF 1005 Programação I

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Implementando uma Classe e Criando Objetos a partir dela

Programação SQL. Introdução

1 Funções básicas de implementação de arquivos

Curso de Linguagem C

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

2. Constantes e Variáveis

3 Classes e instanciação de objectos (em Java)

Disciplina: Unidade III: Prof.: Período:

ERROS MAIS COMUNS COMETIDOS EM PROGRAMAS E ALGORITMOS

Programação 1. Rafael Vargas Mesquita. ftp://ftp.ci.ifes.edu.br/informatica/rafael/

Faculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Transcrição:

BCC 201 - Introdução à Programação I Estruturas (registros) Guillermo Cámara-Chávez UFOP 1/44

Estruturas (struct) I Imaginemos que queremos ler as notas de 4 provas para um aluno e calcular a média do aluno 2/44

Estruturas (struct) II 3/44

Estruturas (struct) III 4/44

Estruturas (struct) IV 5/44

Estruturas (struct) V structs são Estruturas de Dados Heterogêneas Uma estrutura agrupa várias variáveis numa só. Funciona como uma espécie de ficha. A ficha armazena diversos dados relacionados, porém de tipos diferente. 6/44

Estruturas (struct) VI A estrutura, então, serve para agrupar um conjunto de dados não similares, formando um novo tipo de dados. As estruturas podem conter elementos de qualquer tipo de dados tais como int, char, float, double, ponteiros, vetores, matrizes, strings ou mesmo outras estruturas. 7/44

Estruturas (struct) VII Declaração s t r u c t n o m e d a e s t r u t u r a { tipo campo1 nome campo1 ; tipo campo2 nome campo2 ;... } ; onde : nome_da_estrutura é o nome do tipo da estrutura e, entre chaves, tipo_campo1, tipo_campo2,... é a lista com os tipos de dados em C (char, int, float, double, char[]) 8/44

Estruturas (struct) VIII Exemplo 1: Definir um novo tipo de variável Data (struct Data) A partir daquele momento o compilador passa a conhecer um outro tipo de dado, chamado struct Data Dita estrutura está composta por dois inteiros e um vetor de caracteres (inteiros: dia e ano, string: mes) 9/44

Estruturas (struct) IX Definir um novo tipo de variável Data (struct Data) A partir daquele momento o compilador passa a conhecer um outro tipo de dado, chamado struct Data Dita estrutura está composta por dois inteiros e um vetor de caracteres (inteiros: dia e ano, string: mes) 10/44

Estruturas (struct) X Data não é uma variável, senão o nome pelo que é conhecido um novo tipo de dados Cada um dos elementos de Data é denominado campo. 11/44

Estruturas (struct) XI Exemplo 2 Para atribuir valores a seus campos fazemos diretamente inserindo um. (ponto) entre o nome da variável e o campo que nos interessa. 12/44

Estruturas (struct) XII 13/44

Estruturas (struct) XIII 14/44

Estruturas (struct) XIV 15/44

Estruturas (struct) XV 16/44

Estruturas (struct) XVI s t r u c t c a d a s t r o A l u n o { c h a r nome [ 5 0 ] ; i n t c o d i g o ; i n t i d a d e ; } ; 17/44

Estruturas (struct) XVII i n t main ( ) { s t r u c t c a d a s t r o A l u n o Alu1, Alu2 ; s t r c p y ( Alu1. nome, "Jo~ao Santos" ) ; Alu1. c o d i g o = 365833; Alu1. i d a d e = 1 9 ; p r i n t f ( " Inserir Nome: " ) ; f g e t s ( Alu2. nome, 50, s t d i n ) ; p r i n t f ( " Inserir codigo e idade: " ) s c a n f ( " %d %d", &Alu2. codigo, &Alu2. i d a d e ) ; } p r i n t f ( " %s %d %d \n", Alu1. nome, Alu1. codigo, Alu1. i d a d e ) ; p r i n t f ( " %s %d %d \n", Alu2. nome, Alu2. codigo, Alu2. i d a d e ) ; r e t u r n 0 ; 18/44

Vetor de Registros I Declaração: s t r u c t n o m e r e g i s t r o n o m e v a r i a v e l [ tamanho vetor ] ; Uso: n o m e v a r i a v e l [ i n d i c e ]. nome do campo ; 19/44

Vetor de Registros II Criar o programa que permida cadastrar 20 alunos. 20/44

Vetor de Registros III s t r u c t c a d a s t r o A l u n o { c h a r nome [ 5 0 ] ; i n t c o d i g o ; i n t i d a d e ; } ; i n t main ( ) { s t r u c t c a d a s t r o A l u n o A [ 2 0 ] ; i n t i ; f o r ( i = 0 ; i < 2 0 ; i ++){ p r i n t f ( " Inserir dados aluno %d", i +1); p r i n t f ( "Digite nome:" ) ; f g e t s (A[ i ]. nome, 50, s t d i n ) ; p r i n t f ( "Digite codigo e idade:" ) ; s c a n f ( " %d %d", &A[ i ]. codigo, &A[ i ]. i d a d e ) ; } f o r ( i = 0 ; i < 2 0 ; i ++) p r i n t f ( " %s %d %d \n", A[ i ]. nome, A[ i ]. codigo, A[ i ]. i d a d e ) ; r e t u r n 0 ; } 21/44

Exemplos I Inserir uma lista de n filmes. A estrutura para os filmes deve conter os seguintes campos: nome e o ano de lançamento. 22/44

Exemplos II 23/44

Exemplos III 24/44

Exemplos IV 25/44

Exemplos V s t r u c t f i l m e { c h a r nome [ 5 0 ] ; i n t ano ; } ; i n t main ( ) { i n t n ; s t r u c t f i l m e f [ 1 0 0 ] ; do{ p r i n t f ( " Inserir número de filmes " ) ; s c a n f ( " %n", &n ) ; } w h i l e ( n > 100 n < 0 ) ; // I n s e r e n nomes de f i l m e s f o r ( i n t i = 0 ; i < n ; i ++) { p r i n t f ( "Nome e ano: \n" ) ; f g e t s ( f [ i ]. nome, 50, s t d i n ) ; s c a n f ( " %d", &f [ i ]. ano ) ; } //... ( c o n t i n u a ) 26/44

Exemplos VI }... // Mostra os f i l m e s i n s e r i d o s f o r ( i n t i = 0 ; i < n ; i ++) { p r i n t f ( " %s %d \n", f [ i ]. nome, f [ i ]. ano ) ; } r e t u r n 0 ; 27/44

Exemplos VII Inicialização: é possível inicializar uma variável do tipo estrutura s t r u c t { f i l m e c h a r nome [ 5 0 ] ; i n t ano ; } ; i n t main ( ) { s t r u c t f i l m e f = {"Avatar", 2009}; p r i n t f ( "Filme: %s Ano: %d", f. nome, f. ano ) ; r e t u r n 0 ; } 28/44

Exemplos VIII Criar uma estrutura aluno que deve conter os seguintes campos: nome, idade, identidade. Criar um vetor de 10 elementos e logo inserir valores nele. Mostrar os dados do aluno mais novo. 29/44

Exemplos IX s t r u c t Aluno { c h a r nome [ 5 0 ] ; i n t i d a d e ; i n t i d ; } ; i n t main ( ) { s t r u c t Aluno l i s t a [ 1 0 ] ; i n t menor, pos ; f o r ( i n t i = 0 ; i < 1 0 ; i ++) { p r i n t f ( " Inserir dados do aluno %d \n", i +1); f g e t s ( l i s t a [ i ]. nome, 50, s t d i n ) ; s c a n f ( " %d %d", & l i s t a [ i ]. idade, & l i s t a [ i ]. i d ) ; }... 30/44

Exemplos X }... pos = 0 ; menor = l i s t a [ 0 ]. i d a d e ; f o r ( i n t i = 1 ; i < 1 0 ; i ++) i f ( l i s t a [ i ]. i d a d e < menor ) { menor = l i s t a [ i ]. i d a d e ; pos = i ; } p r i n t f ( "Aluno mais novo: %s %d %d", l i s t a [ pos ]. nome, l i s t a [ pos ]. idade, l i s t a [ pos ]. i d ) ; r e t u r n 0 ; 31/44

Novos Tipos: typedef I A declaração de uma variável do tipo estrutura emprega a palavra reservada struct s t r u c t Data d1 ; A palavra reservada typedef estabelece um sinônimo para qualquer conjunto de palavras 32/44

Novos Tipos: typedef II Outra alternativa é empregar a palavra reservada typedef ao mesmo tempo em que é definida a estrutura: 33/44

Novos Tipos: typedef III As três formas possíveis para declarar um novo tipo Data com ou sem typedef são: 34/44

Estruturas Compostas I Declaração de estrutura composta s t r u c t n o m e d o t i p o d a e s t r u t u r a { s t r u c t n o m e d e o u t r a e s t r u t u r a nome campo1 ; tipo campo2 nome campo2 ;... } ; Desta forma, uma estrutura pode ser parte de outra estrutura! 35/44

Estruturas Compostas II Exemplo Criar uma ficha cadastral de alunos. Essa lista deve contar a seguinte informação: nome, identidade e data de nascimento; 36/44

Estruturas Compostas III s t r u c t data { i n t dia, mes, ano ; } ; s t r u c t f i c h a c a d a s t r a l { c h a r nome [ 5 0 ] ; i n t i d ; s t r u c t data nascimento ; } ; 37/44

Estruturas Compostas IV i n t main ( ) { s t r u c t f i c h a c a d a s t r a l a l u n o s ; p r i n t f ( " Inserir nome: \n" ) ; f g e t s ( a l u n o s. nome, 50, s t d i n ) ; p r i n t f ( " Inserir identidade : \n" ) ; s c a n f ( " %d", &a l u n o s. i d ) ; p r i n t f ( " Inserir data de nascimento (dd/mm/aa) \n" ) ; s c a n f ( " %d %d %d", &a l u n o s. nascimento. dia, &a l u n o s. nascimento. mes, &a l u n o s. nascimento. ano ) ; r e t u r n 0 ; } 38/44

Estruturas Compostas V Definir uma estrutura círculo, essa estrutura deve conter a seguinte informação: ponto de origem (criar estrutura ponto) e raio. Logo, inserir um ponto e responde se esse ponto está dentro do círculo. (criar uma função distancia que receba como dados de entrada os dois pontos) 39/44

Estruturas Compostas VI s t r u c t Ponto { i n t x, y ; } ; s t r u c t C i r c u l o { s t r u c t Ponto C ; d o u b l e r a i o ; } ; d o u b l e d i s t a n c i a ( s t r u c t Ponto, s t r u c t Ponto ) ; 40/44

Estruturas Compostas VII i n t main ( ) { s t r u c t C i r c u l o c i r c ; Ponto P ; d o u b l e d p r i n t f ( " Inserir dados do circulo : \n" ) ; p r i n t f ( " Coordenadas em x e y: \n" ) ; s c a n f ( " %d %d", &c i r c. C. x, &c i r c. C. y ) ; p r i n t f ( "Raio: \n" ) ; s c a n f ( " %lf", &c i r c. r a i o ) ; p r i n t f ( " Inserir ponto P (x,y) \n" ) ; s c a n f ( " %d %d", &P. x, &P. y ) ;... 41/44

Estruturas Compostas VIII }... d = d i s t a n c i a ( c i r c. C, P ) ; i f ( d <= c i r c. Raio ) p r i n t f ( "ponto dentro do circulo \n" ) ; e l s e p r i n t f ( "ponto fora do circulo \n" ) ; r e t u r n 0 ; d o u b l e d i s t a n c i a ( Ponto A, Ponto B) { d o u b l e d ; d = s q r t ( pow (A. x B. x, 2) + pow (A. y B. y, 2) ) r e t u r n d ; } 42/44

Exercicios Propostos I 1. Criar um programa que permita ao usuário digitar os dados de 3 alunos, (seus nomes, idades e registros acadêmicos). Em seguida, pedir ao usuário para digitar uma idade, e o programa deve imprimir os nomes e idades dos alunos com idade menor que a digitada. 2. 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. Crie a estrutura de dados adequada para armazenar estas informações e faça uma função que armazene as informações digitadas pelo usuário na estrutura de dados criada. Faça também uma função que calcula a média do salário dos habitantes. 43/44

FIM 44/44