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

Documentos relacionados
Ponteiros & tabelas (cont.) K&R: Capítulo 5

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

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

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000

Introdução à Programação em C Input / Output

Introdução a Computação

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

Introdução à Programação

Métodos Computacionais. Tipos Estruturados

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

Introdução a Programação de Jogos

Introdução à Programação em C

Programação: Vetores

Prova de Programação (21090) Data: 31 de Janeiro de 2008

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Terceira Prova 20 de junho de 2011

Programação de Computadores II

Linguagem C. André Tavares da Silva.

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

Programação Estruturada

Programação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)

ESTRUTURAS COMPOSTAS

ESTRUTURA DE DADOS (TCC )

Introdução à Programação em C (I)

Linguagem C. Ponteiros. Alex Vidigal Bastos.

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

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

Linguagem C Ficheiros Compilação Separada

Introdução à Programação em C (II)

Caracteres. Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

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

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Módulo 7 Cadeias de Caracteres

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

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

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

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

Controlo de Execução. K&R: Capitulo 3

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

Estrutura de Dados. Cadeia de Caracteres. Roberto Araujo Ago/2013

Funções em Linguagem C Parte II

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

ESTRUTURAS COMPOSTAS VETOR

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

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

Introdução à Programação C

O que é um apontador em C (type pointer in C)?

INF 1620 P1-16/09/06 Questão 1 Nome:

Módulo 8 Tipos Estruturados

3. Linguagem de Programação C

Introdução à Programação em C

Linguagem C (continuação)

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:

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

Introdução à Programação. Strings

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

Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2

Básico: estrutura de programa, sintaxe Interface com linha de comando

Caracteres e Cadeias de Caracteres

EXERCÍCIO DE SONDAGEM TURMA 01 SEMESTRE DATA: 01/11/2016. Matrícula Nome Nota

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

Cadeias de Caracteres (Strings)

Estruturas de Dados. Profa. Juliana Pinheiro Campos

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Aula 04. Agregados Homogêneos. Agregados Heterogêneos. Matrizes

#include <stdio.h> #define nl 3 #define nc 4 main () { int matriz[nl][nc],*p,i; for (i=0, p=&matriz[0][0];i<nl*nc;i++) *(p++)=i+1; for (i=0,

Aula 25: Alocação Dinâmica

Introdução à Programação em C (I)

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

Ponteiros e Alocação de Memória

INF 1620 P1-04/10/03 Questão 1 Nome:

Linguagem C Princípios Básicos (parte 1)

TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO

Vetores II. Strings Leitura e exibição Biblioteca string.h Operações com Strings. Matrizes Definição de Acesso Operações com Matrizes

ESTRUTURAS COMPOSTAS VETOR

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

Métodos Computacionais. Strings (Vetor de Caracteres)

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

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

AED 2002/2003 p.1/19. Tipos Abstractos. Necessidade de tipos de dados abstractos Objectos Pilhas FIFOs e filas

Linguagem C Introdução à programação em C

EXERCÍCIO DE SONDAGEM SEMESTRE DATAS: 21/06/2016 (TURMAS 01 E 02) Matrícula Nome Nota

Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados

EXERCÍCIO DE SONDAGEM TURMA 02 SEMESTRE DATA: 01/11/2016. Matrícula Nome Nota

Escreva a função e_caracter que verifica se um determinado caracter é um numero ou não. Escreva um Programa de teste da função.

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 11 Estruturas (Structs) Structs

INF 1007 Programação II

Programação de Computadores II Lista de Exercícios 01

Algoritmos e Estruturas de Dados

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

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

prim = A ; prim = &A[0];

Aula teórica: /6. Enunciado

Introdução a Programação. Strings (Vetor de Caracteres)

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

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

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

Transcrição:

Estruturas K&R: Capitulo 6 Estruturas Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo 2 1

