Estruturas II UFOP 1/1

Documentos relacionados
Estruturas II UFOP 1/35

Técnicas de Programação I

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

Estruturas (registros)

Algoritmos e Estruturas de Dados I

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

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

Controle de Fluxo Comandos de decisão

Fundamentos de Programação

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

Estruturas (Registros)

Lógica de Programação

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento

Linguagem de Programação C. Registros

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

MC-102 Aula 19 Registros

Estruturas (registros)

Controle de Fluxo Comandos de decisão

Vetores. Professor Dr Francisco Isidro Massettto

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

INF 1005 Programação I

Estruturas (Registros)

1. PROLOGO ==========

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

Componentes da linguagem C++

JSP - ORIENTADO A OBJETOS

Programação científica C++

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

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

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

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

INF 1005 Programação I

system("pause"); //Envia comando para o sistema operacional solicitando parada de execução do programa } //limitador do corpo do programa

Conceitos básicos da linguagem C

Introdução à Programação

17 - Funções e Procedimentos em C Programação Modular

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

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

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

Resumo da Introdução de Prática de Programação com C. A Linguagem C

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

Introdução a Java. Hélder Nunes

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

Tipos de Dados Avançados Vetores e Matrizes

Variáveis e Comandos de Atribuição

Algoritmos e Programação Estruturada

MC-102 Aula 17 Strings e Matrizes

José Romildo Malaquias

Introdução a Computação

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

LISTA DE EXERCÍCIOS: 3ª Unidade. Registros e Arquivos

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

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

Resumo da Matéria de Linguagem de Programação. Linguagem C

Conceitos de Linguagens de Programação

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

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

Algoritmos com VisuAlg

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

Curso de C para Engenharias

Curso de Programação Computadores

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

A4 Projeto Integrador e Lista de Jogos

Algoritmos e Programação

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

Estrutura de Dados Básica

Linguagem de Programação I

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma

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

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

Projeto de Banco de Dados

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

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

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

QualiQuantiSoft Versão 1.3c

Estruturas de entrada e saída

Trabalho 3: Agenda de Tarefas

Linguagens de Programação I

Linguagem algorítmica: Portugol

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

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

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:

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

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Programação de Computadores I. Linguagem C Vetores

Introdução a Algoritmos Parte 07

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos

Tipos agregados. Tipos estruturados

9. Estruturas em C Registros

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

Capítulo 12. SUB-ROTINAS

2 Orientação a objetos na prática

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição

Banco de Dados Modelo Conceitual, Lógico, Físico, Entidade- Relacionamento (ER) Hélder Nunes

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

Computação e Programação Aula prática nº 5. Enunciados dos problemas

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

Estruturas Homogêneas (Vetores)

AULA 2: INTRODUÇÃO A LINGUAGEM DE C. Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme

Transcrição:

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

