Você está na página 1de 29

Algoritmos e Programao

Registros e Aplicao em
Linguagem C
Tema 6

Prof. Jeanne Dobgenski


Estruturas em C struct

Uma struct rene uma coleo de


informaes de um objeto, facilitando sua
organizao e uso.
Cada informao distinta considerada
como um atributo ou campo da estrutura.
O atributo pode ser definido como qualquer
tipo de dado que a linguagem utiliza ou
como outra estrutura de dados: vetor,
matriz ou mesmo outra struct.
Estruturas em C struct

Para usar uma struct em algum programa


deve-se efetuar dois passos:
Primeiro definir e atribuir um nome para
a estrutura.
Segundo declarar a varivel do tipo
definido.
A varivel do tipo estrutura poder ser,
inclusive, um vetor.
Estruturas em C struct
//declarao do tipo de dado
struct livro
{
char nome;
float preco;
int pagina;
};

//declarao das variveis


struct livro livro1, livro2, livro3;

//opo mais adequada para declarao de varivel


struct livro livro[3];
Estruturas em C Representao
Grfica
Livro 1 Livro 2 Livro 3
.nome .nome .nome
.preco .preco .preco
.pagina .pagina .pagina

Livro[0] Livro[1] Livro[2]

.nome .nome .nome

.preco .preco .preco

.pagina .pagina .pagina


Estruturas em C Exemplo 1
/* Programa computacional que define uma estrutura para
armazenar informaes de tipos distintos de um livro e faz
uso dela na funo principal. */
#include<stdio.h>
int main()
{
//declarao do tipo de dado
struct livro
{
char nome;
float preco;
int pagina;
};
// declarao das variveis
struct livro livro[3]; int i;
Estruturas em C Exemplo
printf(Entre com os nomes, preos e nmeros de
pginas de trs livros);
for(i=0; i<3;i++)
{
printf(\n Dados do livro %d , i+1);
scanf(%c %f %d, &livro[i].nome, &livro[i].preco,
&livro[i].pagina);
} // Fim para i
printf(\n Esses foram os dados digitados: \n)
for(i=0; i<3;i++)
printf(Livro %d => %c %6.2f %d\n, i+1,
livro[i].nome, livro[i].preco, livro[i].pagina);
}// FIM ALGORITMO
Registros e Aplicao em Linguagem
C

Continuando
Estruturas em C Exemplo 2
/* Programa em linguagem C que apresenta estruturas: tipos definidos
pelo usurio. Exemplo - Definindo e declarando estruturas. */
#include <stdio.h>
#include <string.h> /* biblioteca com funes de
manipulao de strings */
/* Define a estrutura TAluno para armazenar as
informaes dos alunos */
struct TAluno
{
char codigo[5];
char nome[30];
char situacao[10];
float notas[4];
float media;
};
Estruturas em C Exemplo 2
int main()
{
//Declara uma varivel do tipo TAluno
struct TAluno Aluno;

/*Atribui um valor para o elemento cdigo da


estrutura usando a funo padro da biblioteca
string.h, strcpy() que copia o dado entre aspas
para o campo cdigo da varivel Aluno */
strcpy(Aluno.codigo, "2546");

//Atribui valor para o campo media da estrutura


Aluno.media = 7.0;
Estruturas em C Exemplo 2
// Imprime o cdigo do aluno na tela
printf("Codigo = %s ", Aluno.codigo);

//imprime a media do Aluno na tela


printf("Media = %.2f\n", Aluno.media);

return(0);

} // Fim algoritmo
Estruturas em C Exemplo 3
/* Programa em linguagem C que apresenta
estruturas: tipos definidos pelo usurio. Exemplo
- Passagem de estruturas como parmetros de
funes. */
#include <stdio.h>
#include <string.h>
struct TAluno
{
char codigo[5];
char nome[30];
char situacao[10];
float notas[4];
float media;
};
Estruturas em C Exemplo 3
// Declara o prottipo da funo
void Func1(struct TAluno Aluno);

int main()
{
/* Declara um vetor de estruturas do tipo
TAluno com 40 posies */
struct TAluno Alunos[40];

// Inicializa dois campos


strcpy(Alunos[0].codigo, "0000");
Alunos[0].media = 0.0;
Estruturas em C Exemplo 3
// Efetua chamada da funo
Func1(Alunos[0]);

// Impresso dos valores atribudos em main


printf("Codigo = %s ", Alunos[0].codigo);
printf("Media = %.2f\n", Alunos[0].media);

return(0);

} // Fim algoritmo
Estruturas em C Exemplo 3
void Func1(struct TAluno Aluno)
{
strcpy(Aluno.codigo, "2546");
Aluno.media = 7.0;
}
Registros e Aplicao em Linguagem C

