Fundamentos de Programação

Documentos relacionados
Algoritmos e Programação

Técnicas de Programação: ESTRUTURAS, UNIÕES E TIPOS DEE UFPB

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Variáveis e Comandos de Atribuição

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Algoritmo e Técnica de Programação - Linguagem C

Fundamentos de Programação

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

Tipo de Dados em Linguagem C

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

O COMPUTADOR. Introdução à Computação

Programação: Tipos, Variáveis e Expressões

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Estrutura de Dados Básica

Programação Estruturada I

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 4

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

Trabalho 3: Agenda de Tarefas

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).

INF 1007 Programação II

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Algoritmos e Programação Estruturada

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Module Introduction. Programação. Cap. 10 Estruturas (Structs)

Introdução a Computação

Registros. Técnicas de Programação. Rafael Silva Guimarães

Linguagem de Programação I

Implementando uma Classe e Criando Objetos a partir dela

Introdução à Programação

Tipos de Dados Simples

Listas (Parte 2) Túlio Toffolo BCC202 Aula 10 Algoritmos e Estruturas de Dados I

Programando em C++ Histórico da Linguagem C

2. Constantes e Variáveis

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

LINGUAGEM C. Estrutura básica de um programa

Elementos da Linguagem C#

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos

Gerência do Sistema de Arquivos. Adão de Melo Neto

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Programação Orientada a Objetos C++

Técnicas de Programação I

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Filas: conceitos e implementações

INTRODUÇÃO À LINGUAGEM C++

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

INF 1005 Programação I

Programação de Computadores I. Linguagem C Arquivos

Manipulação de Arquivos

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

INF 1007 Programação II

Linguagem de Programação

Tabela ASCII de caracteres de controle

Fundamentos de Programação

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

O que é um algoritmo? O que é um programa? Algoritmos. Programas. Aula 1 Tipo Abstrato de Dados

Computação II Orientação a Objetos

AULA 1: PARADIGMAS DE PROGRAMAÇÃO

Revisão Linguagem C Parte 1

Universidade do Algarve Faculdade de Ciências e Tecnologia Área Departamental de Engenharia Electrónica e Computação

MC-102 Algoritmos e Programação de Computadores IC-UNICAMP. Aula 21 - Registros. Por: Luís Augusto Angelotti Meira (Sala IC-71) 1S2005

Linguagens de Programação I

Hashing (Tabela de Dispersão)

Tipo Abstrato de Dados

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

Linguagens de Programação

Linguagem de Programação I. Orientação a Objetos em Java

Representação de Dados Arrays e Structs

INF 1005 Programação I

Variáveis e Operadores em C

INF 1007 Programação II

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Meta-Programação com. Julia Lima. Agosto 2010

Resumo da Introdução de Prática de Programação com C. A Linguagem C

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

MC-102 Algoritmos e Programação de Computadores

Curso de Linguagem C

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

Estruturas compostas

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

GERADOR DE DOCUMENTAÇÃO PARA LINGUAGEM C, UTILIZANDO TEMPLATES. Acadêmico: Vilmar Orsi Orientadora: Joyce Martins

Introdução à Programação com Classes em C++

Curso de C. Memória Dinâmica 17/05/ :33 1

3. Linguagem de Programação C

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

Definição de Programas de Computadores e Linguagem de Programação de Comutadores

Convertendo Algoritmos para a Linguagem C

Introdução à Linguagem C

Introdução a POO. Introdução a Linguagem C++ e POO

Árvores B* Letícia Rodrigues Bueno

ALGORITMOS E PROGRAMAÇÃO PARA COMPUTADORES II

Estruturas de Dados Aula 15: Árvores 17/05/2011

Unidade 5: Sistemas de Representação

Transcrição:

Fundamentos de Programação CP41F Aula 38 Prof. Daniel Cavalcanti Jeronymo Declaração de tipos (typedef). Tipos enumerados (enum). Registros (struct). Uniões (union). Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia de Computação 1º Período 2015.2 1/24

Declaração de tipos (typedef). Plano de Aula Tipos enumerados (enum). Registros (struct). Uniões (union). 2/24

Definição de tipos pelo usuário Declaração de tipos Palavra chave typedef Sintaxe: typedef velho_tipo novo_tipo; 3/24

Exemplo Declaração de tipos typedef unsigned int NotaAluno; typedef char NomeAluno[20]; NotaAluno A1 = 0; NomeAluno fulano = "Michael Jah Elvis"; printf("%s: %d", fulano, A1); 4/24

Vantagens Declaração de tipos Torna o código mais portável Reduz a verbosidade do código Desvantagem Simplificação excessiva leva a obfuscação 5/24

