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

Documentos relacionados
LINGUAGEM C: ESTRUTURAS DEFINIDAS PELO

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

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

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

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

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

Tipos Abstratos de Dados

Linguagem de Programação

Estrutura de Dados Básica

MC-102 Aula 21 Registros

USP - ICMC - SSC SSC o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Aula 11 Oficina de Programação Estruturas. Profa. Elaine Faria UFU

Tipos de Dados Definidos Pelo Usuário. Estruturas Uniões Enumerações O Comando sizeof O Comando typedef

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

Tipos Estruturados. Tipos Estruturados

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

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:

Algoritmos e Programação

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Algoritmos e Programação

Métodos Computacionais. Tipos Estruturados

Estruturas (registros)

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções

PROGRAMAÇÃO A. Vetores

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

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

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

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

Programação: Vetores

Aula 6: Entrada e Saída

Algoritmos e Programação

Conceitos básicos. Computação eletrônica: Gurvan Huiban

3. Linguagem de Programação C

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.

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

1/27. Registos (Estruturas - struct)

Aula 9 Oficina de Programação Matrizes. Profa. Elaine Faria UFU

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto

ESTRUTURAS COMPOSTAS. REGISTROS (Struct) Introdução à Ciência da Computação I Simone Senger Souza

Introdução à Programação

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

Linguagem de Programação

Programação I Matrizes e Strings. Prof. Carlos Alberto

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Aula 25: Alocação Dinâmica

Aula 10 Oficina de Programação Matrizes. Profa. Elaine Faria UFU

ESTRUTURAS COMPOSTAS. REGISTROS (Struct) Introdução à Ciência da Computação I Simone Senger Souza

Disciplina de Algoritmos e Programação

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

Introdução a Programação de Jogos

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

CI208 - Programação de Computadores. Aula 24: Arrays. Prof. MSc. Diego Roberto Antunes

PROGRAMAÇÃO A. Matrizes

ESTRUTURAS COMPOSTAS REGISTRO. Slides de autoria de Rosely Sanches e Simone Senger de Souza

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

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

3. Linguagem de Programação C

TÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados

Estruturas de Condição, Iteração, Arrays e Enumareção

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Módulo 8 Tipos Estruturados

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.

Programação Estruturada

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

ALOCAÇÃO DINÂMICA DE MEMÓRIA

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

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

Computação eletrônica:

Laboratório de Introdução à Ciência da Computação I

Estrutura de Programas e Tipos de Dados Simples

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Manipulação de arquivos

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

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

Linguagem C: Introdução

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

Linguagem de Programação

Fundamentos de Programação

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Estruturas II UFOP 1/35

Vetores e matrizes. MCTA028 Programação Estruturada. Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Linguagem C: agregados heterogêneos, arquivos binários, recursividade. Prof. Críston Algoritmos e Programação

Estrutura de Dados. Struct (Registro) Lais Farias Alves

Introdução à Computação

Vetores. e o programa deverá ler os valores separadamente:

Estrutura de Dados (DPADF 0056)

Modularidade - Funções e Procedimentos

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos Prof. Renato Pimentel. Computação

Disciplina de Algoritmos e Programação

Algoritmos e Estruturas de dados

Curso de C. Estruturas: Structs e Unions. 14/4/ :16 Arnaldo V. Moura, Daniel F. Ferber 1

A Linguagem C. A forma de um programa em C

Variáveis Compostas. Vanessa Braganholo

Transcrição:

Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: tipos de dados definidos pelo programador: struct union enum typedef Prof. Renato Pimentel 1 Introdução Tipos de variáveis vistos até agora: Tipos básicos: char, int, float, double; Tipos compostos homogêneos (arrays). 2 Prof. Renato Pimentel 1

Introdução Tipos de variáveis vistos até agora: Tipos básicos: char, int, float, double; Tipos compostos homogêneos (arrays). Linguagem C permite que o programador defina novos tipos de dados a partir dos tipos básicos: 1.Estruturas ou registros (comando struct); 2.Uniões (comando union); 3.Enumerações (comando enum); 4.Renomear tipos existentes (comando typedef). 3 4 Prof. Renato Pimentel 2