Motivação Definir uma representação agregada na linguagem C para manipular inscrições de alunos a disciplinas Numa inscrição é necessário de representar Número de aluno Sigla da disciplina (máx. 6 caracteres) Nota obtida Como representar em C? 36933 IAED 16 Vector? Todos os dados precisam de ser do mesmo tipo! Solução: estruturas para representar dados agregados de tipos diferentes 3 Exemplos de Estruturas As estruturas permitem definir estruturas de dados sofisticadas, as quais possibilitam a agregação de diferentes tipos de declarações Exemplos: ; struct data { int dia; int mes; int ano; ; struct inscricao { int numero; char disciplina[7]; int nota; ; 4 2

Estruturas Declaração de Variáveis Declararar variáveis do tipo estrutura ; struct ponto centro; Manipular os campos de variáveis do tipo estrutura centro.x = 12.3; centro.y = 5.2; 5 Estruturas Declaração de Variáveis Definição da estrutura: introduz um novo tipo de dados ; Declaração de variável: declara variável como estrutura struct ponto centro; Inicialização: <tipo> <variavel> = { <valores> ; struct ponto centro = { 12.3, 5.2 ; 6 3

Manipulação de Estruturas Manipulação: <variavel>.<membro> centro.x = 12.3; centro.y = 5.2; Estruturas podem incluir estruturas struct rectangulo { struct ponto a, b; ; struct rectangulo rect; rect.a.x = 3.4; rect.b.y = 6.1; 7 Operações Sobre Estruturas Operações válidas: Cópia Atribuição como entidade Acesso aos seus membros Cópia e atribuição incluem passagem de parâmetros para funções e retorno de valores de funções Estruturas não podem ser comparadas usando operador de comparação de igualdade Para determinar se duas estruturas são iguais, é necessário comparar cada campo da estrutura 8 4

Estruturas e Funções Funções podem receber e retornar estruturas struct ponto adicionaponto(struct ponto p1, struct ponto p2) { struct ponto res; res.x = p1.x + p2.x; res.y = p1.y + p2.y; return res; Função retorna cópia da estrutura res Passagem de argumentos feita por valor Chamada adicionaponto(pa, pb) não altera valores de pa nem pb 9 Estruturas e Funções Como a passagem de argumentos é feita por valor, podemos redefinir a função: struct ponto adicionaponto(struct ponto p1, struct ponto p2) { p1.x = p1.x + p2.x; p1.y = p1.y + p2.y; return p1; int main() { struct ponto pa = {1, 3, pb = {5, 2; struct ponto pc = adicionaponto(pa, pb);... Ao invocar a função adicionaponto(pa, pb), os valores de pa e pb não são alterados 10 5

Vectores de Estruturas Permitem representar conjuntos de dados agregados figura [100]; ; struct ponto figura [100]; Em ambos os casos estamos a declarar a variável figura como um vector de pontos 11 Vectores de Estruturas Inicialização ; struct ponto figura [] = { { 1.2, 3.4, { 4.5, 12.6, { 1.2, 10.8 ; 12 6

Definição de novos tipos usando typedef typedef permite associar um nome a um tipo de dados já existente Permite um grau adicional de abstracção typedef int Inteiro; int main() { Inteiro i;... Formato typedef <tipo> <nome>; 13 Definição de novos tipos usando typedef typedef permite associar um nome a um tipo de dados já existente Permite um grau adicional de abstracção typedef struct { Ponto; Ponto x Formato typedef <tipo> <nome>; 14 7

Inscrições e Notas a Disciplinas Problema 1 Programa para manipular as inscrições de alunos a disciplinas Dado um número de aluno, mostra as notas do aluno às disciplinas onde está inscrito 15 Os dados de entrada são todas as inscrições às disciplinas Suponha que numa inscrição representamos o número de aluno, a disciplina e a nota do aluno na disciplina Define-se um limite máximo de inscrições no programa Exemplo dos dados de entrada 1ª linha com o número total de inscrições (N) N linhas com o formato: <número aluno> <nota> <sigla disciplina> 3 36933 16 IAED 12345 14 IAED 23456 8 AC Inscrições e Notas a Disciplinas Definição dos limites e tipo inscrição #include <stdio.h> #define MAX_COD_DISC 7 #define MAX_INSCRICOES 10000 typedef struct { int numero; int nota; char nome[max_cod_disc]; inscricao; 16 8

Inscrições e Notas a Disciplinas Protótipos e Main int letodasinscricoes (inscricao v[]); void mostranotasaluno(inscricao v[], int n, int aluno); int main() { inscricao insc[max_inscricoes]; int numinscricoes = 0, aluno; numinscricoes = letodasinscricoes(insc); scanf("%d", &aluno); while (aluno > 0) { mostranotasaluno(insc, numinscricoes, aluno); scanf("%d", &aluno); return 0; 17 Inscrições e Notas a Disciplinas Funções para ler e mostrar dados int letodasinscricoes (inscricao v[]) { int n, i; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d%d%s", &(v[i].numero), &(v[i].nota), v[i].nome); return n; void mostranotasaluno (inscricao v[], int n, int aluno) { int i; for (i = 0; i < n; i++) if (aluno == v[i].numero) printf("%s %d\n", v[i].nome, v[i].nota); 18 9

Inscrições e Notas a Disciplinas Leitura de strings int letodasinscricoes (inscricao v[]) { int n, i; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d%d%s", &(v[i].numero), &(v[i].nota), v[i].nome); return n; Usar %s para ler uma sequência de caracteres até encontrar um espaço, tabulação ou fim de linha Coloca \0 no fim do texto Não é necessário usar operador & para ler uma string 19 Inscrições e Notas a Disciplinas Mostrar notas de uma disciplina #include <string.h> void mostranotasdisciplina (inscricao v[], int n, char disc[]) { int i; for (i = 0; i < n; i++) if (strcmp(v[i].nome, disc) == 0) printf("%d %d\n", v[i].numero, v[i].nota); Usar strcmp para comparar duas strings Função strcmp devolve 0 se strings são iguais Necessário incluir string.h 20 10

Connection Machine 5 21 2012/2013 11