Estrutura de Dados

download Estrutura de Dados

of 6

description

Atps estrutura de dados

Transcript of Estrutura de Dados

Estrutura de dados Enviado por Fernando-Iatauro 12/10/2014 1252 Palavras Pgina 6de 6 Presidente Vargas, 1254, 6 andar c/j 61, Fernandpolis}.

Diagrama de sintaxe:

A declarao de variveis pode ser feita de quatro formas, com a definio de tipo e a declarao de variveis em instrues diferentes e na mesma instruo e com a palavra reservada typedef.1. Instrues diferentes:struct ENDERECO { char * tipologradouro;char * logradouro; char * numero; char * complemento; char * cidade; };Struct ENDERECO a;2. Mesma instruo:Ssruct ENDERECO { char * tipologradouro; char * logradouro; char * numero; char * complemento; char * cidade;} a;3. Instrues diferentes com typedef:typedef struct { char * tipologradouro;char * logradouro; char * numero; char * complemento; char * cidade; } ENDERECO;ENDERECO a;4. Mesma instruo com typedef:typedef struct { char * tipologradouro; char * logradouro; char * numero; char * complemento; char * cidade;} a;A inicializao de uma estrutura feita da mesma forma que um array.ENDERECO a = {Avenida, Presidente Vargas, 1254, 6 andar c/j 61, Fernandpolis}O acesso aos dados efetuado por meio de identificadores.Exemploa.tipologradouro = Avenida;a.logradouro = Presidente Vargas;Os operadores de acesso de uma estrutura so . e -> ou * o primeiro utilizado para a passagem de valores o segundo para a atribuio por ponteiros.Exemplo:1. Operador ..struct ENDERECO a;a.tipologradouro = Avenida;a.logradouro = Presidente Vargas;2. Operador ->.struct ENDERECO *a;a->tipologradouro = Avenida;a->logradouro = Presidente Vargas; 3. Operador *.struct ENDERECO *a;(*a).tipologradouro = Avenida;(*a).logradouro = Presidente Vargas;A atribuio de valores pode ser feita membro a membro ou tambm pode ser feita entre estruturasExemplo:1. Membro a membrostruct ENDERECO a;a.tipologradouro = Avenida;a.logradouro = Presidente Vargas;2. Entre estruturaasstruct ENDERECO a, b;a = b;a = * (&y);1.2.1. Passagem para estruturas.As estruturas podem ser utilizadas na passagem para funes, da mesma forma que uma varivel elas podem ser passadas por valor ou por referencia (endereo de memria). De acordo com o mtodo escolhido deve-se utilizar o operador correto, ou seja, . ponto para passagem por valor e -> para a passagem por referencia.1.2.1.1. Passagem por cpia de valor da estrutura.Passa-se o nome da estrutura para a estrutura da funo implicando a copia do contedo de uma estrutura para outra. Em detrimento as passagem de alinhamento, ou seja, arrays, esse tipo de passagem no existe, ao passar o nome de um array para um array local da funo no esta sendo feita a copia do contedo do array e sim uma copia do endereo do array.ESTRUTURAS: Recebe a copia da estrutura.float produto(VETOR a);ARRAYS: Recebe a copia do endereo do array.float produto (float a[]);Exemplos:1. Passagem por cpia de valor de estrutura.#include typedef struct { float x; float y;} VETOR;float produto (VETOR);main(){VETOR p = {5.0,10.0};float p_resultado; p_resultado = produto (p);printf(Poduto = %f, p_resultado);}float produto (VETOR){return (a.x * a.y);}2. Passagem por cpia de valor de endereo de array.#include float produto (float a);main(){float p[2] = {5.0,10.0};float p_resultado;p_resultado = produto (p);printf(Produto = %f, p_resultado);}float produto (float a[]){return (a[0] * a[1]);}1.2.1.2. Passagem por cpia de valor de endereo da estrutura.Passa-se o endereo da estrutura para uma varivel de ponteiro da funo, com isso se esta passando o mesmo endereo de memria da estrutura original para a funo. No array a simples passagem do nome do array j a passagem do endereo de memria do array, j que o compilador interpreta o nome do array como o apontador para ele mesmo.ESTRUTURAS: Recebe a copia do endereo da estrutura.float produto(VETOR *a);ARRAYS: Recebe a copia do endereo do array.float produto(float *a);Exemplos:1. Passagem por cpia de valor de endereo de estrutura.#include typedef struct { float x; float y;} VETOR;float produto (VETOR*);main(){VETOR p = {5.0,10.0};float p_resultado;p_resultado = produto (&p);printf(Poduto = %f, p_resultado);}float produto (VETOR *a){return (a->x * a->y);}