Agora sua vez


Exerccio

Desenvolva um programa em C que solicite ao


usurio a data de hoje, calcule a data de
amanh e exiba o resultado. Para armazenar
as datas use uma estrutura e para armazenar
a quantidade de dias dos meses use um vetor.
Exerccio Soluo
#include <stdio.h>

struct data
{
int dia, mes, ano;
};

int dias[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};

struct data hoje, amanha;

void le_data_hoje();
Exerccio Soluo
void main()
{
le_data_hoje();
amanha = hoje;
amanha.dia++;
if(amanha.dia > dias[amanha.mes - 1] )
{
amanha.dia = 1;
amanha.mes++;
if(amanha.mes > 12 )
{
amanha.ano++;
amanha.mes =1;
} // end if amanha.mes
}// end if amanha.dia
Exerccio Soluo
printf("A data de amanh %02d:%02d:%02d\n,
amanha.dia, amanha.mes, amanha.ano);
}// end main

void le_data_hoje ( )
{
int valido = 0;
while( valido == 0 )
{
printf("Entre com o ano atual (2010-2019) --> ");
scanf("&d", &hoje.ano);
if( (hoje.ano < 2010) || (hoje.ano > 2019) )
printf("\n Ano invlido! \n");
else
valido = 1;
} // end while
Exerccio Soluo
valido = 0;
while( valido == 0 )
{
printf("Entre com o ms atual (1-12)");
scanf("&d", &hoje.mes);
if( (hoje.mes < 1) || (hoje.mes > 12) )
printf("\n Ms invlido! \n");
else
valido = 1;
} // end while
Exerccio Soluo
valido = 0;
while( valido == 0 )
{
printf("Entre com o dia atual (1-%d)-->",
dias[hoje.mes - 1]);
scanf("&d", &hoje.dia);
if((hoje.dia < 1) || (hoje.dia > dias[hoje.mes - 1]))
printf("\n Dia invlido! \n");
else
valido = 1;
} // end while
}// end funo
Registros e Aplicao em
Linguagem C
Finalizando
Estruturas em C struct

Uma struct rene uma coleo de


informaes de um objeto, facilitando sua
organizao uso.
Cada informao distinta considerada
como um atributo ou campo da estrutura.
O atributo pode ser definido como qualquer
tipo de dado que a linguagem utiliza ou
como outra estrutura de dados: vetor,
matriz ou mesmo outra struct.
Estruturas em C struct

Para usar uma struct em algum programa


deve-se efetuar dois passos:
Primeiro definir e atribuir um nome para
a estrutura.
Segundo declarar a varivel do tipo
definido.
A varivel do tipo estrutura poder ser,
inclusive, um vetor.
Estruturas em C struct
//declarao do tipo de dado
struct livro
{
char nome;
float preco;
int pagina;
};

//declarao das variveis


struct livro livro1, livro2, livro3;

//opo mais adequada para declarao de varivel


struct livro livro[3];
Estruturas em C Representao
Grfica
Livro 1 Livro 2 Livro 3

.nome .nome .nome


.preco .preco .preco
.pagina .pagina
.pagina

Livro[0] Livro[1] Livro[2]

.nome .nome .nome

.preco .preco .preco

.pagina .pagina .pagina


Estruturas em C Exemplo
/* Programa computacional que define uma estrutura para armazenar
informaes de tipos distintos de um livro e faz uso dela na funo
principal. */
#include<stdio.h>
int main()
{
//declarao do tipo de dado
struct livro
{
char nome;
float preco;
int pagina;
};
// declarao das variveis
struct livro livro[3]; int i;
Estruturas em C Exemplo
printf(Entre com os nomes, preos e nmeros de
pginas de trs livros);
for(i=0; i<3;i++)
{
printf(\n Dados do livro %d , i+1);
scanf(%c %f %d, &livro[i].nome, &livro[i].preco,
&livro[i].pagina);
} // Fim para i
printf(\n Esses foram os dados digitados: \n)
for(i=0; i<3;i++)
printf(Livro %d => %c %6.2f %d\n, i+1,
livro[i].nome, livro[i].preco, livro[i].pagina);
}// FIM ALGORITMO