Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução Exercícios Considerações finais Tipos estruturados de dados Prof. DSc. Newton Spolaôr Disciplina Computação I Bacharelado em Ciência da Computação Universidade Estadual do Oeste do Paraná (UNIOESTE) Brasil 18/10/2016 Introdução Exercícios Considerações finais Sumário 1 Introdução 2 Exercícios 3 Considerações finais Newton Spolaôr Tipos estruturados de dados 2 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Aula anterior em um breve olhar Na aula anterior foram apresentados conceitos sobre String: vetor de caracteres que exige atenção especial Operações com bits: AND, OR, XOR e deslocamento de bits Nesta aula falaremos sobre um tipo de dados heterogêneos (struct), capaz de agrupar dados de tipos diferentes Newton Spolaôr Tipos estruturados de dados 3 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Motivação para vetores [1] Como mencionado há algumas aulas, o uso de novos tipos de dados pode melhorar a escalabilidade de um algoritmo Vetores são um tipo de dados que pode auxiliar nesta tarefa Neste cenário, convém discutir sobre a representação de um conjunto de informações de diferentes tipos relacionadas a um aluno dentro de um programa Newton Spolaôr Tipos estruturados de dados 4 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Representação de informações de um aluno [2, 1] Nome (string) RG (int) Data de nascimento (string) Data de matrícula (string) Coeficiente de rendimento (double) Newton Spolaôr Tipos estruturados de dados 5 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Representação de informações de um aluno [1] Como essas informações poderiam ser representadas em um algoritmo? Uma alternativa consiste na declaração de 5 variáveis int main() ... char nome[255]; int RG; ... Mas o que aconteceria se for necessário gerenciar informações de uma turma de 40 alunos? Newton Spolaôr Tipos estruturados de dados 6 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Representação de informações de um aluno [1] Como essas informações poderiam ser representadas em um algoritmo? Uma alternativa consiste na declaração de 5 variáveis int main() ... char nome[255]; int RG; ... Mas o que aconteceria se for necessário gerenciar informações de uma turma de 40 alunos? Newton Spolaôr Tipos estruturados de dados 6 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Representação de informações de um aluno [1] Como essas informações poderiam ser representadas em um algoritmo? Uma alternativa consiste na declaração de 5 variáveis int main() ... char nome[255]; int RG; ... Mas o que aconteceria se for necessário gerenciar informações de uma turma de 40 alunos? Newton Spolaôr Tipos estruturados de dados 6 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Representação de informações de vários alunos [1] Certamente não convém criar 40 × 5 = 200 variáveis Uma alternativa baseada no que foi visto até agora na disciplina consiste em declarar cinco vetores com 40 elementos int main() ... char nomes[40][255]; int RGs[40]; ... Newton Spolaôr Tipos estruturados de dados 7 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Representação de informações de vários alunos [1] Certamente não convém criar 40 × 5 = 200 variáveis Uma alternativa baseada no que foi visto até agora na disciplina consiste em declarar cinco vetores com 40 elementos int main() ... char nomes[40][255]; int RGs[40]; ... Newton Spolaôr Tipos estruturados de dados 7 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Representação de informações de vários alunos [1] Contudo, gerenciar adequadamente os cinco vetores, mantendo seus dados consistentes, seria complexo Uma solução melhor para esse problema envolve o uso de duas estruturas Tipo de dados estruturado (struct) para representar informações de um aluno Vetor simples de 40 elementos do tipo struct Newton Spolaôr Tipos estruturados de dados 8 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Representação de informações de um aluno [1] Figura: struct Aluno é um tipo de dados estruturado com 5 campos que representam informações heterogêneas de um aluno Newton Spolaôr Tipos estruturados de dados 9 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Representação de informações de vários alunos [1] Figura: A variável v é um vetor simples de struct que permite armazenar informações de 40 alunos Newton Spolaôr Tipos estruturados de dados 10 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Forma geral para criar um tipo estruturado em C [3] Antes de ir para o código, algumas observações sobre struct em C O tipo de dados correspondente ao struct deve ser criado fora de qualquer função, similar ao que ocorria no Pascal Embora seja possível declarar um ou mais campos do mesmo tipo de dados em um struct, cada campo deve ser criado junto com seu tipo struct nome_da_estrutura{ tipo_de_dados_1 nome_campo_1; tipo_de_dados_2 nome_campo_2; ... tipo_de_dados_k nome_campo_k; }; Newton Spolaôr Tipos estruturados de dados 11 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Código C para criar os tipos de dados e variáveis struct Aluno{ //estrutura para um aluno char nome[255]; int RG; char DNasc[10]; char DMatr[10]; double coef; } Newton Spolaôr Tipos estruturados de dados 12 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Código C para criar os tipos de dados e variáveis //continuação int main() { struct Aluno joao; //declaração de variável //do tipo de dados //struct Aluno struct Aluno v[40]; //declaração de vetor //para 40 alunos return 0; } Newton Spolaôr Tipos estruturados de dados 13 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Campos de um registro [1] Enquanto que um vetor simples é constituído por elementos, um registro é composto por campos Para acessar um campo, seja para atribuição ou para consulta, é necessário utilizar o operador . (ponto final), como exemplificado a seguir Atribuição de RG para aluno (variável) joao: joao.RG = 91233219; Leitura do RG do aluno joao: scanf("%d",joao.RG) Escrita do nome do 1o aluno do vetor v: printf("%s",v[0].nome) ; Newton Spolaôr Tipos estruturados de dados 14 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Campos de um registro [1] Enquantoque um vetor simples é constituído por elementos, um registro é composto por campos Para acessar um campo, seja para atribuição ou para consulta, é necessário utilizar o operador . (ponto final), como exemplificado a seguir Atribuição de RG para aluno (variável) joao: joao.RG = 91233219; Leitura do RG do aluno joao: scanf("%d",joao.RG) Escrita do nome do 1o aluno do vetor v: printf("%s",v[0].nome) ; Newton Spolaôr Tipos estruturados de dados 14 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Campos de um registro [1] Enquanto que um vetor simples é constituído por elementos, um registro é composto por campos Para acessar um campo, seja para atribuição ou para consulta, é necessário utilizar o operador . (ponto final), como exemplificado a seguir Atribuição de RG para aluno (variável) joao: joao.RG = 91233219; Leitura do RG do aluno joao: scanf("%d",joao.RG) Escrita do nome do 1o aluno do vetor v: printf("%s",v[0].nome); Newton Spolaôr Tipos estruturados de dados 14 Introdução Exercícios Considerações finais Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Objetivo geral desta aula Apresentar e exercitar tipos estruturados de dados em C. Newton Spolaôr Tipos estruturados de dados 15 Introdução Exercícios Considerações finais Sumário 1 Introdução 2 Exercícios 3 Considerações finais Newton Spolaôr Tipos estruturados de dados 16 Introdução Exercícios Considerações finais Exercício 1 [1] Represente um registro para armazenar dia, mês e ano referente a uma data genérica Newton Spolaôr Tipos estruturados de dados 17 Introdução Exercícios Considerações finais Exercício 2 [3] Crie uma estrutura para carros com as seguintes informações: fabricante, modelo, ano, cor e preço Após, escreva um programa principal que leia as informações de um carro e, depois da leitura, imprima as informações na tela utilizando a estrutura criada anteriormente Newton Spolaôr Tipos estruturados de dados 18 Introdução Exercícios Considerações finais Exercício 3 [3] A partir do exercício anterior, após lidos os dados no programa, crie uma função que receba o registro e modifique para 2000 o ano de fabricação do carro, caso o mesmo seja anterior a 2000 Além disso, modifique o fabricante para “GM”, caso o mesmo seja Chevrolet Após a chamada, imprima as informações na tela utilizando a estrutura preenchida na função Newton Spolaôr Tipos estruturados de dados 19 Introdução Exercícios Considerações finais Exercício 4 [3] Crie uma estrutura para armazenar dados sobre filmes (título, gênero e ano) Crie e leia um vetor com informações de 5 filmes Newton Spolaôr Tipos estruturados de dados 20 Introdução Exercícios Considerações finais Exercício 5 [3] Crie uma função que receba um vetor de 5 filmes e imprima os títulos dos filmes de aventura feitos entre 2001 e 2005 Newton Spolaôr Tipos estruturados de dados 21 Introdução Exercícios Considerações finais Exercício 6 [3] Crie um registro para os funcionários de uma empresa com as seguintes informações: número do funcionário, nome, idade, telefone, cargo e salário O programa deve manter o cadastro de até 100 funcionários A partir disso, crie e chame uma função que implementa cada uma das seguintes tarefas Inserir funcionário Impressão das informações de todos os funcionários cadastrados Procurar funcionário pelo nome ou pelo número, e imprimir seus dados Newton Spolaôr Tipos estruturados de dados 22 Introdução Exercícios Considerações finais Considerações finais 1 Introdução 2 Exercícios 3 Considerações finais Newton Spolaôr Tipos estruturados de dados 23 Introdução Exercícios Considerações finais Considerações finais Nesta aula foram apresentados conceitos relacionados a tipos estruturados de dados, implementados como struct em C Também foram resolvidos exercícios envolvendo esses conceitos Newton Spolaôr Tipos estruturados de dados 24 Introdução Exercícios Considerações finais Contato newtonsp.unioeste@gmail.com Newton Spolaôr Tipos estruturados de dados 25 Introdução Exercícios Considerações finais Referências bibliográficas [1] M. S. Linder, “Algoritmos e programação,” www.univasf.edu.br/ marcelo.linder, 2011, notas didáticas. [2] cliparwolf.com, “Time travel: a scifi horror,” http://cliparwolf.com/image.php?pic=/cliparts/files2/unfairness- clipart-student-clip-art-6.png, 2015. [3] D. F. Wolf, “Algoritmos,” http://wiki.icmc.usp.br/index.php/Scc-101, 2014, notas didáticas. Newton Spolaôr Tipos estruturados de dados 26 Introdução Aula anterior em um breve olhar Motivação para vetor composto Objetivo geral desta aula Exercícios Considerações finais
Compartilhar