Arrays são estruturas de dados homogêneas: armazenam dados de um único tipo. Podem ocorrer situações em que precisamos agrupar dados de tipos diferentes: Exemplo: cadastro de folha de pagamento: nome (string) CPF (int) remuneração (float) etc. Solução: criar um novo tipo de dado para acomodar o conjunto destas informações struct (estrutura ou registro). 5 Cada estrutura ou registro representa uma variável que contém variáveis; Tais variáveis são chamadas de campos da estrutura; Esses campos representam informações que, dentro de um determinado contexto, fazem sentido se agrupadas. É possível comparar uma estrutura com uma ficha cadastral, que possui todos os dados sobre uma determinada entidade: Registro de alunos (nome, matrícula, idade, aproveitamento, etc.) Registro de pacientes (nome, endereço, histórico de doenças, etc.) 6 Prof. Renato Pimentel 3

Forma geral da declaração de uma estrutura: struct nome_do_tipo_da_estrutura { tipo1 campo1; tipo2 campo2;... tipon campon; }; 7 Prof. Renato Pimentel 4

Exemplo: struct cadastro { int numero; char nome[40]; int idade; char endereco[80]; }; Campos da estrutura são definidos como visto para variáveis: Cada nome deve ser diferente de outro; Porém, estruturas diferentes podem ter o mesmo nome! 9 2 estruturas diferentes: struct cadastro { int numero; char nome[40]; int idade; char endereco[80]; }; struct aluno { int matricula; char nome[40]; float nota1, nota2, nota3; }; Campos da estrutura são definidos como visto para variáveis: Cada nome deve ser diferente de outro; Porém, estruturas diferentes podem ter o mesmo nome! 10 Prof. Renato Pimentel 5

Declarando uma variável do tipo da estrutura: struct cadastro { }; int numero; char nome[40]; int idade; char endereco[80]; struct cadastro c; Também poderíamos ter declarado a variável c diretamente na criação da struct: struct cadastro { } c; int numero; char nome[40]; int idade; char endereco[80]; Note o uso do ; após o comando struct em ambos os casos!!! 11 Acesso aos campos da estrutura:. Exemplo: Comandos de atribuição para os campos 12 Prof. Renato Pimentel 6

Acesso aos campos da estrutura:. Exemplo: Comandos de leitura para os campos 13 Inicialização de estruturas Similar ao visto para arrays Ex.: struct cadastro c = { Carlos, 18, Av. Brasil, 451}; Array de estruturas Ex.: cadastro de 100 clientes: struct cadastro c[100]; Exemplos de utilização: gets(c[i].nome); c[10].rua = c[20].rua; //. depois de []!!! etc. 14 Prof. Renato Pimentel 7

Atribuição: = Copia dados dos campos de uma variável struct para outra; Atenção: Ambas devem ser do mesmo tipo! struct cadastro c[100], d; struct cadastro2 e; //outro tipo c[50]=c[51]; // copia dados de c[51] p/ c[50] d=c[0]; // copia dados de c[0] para d e=d; // ERRO!!! Estruturas de tipos diferentes 15 Aninhamento de estruturas: campos dentro de uma estrutura podem ser de tipos diferentes dos básicos: por exemplo, outra estrutura!! Exemplo: struct endereco { }; char rua[50]; int numero; struct cadastro{ } c; char nome[50]; int idade; struct endereco ender; // ender é do tipo endereco gets(c.ender.rua); // exemplo de uso 16 Prof. Renato Pimentel 8

Uniões: comando union 17 Uniões: comando union Como estrutura, representa uma variável que contém variáveis; Declarada da mesma maneira que uma estrutura. Porém, na união, apenas é alocado espaço para o campo que ocupa mais memória! Essa memória é compartilhada com os demais! Economia! Apenas um campo pode ser acessado de cada vez; Em structs, memória suficiente para todos os campos é reservada para uso dos mesmos! union: usar quando houver variáveis que não serão usadas simultaneamente! 18 Prof. Renato Pimentel 9

Uniões: comando union Forma geral da declaração de uma união: union nome_do_tipo_da_uniao { tipo1 campo1; tipo2 campo2;... tipon campon; }; 19 Uniões: comando union Como em uma união, a memória é compartilhada entre os campos, a alteração de um afeta os demais: Saída: x = 1545 c = 9 c = 69 x = 1605 20 Prof. Renato Pimentel 10