Conceito de struct I Vetores e matrizes Estruturas de dados homegêneas Armazenam vários valores, mas todos de um mesmo tipo (todos int, todos double, todos float 2/1

Conceito de struct II Problemas reais Temos coleções de dados que são de tipos diferentes Exemplo: ficha de um cadastro de cliente Nome: string Endereço: string Telefone: string Salário: float Idade: int 3/1

Conceito de struct III Registro (ou struct) 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 (ao contrário de matrizes que possuem elementos de um mesmo tipo) Cada componente de um registro pode ser de um tipo diferente Estes componentes são referenciados por um nome 4/1

Conceito de struct IV Os elementos do registro São chamados de campos ou membros da struct É utilizado para armazenar informações de um mesmo objeto Exemplos: carro cor, marca, ano, placa pessoa nome, idade, endereço 5/1

Conceito de struct V Campo (Field) Conjunto de caracteres com o mesmo significado Exemplo: nome Registro (struct ou record) Conjunto de campos relacionados Exemplo: nome, endereço, telefone, salários e idade de uma pessoa 6/1

Sintaxe na Linguagem C I A palavra reservada struct indica ao compilador que está sendo criada uma estrutura Uma estrutura deve ser declarada após incluir as bibliotecas e antes do main s t r u c t <i d e n t i c a d o r s t r u c t > { t i p o <nome variável campo1 >; t i p o <nome variável campo2 >;... < v a r i á v e i s e s t r u t u r a >; s t r u c t < i d e n t i f i c a d o r s t r u c t > <var1 >, <var2 >; 7/1

Sintaxe na Linguagem C II Se o compilador C for compatível com o padrão C ANSI 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 elementos/campos separadamente Por exemplo: <var1> = <var2>; Todos os campos de <var1> receberão os valores correspondentes dos campos de <var2> 8/1

Sintaxe na Linguagem C III Para acessar os campos da struct Utiliza-se o nome da variável struct, seguido de ponto, seguido do nome do campo Por exemplo: <var1>.<nome_campo> 9/1

Sintaxe na Linguagem C IV Por exemplo um struct endereço que guarda os elementos nome, rua, cidade, estado e cep s t r u c t e n d e r e c o { c h a r nome [ 3 0 ] ; c h a r rua [ 4 0 ] ;... l o n g i n t cep ; ; Foi feita apenas a declaração da struct, ainda não foi criada nenhuma variável da struct endereço o comando para declarar uma variável com esta struct é: struct endereco info_end; 10/1

Sintaxe na Linguagem C V Já vimos que para acessar os membros de uma struct deve-se usar nome_variável.nome_membro Portanto, considerando o exemplo anterior Para inicializar o cep da variável info_end que é uma variável da struct endereço se faria: info_end.cep = 123456; Para obter o nome da pessoa e colocar na string nome da struct se poderia utilizar: fgets(info_end.nome, 50, stdin); Para imprimir o endereço seria: printf("%s", info_end.rua); 11/1

Vetor de struct I O uso mais comum de struct é em vetores Para declarar um vetor de struct Exemplo: Define-se a struct Define-se o vetor do tipo struct criado s t r u c t a l u n o Turma31 [ 2 8 ] ; s t r u c t e n d e r e c o vetorendamigos [ 1 0 0 ] ; 12/1

Vetor de struct II Crie um programa que permita armazenar o nome e da data de nascimento de até 10 pessoas. Cada pessoa deve ser representada por uma struct dentro de um vetor. A data de nascimento também deve ser uma struct. O nome de cada pessoa deve ser informado pelo teclado. A geração da data de nascimento deve ser feita aleatoriamente através da seguinte função: TData CriaData ( ) { TData D; D. Mes = 1 + ( rand ( ) % 1 2 ) ; D. Ano = 1950 + ( rand ( ) % 4 9 ) ; D. Dia = 1 + ( rand ( ) % 3 0 ) ; r e t u r n D; 13/1

Vetor de struct III Criar as seguintes funções: 1. inserir dados; 2. listar todos os nomes e respectivas idades; 3. listar os nomes das pessoas mais velhas do que uma certa idade fornecida. 14/1

Vetor de struct IV #i n c l u d e "stdio.h" #i n c l u d e "stdlib.h" t y p e d e f s t r u c t Data{ i n t Dia, Mes, Ano ; TData ; t y p e d e f s t r u c t Aluno { c h a r nome [ 5 0 ] ; TData nasc ; TAluno ; TData CriaData ( ) ; v o i d I n s e r i r D a d o s ( TAluno V [ ], i n t n ) ; v o i d I m p r i m e I d a d e s ( TAluno V [ ], i n t n ) ; v o i d ImprimeMaisVelhos ( TAluno V [ ], i n t n, i n t i d a d e ) ; 15/1

Vetor de struct V i n t main ( ) { TAluno A [ 4 ] ; I n s e r i r D a d o s (A, 4 ) ; ImprimeDados (A, 4 ) ; r e t u r n 0 ; TData CriaData ( ) { TData D; D. Mes = 1 + ( rand ( ) % 1 2 ) ; D. Ano = 1950 + ( rand ( ) % 4 9 ) ; D. Dia = 1 + ( rand ( ) % 3 0 ) ; r e t u r n D; 16/1

Vetor de struct VI v o i d I n s e r i r D a d o s ( TAluno V [ ], i n t n ){ i n t i ; f o r ( i = 0 ; i < n ; i ++){ p r i n t f ( "\n Inserir Nome: " ) ; f g e t s (V[ i ]. nome, 50, s t d i n ) ; V[ i ]. nasc = CriaData ( ) ; v o i d I m p r i m e I d a d e s ( TAluno V [ ], i n t n ){ i n t i ; f o r ( i = 0 ; i < n ; i ++) p r i n t f ( "\n %s %d/", V[ i ]. nome, 2014 V[ i ]. nasc. Ano ) ; 17/1

Vetor de struct VII v o i d ImprimeMaisVelhos ( TAluno V [ ], i n t n, i n t i d a d e ) { i n t i ; f o r ( i = 0 ; i < n ; i ++) i f ( (2014 V[ i ]. nasc. Ano ) > i d a d e ) p r i n t f ( "\n %s", V[ i ]. nome ) ; 18/1

Vetor de struct VIII Seja uma estrutura para descrever os carros de uma determinada revendedora, contendo os seguintes campos: marca: string de tamanho 15 ano: inteiro cor: string de tamanho 10 preço: real 19/1

Vetor de struct IX Criar as seguintes funções: 1. Definir um procedimentos para ler o vetor vetcarros. 2. Definir um procedimento que receba um preço e imprima os carros (marca, cor e ano) que tenham preço igual ou menor ao preço recebido. 3. Defina um procedimento que leia a marca de um carro e imprima as informações de todos os carros dessa marca (preço, ano e cor). 4. Defina um procedimentos que leia uma marca, ano e cor e informe se existe ou não um carro com essas características. Se existir, informar o preço. 20/1

Vetor de struct X #i n c l u d e "stdio.h" #i n c l u d e "string.h" t y p e d e f s t r u c t Carro { c h a r marca [ 5 0 ] ; i n t ano ; c h a r c o r [ 2 0 ] ; d o u b l e p r e c o ; TCarro ; v o i d I n s e r e ( TCarro V [ ], i n t n ) ; v o i d MostraPreco ( TCarro V [ ], i n t n, d o u b l e v a l o r ) ; v o i d MostraMarca ( TCarro V [ ], i n t n, c h a r marca ) ; v o i d M o s t r a V a r i o s ( TCarro V [ ], i n t n, c h a r marca, i n t ano, c h a r c o r ) ; 21/1

Vetor de struct XI i n t main ( ) { TCarro V [ 4 ] ; I n s e r e (V, 4 ) ; p r i n t f ( "\n Mostrar por preco: \n" ) ; MostraPreco (V, 4, 2 0 0 0 0 ) ; p r i n t f ( "\n Mostrar por marca: \n" ) ; MostraMarca (V, 4, "fiat" ) ; p r i n t f ( "\n Mostrar varios: \n" ) ; M o s t r a V a r i o s (V, 4, "fiat", 2005, "prata" ) ; r e t u r n 0 ; 22/1

Vetor de struct XII v o i d I n s e r e ( TCarro V [ ], i n t n ){ i n t i ; f o r ( i = 0 ; i < n ; i ++){ p r i n t f ( "\n Digite Marca Ano Cor Preco" ) ; s c a n f ( " %s %d %s %lf", V[ i ]. marca, &V[ i ]. ano, V[ i ]. cor, &V[ i ]. p r e c o ) ; v o i d MostraPreco ( TCarro V [ ], i n t n, d o u b l e v a l o r ){ i n t i ; f o r ( i = 0 ; i < n ; i ++){ i f (V[ i ]. p r e c o <= v a l o r ) p r i n t f ( "\n %s %s %d", V[ i ]. marca, V[ i ]. cor, V[ i ]. ano ) ; 23/1

Vetor de struct XIII v o i d MostraMarca ( TCarro V [ ], i n t n, c h a r marca ){ i n t i ; f o r ( i = 0 ; i < n ; i ++){ i f ( strcmp (V[ i ]. marca, marca ) == 0) p r i n t f ( "\n %lf %d %s", V[ i ]. preco, V[ i ]. ano, V[ i ]. c o r ) ; v o i d M o s t r a V a r i o s ( TCarro V [ ], i n t n, c h a r marca, i n t ano, c h a r c o r ) { i n t i ; f o r ( i = 0 ; i < n ; i ++){ i f ( strcmp (V[ i ]. marca, marca ) == 0 && V[ i ]. ano == ano && strcmp (V[ i ]. cor, c o r ) == 0 ) p r i n t f ( "\n %lf", V[ i ]. p r e c o ) ; 24/1

Vetor de struct XIV Seja um algoritmo para controlar os produtos do estoque de um supermercado. Para cada produto, tem-se os seguintes campos: nome: string de tamanho 15 setor: caracter quantidade: inteiro preço: real //preço por unidade do produto 25/1

Vetor de struct XV Crie um menu para: 1. Definir um bloco de instruções para inserir produtos 2. Definir um bloco de instruções para ler o vetor estoque. 3. Definir um bloco de instruções que receba um setor e devolva o número de diferentes produtos desse setor. 4. Definir um bloco de instruções que calcule e devolva o total de capital investido em produtos do supermercado. 5. Sair do Programa. 26/1

Vetor de struct XVI #d e f i n e N 1000 t y p e d e f s t r u c t Produto { c h a r nome [ 5 0 ], s e t o r ; i n t q u a n t i d a d e ; d o u b l e p r e c o ; TProduto ; i n t Menu ( ) ; i n t I n s e r i r ( TProduto V [ ], i n t ) ; v o i d L e r E s t o q u e ( TProduto V [ ], i n t ) ; i n t L e r S e t o r ( TProduto V [ ], i n t ) ; d o u b l e C a p i t a l ( TProduto V [ ], i n t ) ; 27/1

Vetor de struct XVII i n t main ( ) { TProduto V[N ] ; i n t numprod = 0, t o t ; d o u b l e v a l o r ; i n t op ; do{ op = Menu ( ) ; s w i t c h ( op ){ c a s e 1 : numprod = I n s e r i r (V, numprod ) ; break ; c a s e 2 : L e r E s t o q u e (V, numprod ) ; break ; c a s e 3 : t o t = L e r S e t o r (V, numprod ) ; break ; c a s e 4 : v a l o r = C a p i t a l (V, numprod ) ; p r i n t f ( "\n Total Capital : %lf ", v a l o r ) ; break ; c a s e 5 : p r i n t f ( "\n Programa Terminado!" ) ; break ; d e f a u l t : p r i n t f ( "Opcao invalida \n" ) ; w h i l e ( op!= 5 ) ; r e t u r n 0 ; 28/1

Vetor de struct XVIII i n t Menu ( ) { i n t op ; p r i n t f ( "\n 1. Inserir dados" ) ; p r i n t f ( "\n 2. Ler estoque " ) ; p r i n t f ( "\n 3. Produtos por setor " ) ; p r i n t f ( "\n 4. Total capital " ) ; p r i n t f ( "\n 5. Sair \n" ) ; s c a n f ( " %d %*c", &op ) ; r e t u r n op ; 29/1

Vetor de struct XIX i n t I n s e r i r ( TProduto V [ ], i n t p r o d L o c a l ) { c h a r r e s p ; i f ( p r o d L o c a l < N){ do{ p r i n t f ( "\n Inserir nome do produto : " ) ; f g e t s (V[ p r o d L o c a l ]. nome, 50, s t d i n ) ; p r i n t f ( "\n Inserir setor, quantidade e preco: \n" ) ; s c a n f ( " %c %d %lf %*c", &V[ p r o d L o c a l ]. s e t o r, &V[ p r o d L o c a l ]. quantidade, &V[ p r o d L o c a l ]. p r e c o ) ; p r i n t f ( " Continua Inserindo S/N \n" ) ; s c a n f ( " %c %*c", &r e s p ) ; p r o d L o c a l ++; w h i l e ( r e s p == s r e s p == S ) ; e l s e p r i n t f ( "Nao eh possivel inserir mais produtos \n" ) ; r e t u r n p r o d L o c a l ; 30/1

Vetor de struct XX v o i d L e r E s t o q u e ( TProduto V [ ], i n t p r o d L o c a l ) { i n t i ; i f ( p r o d L o c a l < N) { f o r ( i = 0 ; i < p r o d L o c a l ; i ++) p r i n t f ( " %s %c %d %lf \n", V[ i ]. nome, V[ i ]. s e t o r, V[ i ]. quantidade, V[ i ]. p r e c o ) ; 31/1

Vetor de struct XXI i n t L e r S e t o r ( TProduto V [ ], i n t p r o d L o c a l ) { c h a r s e t o r ; i n t i, cont = 0 ; i f ( p r o d L o c a l < N) { p r i n t f ( "\n Inserir setor: " ) ; s c a n f ( " %c %*c", &s e t o r ) ; f o r ( i = 0 ; i < p r o d L o c a l ; i ++) i f ( s e t o r == V[ i ]. s e t o r ) cont += V[ i ]. q u a n t i d a d e ; p r i n t f ( "\n Produtos no setor %c: %d", s e t o r, cont ) ; r e t u r n cont ; 32/1

Vetor de struct XXII d o u b l e C a p i t a l ( TProduto V [ ], i n t p r o d L o c a l ) { i n t i ; d o u b l e t o t a l = 0 ; i f ( p r o d L o c a l < N) { f o r ( i = 0 ; i < p r o d L o c a l ; i ++) t o t a l += (V [ i ]. p r e c o V[ i ]. q u a n t i d a d e ) ; r e t u r n t o t a l ; 33/1

Exercícios propostos I Construa um programa para cadastro de veículos. Os dados que deverão ser armazenados sobre veículos são: marca, modelo, ano de fabricação, cor e placa. Use a estrutura conhecida como registro para compor os dados sobre o veículo. O programa deve ser capaz de armazenar os dados de 50 veículos. Para isto, use a etsrutura registro combinada com um vetor. O programa deverá permitir a entrada de quantos veículos o usuário quiser cadastrar. Crie uma opção para o usuário visualizar os veículos cadastrados. 34/1

FIM 35/1