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

Documentos relacionados
Algoritmos e Programação

Linguagem de Programação

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

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

MC-102 Aula 21 Registros

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

Objetivo. Compreender a definição e dominar a implementação de ponteiros em C. Dominar a manipulação de arquivos

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.

Algoritmos e Programação

Estrutura de Dados Básica

Computação 2. Aula 5. Diego Addan Estrutura de Dados Registros (structs)

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.

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

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

Working 03 : Conceitos Básicos I

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

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

Métodos Computacionais. Tipos Estruturados

Introdução à Computação MAC0110

Laboratório de Programação II

LINGUAGEM C: ESTRUTURAS DEFINIDAS PELO

Linguagem C: Introdução

Programação: Vetores

Princípios de Desenvolvimento de Algoritmos MAC122

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

Aula 06 Introdução à Programação Matrizes

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

Introdução à Computação

Introdução a Programação de Jogos

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

Estrutura de Dados. Struct (Registro) Lais Farias Alves

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

struct <identificador> { tipo <nome_variável>; tipo <nome_variável>; : } <variáveis_estrutura>;

Linguagem C: Ponteiros. Prof. Tiago Alves de Oliveira

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

3. Linguagem de Programação C

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Linguagem C: Ponteiros. Prof. Leonardo Barreto Campos 1

4. Estruturas Fundamentais de Programação em C

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

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

LINGUAGEM DE PROGRAMAÇÃO C AULA 2. Professor: Rodrigo Rocha

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

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

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis

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

Funções em Linguagem C Parte II

Linguagem Estruturada

Tipos Abstratos de Dados. Estrutura de Dados

Linguagem C. Programação Estruturada. Estrutura de Dados Heterogêneos. Prof. Luis Nícolas de Amorim Trigo

3. Linguagem de Programação C

LINGUAGEM C: PONTEIROS

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

ECT1203 Linguagem de Programação

Linguagem de Programação

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

CURSO BÁSICO DE PROGRAMAÇÃO AULA 17. Manipulação de arquivos binários.

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

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

Linguagem C vetores. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

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

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL MODULARIZAÇÃO. Profa. Dra. Milena Guessi Margarido

Princípios de Desenvolvimento de Algoritmos MAC122

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa

LINGUAGEM C: ALOCAÇÃO DINÂMICA

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

6 Alguns conceitos e comandos em programação

Tipos Estruturados. Tipos Estruturados

Linguagem C Ponteiros

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C

Métodos Computacionais

LINGUAGEM C: ARRAY: VETORES E MATRIZES

12 - Dados Estruturados Vetores, Matrizes e Strings

Introdução à Linguagem C

Módulo 8 Tipos Estruturados

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

ANHANGUERA ESTRUTURA DE DADOS AULA 02 O QUE É ESTRUTURA DE DADOS? Prof. Thomás da Costa

PROGRAMAÇÃO A. Vetores

Slide 01 16/03/2017. Estruturas de Dados. Prof. Cleziel Franzoni da /Cleziel.

Programação científica C++

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 2

Linguagem C. André Tavares da Silva.

Variáveis e Operadores em C

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Implementação da programação modular I

C Estruturas. Section Summary. Adriano Cruz 1 de fevereiro de 2016

4 Variáveis. Unesp Campus de Guaratinguetá

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

Introdução a Linguagem C (Parte II) UFPA Sistemas de Informação. Roberto Araujo 2013

Essencialmente, um ponteiro nada mais é do que uma variável que ao invés de conter um valor, contém um endereço de memória.

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

Modularidade - Funções e Procedimentos

CCO 016 / COM 110 Fundamentos de Programação

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

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

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

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Transcrição:

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

Introdução A linguagem C/C++ permite criar tipos de dados definidos pelo usuário de cinco formas distintas: Estrutura Campo de Bits União Enumeração Tipo Genérico (typedef)

Estruturas Uma Estrutura é uma coleção de variáveis referenciadas por um único identificador As variáveis que formam uma estrutura são chamadas de membros da estrutura, elementos ou campos. A palavra chave struct informa ao compilador a criação de uma estrutura: Definição da estrutura addr addr é um especificador de tipo } Ponto Membros, elementos ou campos da estrutura e vírgula no final!

Declarando Estruturas No último slide foi mostrado uma definição de estrutura Nenhuma variável foi declarada! Para que uma variável do tipo addr seja declarada: struct addr addr_info; Este último comando defini uma variável addr_info como sendo do tipo addr que é uma estrutura.

Declarando Estruturas Também é possível se declarar estruturas logo após a sua definição:

Declarando Estruturas Caso só haja a necessidade de declaração de apenas uma única estrutura, é possível escrever: Desta forma a estrutura é definida e addr_info é declarada.

Declarando Estruturas Resumindo, a forma geral para a definição e declaração de estrutura é dada por:

Referenciando Elementos de uma Estrutura Os elementos de uma estrutura são referenciados através do operador ponto O nome da variável estrutura seguido de um ponto e o nome do campo referencia o elemento da estrutura

Matriz de Estruturas Dada uma definição de uma estrutura, pode-se declarar um variável matriz do tipo estrutura Ex: struct addr addr_info[100] É declarado uma matriz de 100 elementos, onde cada um dos elementos é uma estrutura do tipo addr. Para se acessar o campo zip do terceiro elemento devese ter: addr_info[2].zip

Passando Elementos de Estruturas para Funções Declaração da variável mike do tipo estrutura fred Passagem dos elementos de mike