Enumerações: comando enum 21 Enumerações: comando enum Ideia: criar um tipo de dado que contenha várias constantes. Cada variável enum somente poderá assumir um dos valores criados na declaração do tipo. 22 Prof. Renato Pimentel 11

Enumerações: comando enum Forma geral da declaração de uma enumeração: enum nome_enum { lista_de_identificadores}; A lista_de_identificadores é uma lista de palavras separadas por vírgulas, onde cada identificador deve ser criado seguindo as regras vistas para nomes de variáveis. Exemplo: enum semana {Domingo, Segunda, Terca, Quarta, Quinta, Sexta, Sabado}; 23 Enumerações: comando enum Exemplo: Neste exemplo, a saída será: Domingo = 0 s1 = 1 s2 = 2 s3 = 6 Isto porque, numa enumeração, é atribuído o valor inteiro 0 à primeira palavra, o valor 1 à segunda e assim por diante. 24 Prof. Renato Pimentel 12

Enumerações: comando enum É possível alterar uma constante, igualando-a a um dado valor. A subsequente, caso exista, terá o valor da constante, acrescido de 1, e assim por diante. Exemplo: enum semana {Domingo = 1, Segunda, Terca, Quarta = 7, Quinta, Sexta, Sabado}; Neste caso, temos que: Domingo = 1 Quinta = 8 Segunda = 2 Sexta = 9 Terca = 3 Sabado = 10 Quarta = 7 25 Renomeando tipos existentes: comando typedef 26 Prof. Renato Pimentel 13

Renomeando tipos existentes: comando typedef Ideia: programador pode definir seus próprios tipos com base em tipos existentes. Na verdade, são criados apelidos ou sinônimos para os tipos de dados básicos ou definidos pelo usuário (ex.: via struct) 27 Renomeando tipos existentes: comando typedef Forma geral do comando typedef: typedef tipo_existente novo_nome; Exemplo: typedef int inteiro; int x = 10; inteiro y = 20; y = y + x; // y = 30 28 Prof. Renato Pimentel 14

Renomeando tipos existentes: comando typedef Exemplo: struct cadastro { }; int numero; char nome[40]; int idade; char endereco[80]; typedef struct cadastro cad; cad c; // mais prático que escrever struct cadastro c; 29 Renomeando tipos existentes: comando typedef Podemos ainda combinar o comando typedef com a declaração de um tipo definido pelo usuário. Retomando o exemplo anterior: typedef struct cadastro { } cad; int numero; char nome[40]; int idade; char endereco[80]; cad c; // mais prático que escrever struct cadastro c; 30 Prof. Renato Pimentel 15

Renomeando tipos existentes: comando typedef Note que estamos associando um novo nome à estrutura, portanto podemos omitir o nome da mesma: typedef struct { } cad; int numero; char nome[40]; int idade; char endereco[80]; cad c; // mais prático que escrever struct cadastro c; 31 Exercícios 1. Crie uma estrutura para representar as coordenadas de um ponto qualquer (x,y) no espaço cartesiano bidimensional. A seguir, leia do teclado as coordenadas x e y de dois pontos, e calcule a distância entre ambos. 2. Crie uma estrutura para um retângulo, que contenha as coordenadas superior esquerda e inferior direita do mesmo, dadas pela estrutura de ponto do exercício anterior. A seguir, leia as coordenadas de ambos os pontos que definem um retângulo, e calcule a área e o perímetro do mesmo. 32 Prof. Renato Pimentel 16

Exercícios 3. Crie uma enumeração que represente os meses do ano. A seguir, leia um valor inteiro e exiba o nome do mês correspondente e quantos dias o mesmo possui. 4. Crie uma união contendo dois tipos básicos diferentes. Crie um programa que inicialize um dos campos desta união e exiba o dado do outro campo. 33 Referências BACKES, A. Linguagem C: completa e descomplicada. Rio de Janeiro: Elsevier, 2013. PAIVA, J. G. S. Notas de aula de algoritmos e programação de computadores. 34 Prof. Renato Pimentel 17