Define uma lista de nomes valorados Tipos enumerados Sintaxe: enum tag }; nome1, nome2,... enum tag variavel = nome1; Em C, tags são diferentes de nomes. Neste exemplo a seguinte declaração é válida: enum tag tag = nome1; Tags são utilizadas em: enum, struct e union. 6/24

Valores podem ser definidos manualmente Tipos enumerados Sintaxe: enum tag }; nome1=10, nome2,... nome1 = 10 nome2 = 11 enum tag variavel = nome1; 7/24

Valores podem ser definidos manualmente Tipos enumerados Sintaxe: enum tag }; nome1=10, nome2=20,... nome1 = 10 nome2 = 20 enum tag variavel = nome1; 8/24

Exemplo definir um conjunto de cores Utilizando definições: Tipos enumerados #define BRANCO 0 #define AZUL 1 int cor = AZUL; Utilizando enumeração: enum Cores BRANCO, AZUL }; enum Cores cor = AZUL; 9/24

Estrutura fundamental de dado Registros Coleção heterogênea de valores Valores armazenados em campos Nomes são associados aos campos 10/24

Definição de um registro Registros Sintaxe struct tag }; struct tag variavel; declaração de campo 1; declaração de campo 2;... 11/24

Exemplo Definindo uma estrutura para registrar um aluno Registros struct aluno char nome[20]; int nota; }; struct aluno michael = "Michael Jah Elvis", 0}; printf("%s: %d\n", michael.nome, michael.nota); nome[20] struct aluno nota 12/24

Exemplo Acesso por ponteiros Registros struct aluno char nome[20]; int nota; }; struct aluno * michael = malloc(sizeof(struct aluno)); strcpy(michael->nome, "Michael Jah Elvis"); michael->nota = 0; printf("%s: %d\n", michael->nome, michael->nota); nome[20] struct aluno nota 13/24

Cuidado! Registros O tamanho de uma estrutura é alinhado na memória Verifique o sizeof da estrutura anterior, altere o valor de nome para 19 caracteres e verifique novamente 14/24

Exemplo Criar e acessar uma estrutura para carros Registros struct Carro unsigned int ano; const char * modelo; void (*imprime)(struct Carro); }; 15/24

Exemplo Criar e acessar uma estrutura para carros (funções para exibir dados) Registros void imprimetotal(struct Carro carro) printf("ano: %u\nmodelo: %s\n", carro.ano, carro.modelo); } void imprimemodelo(struct Carro carro) printf("modelo: %s\n", carro.modelo); } 16/24

Exemplo Criar e acessar uma estrutura para carros (criando um carro) Registros struct Carro novocarro(unsigned int ano, const char *modelo) struct Carro carro; carro.ano = ano; carro.modelo = modelo; carro.imprime = imprimetotal; return carro; } 17/24

Exemplo Criar e acessar uma estrutura para carros (juntando tudo!) Registros int main() struct Carro meucarro = novocarro(1990, "Opalao"); meucarro.imprime(meucarro); } return 0; 18/24

Passagem de estruturas como parâmetros para funções Registros Por valor Copia a estrutura inteira, consome mais espaço na pilha, mais lento Por referência Copia o ponteiro para a estrutura, consome menos espaço na pilha e mais rápido 19/24

Permitem tratar um bloco de memória como diferentes tipos de dados Uniões Sintaxe union tag declaração de campo 1; declaração de campo 2;... }; union tag uma_uniao; 20/24

Exemplo Acessar os bits individuais de um byte union byte unsigned char valor; struct unsigned int b0 : 1; unsigned int b1 : 1; unsigned int b2 : 1; unsigned int b3 : 1; unsigned int b4 : 1; unsigned int b5 : 1; unsigned int b6 : 1; unsigned int b7 : 1; } bits; }; union byte exemplo; exemplo.valor = 0xF0; Campo de bits (bit field) Cuidado ao usar e assumir que é mais rápido ou consome menos memória. Não é padronizado, depende da implementação do compilador. Uniões printf("%d %d\n", exemplo.bits.b0, exemplo.bits.b7); 21/24

Como utilizar typedefs para reduzir declarações de estruturas, enumerações ou uniões? Prática 22/24

Crie uma biblioteca consistindo de ponto.h e ponto.c Prática Defina uma estrutura Ponto que represente pontos no plano Cartesiano. Escreva funções para medir a distância entre dois pontos e comparar se dois pontos são iguais. 23/24

Crie uma biblioteca consistindo de retangulo.h e retangulo.c Prática Defina uma estrutura Retangulo utilizando a definição anterior de Ponto Assuma que o retângulo definido nessa biblioteca seja paralelo aos eixos. Escreva funções para: computar a área do retângulo, determinar se um ponto está localizado dentro de um retângulo e determinar se dois retângulos estão separados ou sobrepostos. 24/24