Passando Estruturas Inteiras para Funções Quando uma variável do tipo estrutura é passada para uma função, toda a estrutura é passada como valor para função Qualquer alteração na estrutura no interior da função não irá alterar a estrutura! (Passagem por VALOR)

Exemplo Definição da Estrutura deve ser global para que seja vista por todo programa Declaração da Estrutura Passagem da Estrutura Passagem por valor da estrutura

Ponteiros para Estruturas C/C++ permite ponteiros para estruturas assim com permite ponteiros para qualquer outro tipo de variáveis Contudo alguns cuidados devem ser tomados!

Declarando um Ponteiro para Estrutura Da mesma forma que se declara um ponteiro para uma variável, também é possível se declarar um ponteiro para uma estrutura Basta colocar o operador * antes do identificador da variável

Usando Ponteiros para Estruturas Há duas formas básicas de usos de ponteiros para estruturas: Gerar uma chamada por referência Criação de Estruturas de Dados Com por exemplo listas encadeadas.

Usando Ponteiro para Estruturas Já foi visto que é possível passar uma estrutura para uma função! Entretanto ao se passar uma estrutura para uma função está se realizando uma passagem por valor Toda a estrutura deverá ser copiada para a pilha da função! Esta operação é muito custosa, e para evitá-la deve-se utilizar uma passagem por referência. Com a passagem por referência apenas um ponteiro é passado para a pilha da função.

Exemplo Define e declara a estrutura Atribui ao ponteiro p o endereço da estrutura person com a utilização do operador &

Acessando Elementos da Estrutura através de Ponteiros Para acessar os elementos da estrutura person através do ponteiro p é necessário a utilização do operado seta (->) Exemplo: deseja-se acessa o elemento balance

Exemplo

Introdução Já estudamos as estruturas em C/C++, onde variáveis são agrupadas sob um mesmo identificador Um dada estrutura irá ocupar uma certa quantidade de bytes em memória que são acessados todas as vezes que a estrutura é acessada Problema: Se é desejado acessar apenas um bit desses bytes...

Campo de Bit A linguagem C/C++ tem um método intrínseco para acessar um bit dentro de um byte: Campo de Bit Utilidades: Se o armazenamento é limitado: pode-se armazamar várias variáveis booleanas em um byte Transmissão codificada em bits dentro de um byte Criptografia.

Campo de Bit O campo de bit é uma estrutura que defini o tamanho dos seus elementos em bits Definição:

Campo de Bit Os elementos de um campo de bit pode ser declarado com: int unsigned signed Os elementos de comprimento de 1 bit devem ser declarados com unsigned, pois um único bit não pode ter sinal.

Exemplo Os campos de bits são comumente utilizados quando se analise a entrada de um dispositivo de hardware Por exemplo, uma porta serial poderia retornar o seguinte:

Exemplo É possível representar a informação em um byte de estado usando um campo de bit:

Exemplo É possível escrever uma rotina para trabalhar com a porta de comunicação: Para atribuir valor a um elemento basta:

Efeitos Colaterais Os Campos de Bits têm algumas restrições: Não é possível se obter o endereço de uma variável do tipo Campo de Bit; Variáveis do tipo Campo de Bit não podem ser organizadas em Matrizes; Não se pode ultrapassar os limites dos inteiros; Os Campos de Bits podem ter dependências sobre a máquina Podem funcionam de forma diferentes em máquinas diferentes.

Uniões Uma União é uma posição de memória que é compartilhada por duas ou mais variáveis diferentes, geralmente de tipos diferentes, em momentos distintos. Definição:

Exemplo Definição: Declaração: Posição na Memória:

Acesso as Uniões Deve-se utilizar tampo os operadores ponto com seta: Se a união é operada diretamente: Se a união é passada como um ponteiro:

Utilidade das Uniões As Uniões são utilizadas para conversões não comuns de tipo. Por Exemplo: Imagine que queremos trabalhar com inteiros em máquinas diferentes, onde em uma máquina um inteiro tenha 2 bytes e na outra este tenha 3 bytes.

Utilidade das Uniões Construa a União: Imagine que uma máquina (int de 2 bytes) escreve um arquivo para a outra máquina (int de 3 byte) ler, pode-se criar a função putw(union pw word, FILE *fp){ } putc( 0, fp); // escreve o primeiro byte putc(word->ch[0], fp); // escreve o segundo byte putc(word->ch[1], fp); // escreve o terceiro byte

Enumerações Um enumeração é um conjunto de constantes inteiras que especifica todos os valores legais de uma variável desse tipo pode ter Exemplo: A moeda americana

Exemplo Dada a definição e declaração do slide passado é possível ter os comandos: Em uma enumeração cada célula é um valor inteiro. Logo para: printf( %d %d, penny, dime); Saída na tela: 0 2

Enumerações Modificadas É possível atribuir valores inteiros as células de uma enumeração: Agora os valores dos símbolos são:

Typedef C/C++ permite que seja definido novos nomes aos tipos de dados já existentes utilizando a palavra chave typedef Exemplos: Balance agora significa um tipo float Agora overdraf significa um tipo balance que por sua vez é um tipo float

Typedef e Estruturas Para estruturas temos: Definição Declaração Com o uso do typedef: Definição Declaração

Exercício 1 Monte um Estrutura que seja capaz de armazenar as informações sobre um aluno Matricula Nome Idade Sexo Dada esta estrutura, faça um programa que seja capaz de criar uma matriz dessa estrutura com quantos elementos o usuário deseje, e que possa cadastrar alunos e visualizar na tela a matriz cadastrada

Exercício 2 Crie dois tipo: real e dolar. Cria um programa que realize a conversão entre as duas moedas.