2. Passagem por cpia de valor de endereo de array.#include float produto (float *a);main(){float p[2] = {5.0,10.0};float p_resultado;p_resultado = produto (p);printf(Produto = %f, p_resultado);}float produto (float *a){return (a[0] * a[1]);}1.2.1.3. Retorno de uma estrutura a partir de uma funo por valor.O retorno de uma estrutura por valor nada mais do que retornar o nome da estrutura pela funo, ou seja, retornar a copia dos valores da estrutura da funo para a estrutura da funo que chamou a funo.Exemplo:#include typedef struct {float x; float y; } VETOR;VETOR somaesubtracao(VETOR);main(){VETOR p = {5.0,10.0};VECTOR s;s = somaesubtracao (p);printf(Vetor soma e subtracao = {%f,%f},s.x, s.y);}VETOR somaesubtracao (VETOR a){VETOR vs;vs.x = a.x + a.y;vs.y = a.x - a.y;return vs;}1.2.1.4. Retorno por cpia de valor de endereo de estrutura.Exemplo:#include typedef struct {float x; float y; } VETOR;VETOR *somaesubtracao(VETOR);main(){VETOR p = {5.0,10.0};VECTOR *s;s = somaesubtracao (p);printf(Vetor soma e subtracao = {%f,%f},s->x, s->y);}VETOR *somaesubtracao (VETOR a){static VETOR vs;vs.x = a.x + a.y;vs.y = a.x - a.y;return &vs;}2. PROGRAMAFazer um programa em Linguagem C que implemente uma estrutura avio(structaviao), permitindo o cadastro e a exibio, com os seguintes campos: modelo; fabricante; passageiros; comprimento; altura; velocidade; altitude; motor

#include #include struct structaviao { char modelo[100];char fabricante[100];int passageiros;float comprimento;float altura;float velocidade;float altitude;char motor[100];

};

void saida(struct structaviao);void entrada(struct structaviao*);int main (){struct structaviao a;

entrada(&a);saida(a);

return 0;}void entrada(struct structaviao *b){printf("Entre o modelo:");scanf(" %[^\t\n]s", b->modelo);printf("\nEntre o fabricante:");scanf(" %[^\t\n]s", b->fabricante);printf("\nEntre a quantidade passageiros:");scanf("%d", &b->passageiros);printf("\nEntre o comprimento:");scanf("%f", &b->comprimento);printf("\nEntre a altura:");scanf("%f", &b->altura);printf("\nEntre a velocidade:");scanf("%f", &b->velocidade);printf("\nEntre a altitude:");scanf("%f", &b->altitude);printf("\nEntre o motor:");scanf(" %[^\t\n]s", b->motor);

}void saida(struct structaviao b){printf("\nModelo: %s \n", b.modelo);printf("Fabricante: %s \n", b.fabricante);printf("Quantidade de passageiros: %d \n", b.passageiros);printf("Comprimento: %.2f \n", b.comprimento);printf("Altura: %.2f \n", b.altura);printf("Velocidade: %.2f \n", b.velocidade);printf("Altitude: %.2f \n", b.altitude);printf("Motor: %s \n", b.motor);getch();} 1. ALOCAO ESTTICA DE MEMRIA.Ao desenvolver um programa em linguagem C normalmente temos que especificar antes de comear rodar um programa as variveis que iremos utilizar, reservando espao na memria para as mesmas, as variveis alocadas em posies fixas da memria so chamadas de estticas, as variveis que so criadas e destrudas durante a execuo do programa, so chamadas de dinmicas.1.1. Formas de alocaoA alocao de memria em um computador pode ser classificada em dois grupos:Alocao Esttica: Os dados tem tamanho fixo e esto organizados de forma sequencial na memria do computador.Alocao Dinmica: Os dados podem ter tamanho varivel j que podemos definir o tamanho de memria que ser alocado para cada dado. Com isso podemos alocar blocos de memria que podem no estar organizados sequencialmente.1.2. Alocao Esttica de MemriaAs estruturas de dados quando armazenam um conjunto de dados (exemplo: um cadastro), podem ser organizadas de acordo com a maneira que os dados so inseridos e retirados da memria do computador. Os tipos mais usuais de estrutura de dados so: as listas lineares sequenciais (vetores simples), as filas, as pilhas e os deques.Em C um tipo de dados:typedef struct{char * tipologradouro;char * logradouro;char * numero;char * complemento;char * cidade;} ENDERECO;A declarao de uma struct feita de forma semelhante a um array. Exemplo de declarao deum endereo com inicializaoENDERECO a = {Avenida, Presidente Vargas, 1254, 6 andar c/j 61, Fernandpolis}.

Diagrama de sintaxe:

A declarao de variveis pode ser feita de quatro formas, com a definio de tipo e a declarao de variveis em instrues diferentes e na mesma instruo e com a palavra reservada typedef.1. Instrues diferentes:struct ENDERECO { char * tipologradouro;char * logradouro; char * numero; char * complemento; char * cidade; };Struct ENDERECO a;2. Mesma instruo:Ssruct ENDERECO { char * tipologradouro; char * logradouro; char * numero; char * complemento; char * cidade;} a;3. Instrues diferentes com typedef:typedef struct { char * tipologradouro;char * logradouro; char * numero; char * complemento; char * cidade; } ENDERECO;ENDERECO a;4. Mesma instruo com typedef:typedef struct { char * tipologradouro; char * logradouro; char * numero; char * complemento; char * cidade;} a;A inicializao de uma estrutura feita da mesma forma que um array.ENDERECO a = {Avenida, Presidente Vargas, 1254, 6 andar c/j 61, Fernandpolis}O acesso aos dados efetuado por meio de identificadores.Exemploa.tipologradouro = Avenida;a.logradouro = Presidente Vargas;Os operadores de acesso de uma estrutura so . e -> ou * o primeiro utilizado para a passagem de valores o segundo para a atribuio por ponteiros.Exemplo:1. Operador ..struct ENDERECO a;a.tipologradouro = Avenida;a.logradouro = Presidente Vargas;2. Operador ->.struct ENDERECO *a;a->tipologradouro = Avenida;a->logradouro = Presidente Vargas;3. Operador *.struct ENDERECO *a;(*a).tipologradouro = Avenida;(*a).logradouro = Presidente Vargas;A atribuio de valores pode ser feita membro a membro ou tambm pode ser feita entre estruturasExemplo:1. Membro a membrostruct ENDERECO a;a.tipologradouro = Avenida;a.logradouro = Presidente Vargas;2. Entre estruturaasstruct ENDERECO a, b;a = b;a = * (&y);1.2.1. Passagem para estruturas.As estruturas podem ser utilizadas na passagem para funes, da mesma forma que uma varivel elas podem ser passadas por valor ou por referencia (endereo de memria). De acordo com o mtodo escolhido deve-se utilizar o operador correto, ou seja, . ponto para passagem por valor e -> para a passagem por referencia.1.2.1.1. Passagem por cpia de valor da estrutura.Passa-se o nome da estrutura para a estrutura da funo implicando a copia do contedo de uma estrutura para outra. Em detrimento as passagem de alinhamento, ou seja, arrays, esse tipo de passagem no existe, ao passar o nome de um array para um array local da funo no esta sendo feita a copia do contedo do array e sim uma copia do endereo do array.ESTRUTURAS: Recebe a copia da estrutura.float produto(VETOR a);ARRAYS: Recebe a copia doendereo do array.float produto (float a[]);Exemplos:1. Passagem por cpia de valor de estrutura.#include typedef struct { float x; float y;} VETOR;float produto (VETOR);main(){VETOR p = {5.0,10.0};float p_resultado;p_resultado = produto (p);printf(Poduto = %f, p_resultado);}float produto (VETOR){return (a.x * a.y);}2. Passagem por cpia de valor de endereo de array.#include float produto (float a);main(){float p[2] = {5.0,10.0};float p_resultado;p_resultado = produto (p);printf(Produto = %f, p_resultado);}float produto (float a[]){return (a[0] * a[1]);}1.2.1.2. Passagem por cpia de valor de endereo da estrutura.Passa-se o endereo da estrutura para uma varivel de ponteiro da funo, com isso se esta passando o mesmo endereo de memria da estrutura original para a funo. No array a simples passagem do nome do array j a passagem do endereo de memria do array, j que o compilador interpreta o nome do array como o apontador para ele mesmo.ESTRUTURAS: Recebe a copia do endereo da estrutura.float produto(VETOR *a);ARRAYS: Recebe a copia do endereo do array.float produto(float *a);Exemplos:1. Passagem por cpia de valor de endereo de estrutura.#include typedef struct { float x; float y;} VETOR;float produto (VETOR*);main(){VETOR p = {5.0,10.0};float p_resultado;p_resultado = produto (&p);printf(Poduto = %f, p_resultado);}floatproduto (VETOR *a){return (a->x * a->y);}

2. Passagem por cpia de valor de endereo de array.#include float produto (float *a);main(){float p[2] = {5.0,10.0};float p_resultado;p_resultado = produto (p);printf(Produto = %f, p_resultado);}float produto (float *a){return (a[0] * a[1]);}1.2.1.3. Retorno de uma estrutura a partir de uma funo por valor.O retorno de uma estrutura por valor nada mais do que retornar o nome da estrutura pela funo, ou seja, retornar a copia dos valores da estrutura da funo para a estrutura da funo que chamou a funo.Exemplo:#include typedef struct {float x; float y; } VETOR;VETOR somaesubtracao(VETOR);main(){VETOR p = {5.0,10.0};VECTOR s;s = somaesubtracao (p);printf(Vetor soma e subtracao = {%f,%f},s.x, s.y);}VETOR somaesubtracao (VETOR a){VETOR vs;vs.x = a.x + a.y;vs.y = a.x - a.y;return vs;}1.2.1.4. Retorno por cpia de valor de endereo de estrutura.Exemplo:#include typedef struct {float x; float y; } VETOR;VETOR *somaesubtracao(VETOR);main(){VETOR p = {5.0,10.0};VECTOR *s;s = somaesubtracao (p);printf(Vetor soma e subtracao = {%f,%f},s->x, s->y);}VETOR *somaesubtracao (VETOR a){static VETOR vs;vs.x = a.x + a.y;vs.y = a.x - a.y;return &vs;}2. PROGRAMAFazer um programa em Linguagem C que implemente uma estrutura avio(structaviao), permitindo o cadastro e a exibio, com os seguintescampos: modelo; fabricante; passageiros; comprimento; altura; velocidade; altitude; motor

#include #include struct structaviao { char modelo[100];char fabricante[100];int passageiros;float comprimento;float altura;float velocidade;float altitude;char motor[100];

};

void saida(struct structaviao);void entrada(struct structaviao*);int main (){struct structaviao a;

entrada(&a);saida(a);

return 0;}void entrada(struct structaviao *b){printf("Entre o modelo:");scanf(" %[^\t\n]s", b->modelo);printf("\nEntre o fabricante:");scanf(" %[^\t\n]s", b->fabricante);printf("\nEntre a quantidade passageiros:");scanf("%d", &b->passageiros);printf("\nEntre o comprimento:");scanf("%f", &b->comprimento);printf("\nEntre a altura:");scanf("%f", &b->altura);printf("\nEntre a velocidade:");scanf("%f", &b->velocidade);printf("\nEntre a altitude:");scanf("%f", &b->altitude);printf("\nEntre o motor:");scanf(" %[^\t\n]s", b->motor);

}void saida(struct structaviao b){printf("\nModelo: %s \n", b.modelo);printf("Fabricante: %s \n", b.fabricante);printf("Quantidade de passageiros: %d \n", b.passageiros);printf("Comprimento: %.2f \n", b.comprimento);printf("Altura: %.2f \n", b.altura);printf("Velocidade: %.2f \n", b.velocidade);printf("Altitude: %.2f \n", b.altitude);printf("Motor: %s \n", b.motor);getch();}