estruturas registros
play

Estruturas (registros) Guillermo C amara-Ch avez UFOP 1/44 - PowerPoint PPT Presentation

BCC 201 - Introdu c ao ` a Programa c ao I Estruturas (registros) Guillermo C amara-Ch avez UFOP 1/44 Estruturas ( struct ) I Imaginemos que queremos ler as notas de 4 provas para um aluno e calcular a m edia do


  1. BCC 201 - Introdu¸ c˜ ao ` a Programa¸ c˜ ao I Estruturas (registros) Guillermo C´ amara-Ch´ avez UFOP 1/44

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

  3. Estruturas ( struct ) II 3/44

  4. Estruturas ( struct ) III 4/44

  5. Estruturas ( struct ) IV 5/44

  6. Estruturas ( struct ) V ◮ “ structs ” s˜ ao Estruturas de Dados Heterogˆ eneas ◮ Uma estrutura agrupa v´ arias vari´ aveis numa s´ o . ◮ Funciona como uma esp´ ecie de “ficha”. ◮ A ficha armazena diversos dados relacionados , por´ em de tipos diferente . 6/44

  7. Estruturas ( struct ) VI ◮ A estrutura, ent˜ ao, serve para agrupar um conjunto de dados n˜ ao 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

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

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

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

  11. Estruturas ( struct ) X ◮ Data n˜ ao ´ e uma vari´ avel, sen˜ ao o nome pelo que ´ e conhecido um novo tipo de dados ◮ Cada um dos elementos de Data ´ e denominado campo. 11/44

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

  13. Estruturas ( struct ) XII 13/44

  14. Estruturas ( struct ) XIII 14/44

  15. Estruturas ( struct ) XIV 15/44

  16. Estruturas ( struct ) XV 16/44

  17. Estruturas ( struct ) XVI s t r u c t cadastroAluno { char nome [ 5 0 ] ; i n t codigo ; i n t idade ; } ; 17/44

  18. Estruturas ( struct ) XVII i n t main () { s t r u c t cadastroAluno Alu1 , Alu2 ; s t r c p y ( Alu1 . nome , ao Santos" ) ; "Jo~ Alu1 . codigo = 365833; Alu1 . idade = 19; 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 canf ( " %d %d" , &Alu2 . codigo , &Alu2 . idade ) ; p r i n t f ( " %s %d %d \n" , Alu1 . nome , Alu1 . codigo , Alu1 . idade ) ; p r i n t f ( " %s %d %d \n" , Alu2 . nome , Alu2 . codigo , Alu2 . idade ) ; r e t u r n 0; } 18/44

  19. Vetor de Registros I ◮ Declara¸ c˜ ao: s t r u c t n o m e r e g i s t r o n o me v ar i av el [ tamanho vetor ] ; ◮ Uso: n om e v ar ia v el [ i n d i c e ] . nome do campo ; 19/44

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

  21. Vetor de Registros III s t r u c t cadastroAluno { char nome [ 5 0 ] ; i n t codigo ; i n t idade ; } ; i n t main () { s t r u c t cadastroAluno A [ 2 0 ] ; i n t i ; f o r ( i = 0; i < 20; 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 canf ( " %d %d" , &A[ i ] . codigo , &A[ i ] . idade ) ; } f o r ( i = 0; i < 20; i++) p r i n t f ( " %s %d %d \n" , A[ i ] . nome ,A[ i ] . codigo , A[ i ] . idade ) ; r e t u r n 0; } 21/44

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

  23. Exemplos II 23/44

  24. Exemplos III 24/44

  25. Exemplos IV 25/44

  26. Exemplos V s t r u c t f i l m e { char 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´ umero de filmes " ) ; s canf ( " %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 canf ( " %d" , &f [ i ] . ano ) ; } // . . . ( continua ) 26/44

  27. 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

  28. Exemplos VII Inicializa¸ c˜ ao: ´ e poss´ ıvel inicializar uma vari´ avel do tipo estrutura s t r u c t f i l m e { char 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: %d" , f . nome , f . ano ) ; %s Ano: r e t u r n 0; } 28/44

  29. 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

  30. Exemplos IX s t r u c t Aluno { char nome [ 5 0 ] ; i n t idade ; 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 < 10; 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 canf ( " %d %d" , &l i s t a [ i ] . idade , &l i s t a [ i ] . i d ) ; } . . . 30/44

  31. Exemplos X . . . pos = 0; menor = l i s t a [ 0 ] . idade ; f o r ( i n t i = 1; i < 10; i++) i f ( l i s t a [ i ] . idade < menor ) { menor = l i s t a [ i ] . idade ; 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

  32. Novos Tipos: typedef I ◮ A declara¸ c˜ ao de uma vari´ avel do tipo estrutura emprega a palavra reservada struct s t r u c t Data d1 ; ◮ A palavra reservada typedef estabelece um sinˆ onimo para qualquer conjunto de palavras 32/44

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

  34. Novos Tipos: typedef III ◮ As trˆ es formas poss´ ıveis para declarar um novo tipo Data com ou sem typedef s˜ ao: 34/44

  35. Estruturas Compostas I Declara¸ c˜ ao 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

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

  37. 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 { char nome [ 5 0 ] ; i n t i d ; s t r u c t data nascimento ; } ; 37/44

  38. 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 alunos ; p r i n t f ( "Inserir nome: \n" ) ; f g e t s ( alunos . nome , 50 , s t d i n ) ; p r i n t f ( "Inserir identidade: \n" ) ; scanf ( " %d" , &alunos . i d ) ; p r i n t f ( "Inserir data de nascimento (dd/mm/aa) \n" ) ; scanf ( " %d %d" , &alunos . nascimento . dia , %d &alunos . nascimento . mes , &alunos . nascimento . ano ) ; r e t u r n 0; } 38/44

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

  40. 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; double r a i o ; } ; double 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

  41. 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; double d p r i n t f ( "Inserir dados do circulo: \n" ) ; p r i n t f ( "Coordenadas em x e y: \n" ) ; scanf ( " %d %d" , &c i r c .C. x , &c i r c .C. y ) ; p r i n t f ( "Raio: \n" ) ; scanf ( " %lf" , &c i r c . r a i o ) ; p r i n t f ( "Inserir ponto P (x,y) \n" ) ; scanf ( " %d %d" , &P. x , &P. y ) ; . . . 41/44

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend