Introdução a Programação. Tipos Estruturados de Dados

Documentos relacionados
Computação Eletrônica. Aula 08 Estruturas de Dados. Prof: Luciano Barbosa. CIn.ufpe.br

Métodos Computacionais. Tipos Estruturados

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Introdução a Programação. Ponteiros para Estruturas, Outros Tipos de Estruturas

Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses

Tipos Estruturados. Tipos Estruturados

LINGUAGEM C: ESTRUTURAS DEFINIDAS PELO

Introdução a Programação. Ponteiros e Passagem de Argumentos por Referência

INF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1

Computação Eletrônica. Struct (Estruturas)

Módulo 8 Tipos Estruturados

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros

ponteiros INF Programação I Prof. Roberto Azevedo

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: tipos de dados definidos pelo programador: struct union enum typedef

Programação I Funções. Prof. Carlos Alberto

Algoritmos e Programação

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Algoritmos e Estruturas de Dados I 01/2013. Passagem de Parâmetros e Estruturas. Pedro O.S. Vaz de Melo

Introdução à Programação. Expressões Booleanas e Comandos Condicionais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Computação eletrônica: Funções

SSC304 Introdução à Programação Para Engenharias. Estruturas. GE4 Bio

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

MC-102 Aula 21 Registros

10. - ESTRUTURAS Características Básicas

Estruturas. K&R: Capitulo 6. Estruturas IAED, 2014/2015. Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Fundamentos de Programação

Ponteiro. Ponteiro. Objetivo. Compreender a definição e dominar a implementação de ponteiros em C.

Linguagem C: Introdução

ESTRUTURA DE DADOS (TCC )

Ponteiros e Tabelas. K&R: Capítulo 5

Introdução à Programação C

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Linguagem C Funções. André Tavares da Silva.

Introdução à Programação. Funções e Escopo de Variáveis

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Estrutura de Dados. TAD (Tipo Abstrato de Dados) Criando a primeira estrutura

Aula 24 Ponteiros, vetores e structs

Programação II. Tipos Estruturados

Linguagem C. André Tavares da Silva.

Métodos Computacionais

Programação II. Tipos Estruturados. Bruno Feijó Dept. de Informática, PUC-Rio

Computação 2. Aula 7. Profª. Fabiany Ponteiros

Aula 25: Alocação Dinâmica

Linguagem de Programação

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 09 Estruturas

Programação: Vetores

1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador.

Introdução à Programação

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

INF 1620 P1-13/09/02 Questão 1 Nome:

Programação Orientada a Objetos. Giselle Lopes Ferrari Ronque

Introdução à Programação

Algoritmos e Programação

C Estruturas. Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

Prática de Programação. Prof. Tiago A. E. Ferreira Aula 9 Estruturas, Uniões, Enumerações e Tipos Definidos pelo Usuário

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Estruturas em C

Linguagem C. Programação Estruturada. Modularização (Funções) Prof. Luis Nícolas de Amorim Trigo

Ponteiros e Alocação de Memória

Estruturas (registros)

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

Introdução a Computação

19 Vetores, Ponteiros e Funções

Aula 27: Estruturas heterogêneas e alocação dinâmica

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Computação eletrônica:

LINGUAGEM C Estrutura / Funções

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Estruturas. struct são coleções de dados heterogêneos agrupados em uma mesma estrutura de dados. Ex: armazenar as coordenadas (x,y) de um ponto:

Curso de C para Engenharias

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

Estruturas. Estruturas. Estruturas. Estruturas. Estruturas. Algoritmos e Lógica de Programação. Estruturas. Uniões Enumerações CANSI

Aula 26: Estruturas heterogêneas

Introdução a Programação de Jogos

TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO

Estrutura de dados 1. Ponteiros

Métodos Computacionais. Comandos Condicionais e de Repetição em C

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Programação Básica. Estrutura de um algoritmo

Linguagem de Programação I - Registros (struct) No exemplo acima foi criado um tipo de dado estruturado chamado struct aluno.

Variáveis e Operadores em C

Linguagem C: Subprogramação

Aula 13 Oficina de Programação Modularização. Profa. Elaine Faria UFU

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 12 Estruturas

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 7 Arrays. Arrays

Ponteiros de Variáveis

3. Linguagem de Programação C

a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)

Programação 11543: Engenharia Informática 6619: Tecnologias e Sistemas de Informação. Cap. 8 Endereçamento de Memória Endereçamento de Memória

ECT1203 Linguagem de Programação

Transcrição:

Introdução a Programação Tipos Estruturados de Dados

Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados Importância Tipos Estruturados em C (struct) Declaração de structs Variáveis do tipo struct Operações com estruturas Comando typedef Passando Estruturas para Funções Estruturas Aninhadas 2

Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também mecanismos para estruturar dados complexos nos quais as informações são compostas por diversos campos Tipos Estruturados! 3

Tipos Estruturados Agrupa conjunto de tipos de dados distintos sob um único nome Podemos criar varios objetos na memória de um determinado tipo estruturado Estruturas ou Registros string string inteiro inteiro string float float Cadastro Pessoal Nome Endereço Telefone Idade Data de Nascimento Peso Altura Nome do tipo estruturado Membro do tipo estruturado

Tipos Estruturados em C (struct) Forma Geral: struct nome_do_tipo { declaração de variável 1 ; declaração de variável n ; ; Cadastro Pessoal Nome Endereço Telefone Idade Data de Nascimento Peso Altura struct cadastro_pessoal { char nome[50]; char endereço[100]; int telefone; int idade; char nascimento[9]; float peso; float altura; ;

Importância de Tipos Estruturados Considere um ponto representado por duas coordenadas: x e y Sem mecanismos para agrupar as duas coordenadas: int main() { float x ; float y ; Não dá para saber que estas variáveis representam coordenadas de um ponto 6

Importância de Tipos Estruturados Uma estrutura em C serve para agrupar diversas variáveis dentro de um único contexto struct ponto { ; float x ; float y ; 7

Declarando Variáveis do Tipo Ponto A estrutura ponto passa a ser um tipo Então, podemos declarar uma variável deste tipo da seguinte forma: struct ponto { A variável é do tipo float x ; struct ponto float y ; ; int main() { struct ponto p ;... 8

Acessando Membros do Tipo Ponto Membros de uma estrutura são acessados via o operador de acesso (. ) Para acessar as coordenadas: struct ponto { float x ; float y ; ; int main() { struct ponto p ; p. x = 10.0 ; p.x = 0.0; p. y = 5.0 ; p.y = 7.5;... O nome da variável do tipo struct ponto deve vir antes do. 9

Utilizando otipo Estruturado Ponto */ programa que captura e imprime coordenadas*/ #include <stdio.h> struct ponto { float x ; float y ; ; int main (){ struct ponto p ; printf( \ndigite as coordenadas do ponto (x,y) ) ; scanf ( %f %f, &p.x, &p.y ) ; printf( O ponto fornecido foi:(%f,%f)\n,p.x, p.y); return 0 ; variável p não precisa de parênteses 10

Onde Declarar um Tipo Estruturado? Geralmente, declara-se um tipo estruturado fora das funções Escopo da declaração engloba todas as funções no mesmo arquivo fonte Pode-se, também, declarar tipos estruturados dentro de funções Neste caso, escopo do tipo estruturado é na função 11

Declarando otipo Estruturado Fora das Funções struct ponto { float x ; float y ; ; struct ponto alteraponto(float x, float y){ struct ponto q; q.x = x; q.y = y; return q; int main (){ struct ponto p ; Declarado fora das funções Funções podem usar o tipo estruturado declarado acima printf( \ndigite as coordenadas do ponto (x,y) ) ; scanf ( %f %f, &p.x, &p.y ) ; p = alteraponto(8,9);... 12

Declarando otipo Estruturado Dentro de uma Função void lecoordenadas(float* x, float* y){ struct ponto { float x ; float y ; ; struct ponto q; scanf ( %f %f, &q.x, &q.y ) ; *x = q.x; *y = q.y; int main (){ struct ponto p ; Declarado dentro da função alteraponto Outra função NÃO enxerga a declaração do tipo estruturado printf( \ndigite as coordenadas do ponto (x,y) ) ; lecoordenadas(&p.x, &p.y ) ;... Errado! 13

Outras Formas de Declarar Tipos Estruturados e Variáveis Pode-se declarar um tipo estruturado e uma variável deste tipo de diferentes formas struct ponto { float x ; float y ; p; struct { float x ; float y ; p; Declara-se tipo e variável numa expressão só Declara-se tipo SEM NOME e variável numa expressão só Cuidado com legibilidade! 14

Inicializando Variáveis de Tipos Estruturados Uma variável de um tipo estruturado pode ser inicializada com uma estrutura com o auxílio do abre-fecha parênteses( { e ) struct pessoa { char nome[60] ; int idade ; ; int main() { struct pessoa p = { Ana, 30;... Inicialização da variável p do tipo struct pessoa Deve-se inicializar os membros na ordem correta 15

Atribuição de Estruturas A estrutura armazenada por uma variável de um tipo estruturado pode ser atribuída a outra variável deste mesmo tipo estruturado struct pessoa { char nome[60] ; int idade ; ; int main() { struct pessoa p1,p2 = { Ana, 30; p1 = p2;... Atribuição da estrutura contida em p2 para p1 16

Atribuição de Estruturas A inicialização de uma estrutura deve ser feita no ato de sua declaração struct pessoa { char nome[60] ; int idade ; ; int main() { struct pessoa p1,p2; p1 = { Ana, 30; Atribuição de uma estrutura para a variável p1 (Errado)... 17

Outras Operações com Estruturas struct ponto { float x ; float y ; ; int main() { struct ponto p3; struct ponto p1 = {0.0, 4.5; struct ponto p2 = {1.0,2.5; p3 = p1 + p2; Como escrever um programa que imprime a soma das coordenadas de dois pontos? Não podemos somar estruturas inteiras Errado! printf( O x e y do novo ponto é:%f,%f,p3.x,p3.y); return 0; 18

Outras Operações com Estruturas struct ponto { float x ; float y ; ; int main() { struct ponto p3; struct ponto p1 = {0.0, 4.5; struct ponto p2 = {1.0,2.5; p3.x = p1.x + p2.x; p3.y = p1.y + p2.y; Como escrever um programa que imprime a soma das coordenadas de dois pontos? Temos que somar membro a membro Certo! printf( O x e y do novo ponto é:%f,%f,p3.x,p3.y); return 0; 19

Usando typedef O comando typedef permite criar novos nomes para tipos existentes Criação de sinônimos para os nomes de tipos É útil para abreviar nomes de tipos ou tipos complexos Forma Geral: typedef tipo_existente sinonimo; 20

Usando typedef Após a definição de novos nomes para os tipos, podese declarar variáveis usando estes nomes struct pessoa { char nome[60] ; Tipo existente int idade ; ; typedef struct pessoa Pessoa; int main() { Pessoa p = { Ana, 30;... Simplificou declaração do tipo de variável Novo nome 21

Usando typedef Podemos combinar typedef com declaração do tipo estruturado typedef struct pessoa { char nome[60] ; int idade ; Pessoa; int main() { Pessoa p = { Ana, 30;... Criação de tipo e criação de sinônimo 22

Passagem de Estruturas para Funções Considere a função abaixo: void imprimeponto ( struct ponto p ){ printf( O ponto fornecido foi:(%f,%f)\n,p.x,p.y); Assim como podemos passar tipos primitivos como argumentos para uma função, podemos passar estruturas 23

Passagem de Estruturas para Funções */ programa que captura e imprime coordenadas*/ #include <stdio.h> typedef struct ponto { float x ; float y ; Ponto; Passa a estrutura armazenada em p como argumento void imprimeponto(ponto q) { printf( O ponto fornecido foi:(%f,%f)\n,q.x, q.y); int main (){ Ponto p ; printf( \ndigite as coordenadas do ponto (x,y) ) ; scanf ( %f %f, &p.x, &p.y ) ; imprimeponto(p); return 0 ; 24

Retornando Estruturas Considere a função abaixo: struct ponto alteraponto(float x, float y ){ struct ponto q; q.x = x; q.y = y; return q; Assim como uma função pode retornar um valor de um tipos primitivo, uma função pode retornar uma estrutura 25

typedef struct ponto { float x ; float y ; Ponto; Retornando Estruturas Ponto alteraponto(float x, float y){ Ponto q; q.x = x; q.y = y; return q; int main (){ Ponto p ; Variável p recebe a estrutura retornada por alteraponto printf( \ndigite as coordenadas do ponto (x,y) ) ; scanf ( %f %f, &p.x, &p.y ) ; p = alteraponto(8,9);... 26

Tipos Estruturados Mais Complexos Aninhamento de estruturas Membros de uma estrutura podem ser outras estruturas previamente definidas Exemplo: typedef struct ponto { float x ; float y ; Ponto; Tipo estruturado Circulo tem como um dos membros um Ponto typedef struct circulo { Ponto centro; float raio; Circulo; 27

Usando os Tipos Ponto e Circulo float distancia ( Ponto p, Ponto q ){ float d = sqrt((q.x p.x )*(q.x p.x)+ (q.y p.y)*(q.y p.y)) ; return d ; Função que calcula a distância entre 2 pontos d ( x y 2 2 2 x1 ) ( y2 1) Função que determina se um ponto está no círculo int interior ( Circulo c, Ponto p ){ float d = distancia ( c.centro, p ) ; return ( d <= c.raio ) ; Passa para distancia uma estrutura Ponto que é membro da estrutura Circulo 28

Resumindo Tipos Estruturados Structs Operações com Estruturas Comando typedef Passando Estruturas para Funções Estruturas Aninhadas 29