Programação científica C++



Documentos relacionados
Estruturas (registros)

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

Aula 26: Estruturas heterogêneas

Aula 1 Tipo Abstrato de Dados

Técnicas de Programação I

Estruturas II UFOP 1/1

Componentes da linguagem C++

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

Introdução a Java. Hélder Nunes

Orientação a Objetos

Lista de Exercícios da 3ª Unidade. ( Ponteiros, Alocação dinâmica, Arquivos, Estruturas de Dados)

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

Aula 1. // exemplo1.cpp /* Incluímos a biblioteca C++ padrão de entrada e saída */ #include <iostream>

INTRODUÇÃO À LINGUAGEM C++

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

ESTRUTURA CONDICIONAL

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C / C++

INF 1007 Programação II

Linguagem C. Novos tipos de dados

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++.

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

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

INF 1005 Programação I

Estruturas (Registros)

INF 1005 Programação I

MC-102 Aula 19 Registros

Capítulo 2: Introdução à Linguagem C

Aula 06 - Funções. O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros

Trabalho 3: Agenda de Tarefas

Unidade IV: Ponteiros, Referências e Arrays

Prof. Jhonatan Fernando

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

Computação II Orientação a Objetos

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

3 Classes e instanciação de objectos (em Java)

JSP - ORIENTADO A OBJETOS

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

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

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

Algoritmos e Programação

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

AULA 12 FUNÇÕES Disciplina: Algoritmos e POO Professora: Alba Lopes alba.lopes@ifrn.edu.br

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Busca. Pesquisa sequencial

LISTA DE EXERCÍCIOS: 3ª Unidade. Registros e Arquivos

Algoritmos e Programação Estruturada

Conceitos básicos da linguagem C

Olimpíadas de Informática

DEFINIÇÃO DE MÉTODOS

Disciplina de Banco de Dados Introdução

Fundamentos de Programação

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Capítulo 9. Vetores e Matrizes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

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

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

Persistência de Dados

Algoritmos e Estruturas de Dados I

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Ficheiros binários 1. Ficheiros binários

Programação de Computadores I. Linguagem C Vetores

Introdução à Programação

Estruturas (Registros)

7. Estrutura de Decisão

Introdução à Ciência da Computação. Registros em C. Sumário. Registros. Agradecimentos. Parte dos slides a seguir são adaptações dos originais:

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Tipo Abstrato de Dados

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição

ESTRUTURA DE UM PROGRAMA EM C++ Estrutura de um Programa em C++

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

Aula 25: Alocação Dinâmica

9 Comandos condicionais

Programação científica C++

Programação por Objectos. Java

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

Programação científica C++

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

3/19/2014. Compilador DEV C++ ENGENHARIAS LÓGICA DE PROGRAMAÇÃO Henry Lubanco/ Joelio Piraciaba

Manipulação de Arquivos

Edwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C

Curso de C para Engenharias

Neste método o cálculo é efetuado de maneira exponencial, ou seja, juros são computados sobre os juros anteriormente calculados.

EXEMPLO DE COMO FAZER UMA MALA DIRETA

Composição de classes

Introdução a Algoritmos Parte 07

Orientação a Objetos com Java

Programação Orientada a Objeto

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE RORAIMA DIRETORIA DE TECNOLOGIA DA INFORMAÇÃO SIGRH - FREQUÊNCIA

Algoritmos x Programação. Primeiros Passos na Linguagem C/C++ Como traduzir um algoritmo? Algoritmo original. Prof. Marcelo Cohen flash@inf

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

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).

Fundamentos de Programação II. Introdução à linguagem de programação C++

Fig.1: Ilustração de Estrutura de Dados Fonte: Internet

Roteiro do Programa e Entrada/Saída

INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++

PROGRAMANDO EM C# ORIENTADO A OBJETOS

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Introdução à Programação Bacharelado em Sistemas de Informação 3ª Lista de Exercícios - Solução Procedimentos e Funções

Transcrição:

Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 9

Tipos Estruturados Definição de novos tipos com struct Elementos do struct Exemplos Exercícios

Motivação Muitas vezes precisamos agrupar informações de tipos diferentes sob um mesmo nome.

Tipos Estruturados ou Estruturas de Dados Heterogêneas Uma estrutura (struct) ou registro em C++ é uma coleção de um ou mais valores (possivelmente de tipos diferentes), agrupados sob um único nome. Estruturas constituem um recurso importante para organizar os dados utilizados por um programa graças à possibilidade de tratar um grupo de valores como uma única variável. Uma estrutura é um tipo de dado cujo formato é definido pelo programador.

Definição de tipos estrutura Elementos individuais de uma estrutura são chamados membros; Membros podem ter tipos diferentes (primitivo, matriz ou struct); O nome de uma estrutura agrega vários membros, enquanto os membros, individualmente, devem possuir identificadores únicos; Como definir um tipo estrutura?

Definição de um tipo estrutura Sintaxe: struct <Nome da Estrutura>{ <Tipo> <Identificadores>; <Tipo> <Identificadores>;... } ; Cada identificador define um membro de uma estrutura Exemplo: struct Data { int dia; int mes; int ano; } ; A estrutura Data possui 3 membros: dia, mês e ano

Exemplo de estrutura struct contabancaria{ char Nome[15]; int ContaNo[10]; double saldo; Data Niver; A estrutura contabancaria tem uma estrutura simples, dois vetores e um tipo primitivo como membros struct Estudante{ char Nome[15]; int Id; char Curso[20]; char sexo; A estrutura Estudante tem 4 membros

Declarando variáveis do tipo estrutura Sintaxe: <Nome da Estrutura> <Lista de Identificadores>; Exemplo: Estudante std1, std2; std1 Nome Id Sexo Nome Id Sexo std2 Curso Curso

Acesso aos elementos Os membros de um tipo estrutura são acessados com a utilização do operador ponto(.): std1 <variavel_struct>.<nome_membro>; Exemplo: std1.id = 12345; std1.sexo = 'M'; strcpy(std1.nome, "Chan Tai Man"); strcpy(std1.curso, "COMP"); cout << Estamos falando com o(a): "; switch (std1.sexo){ case 'F': cout << Sra. "; break; case 'M': cout << Sr. "; break; } cout << std1.nome << endl; Nome Id Sexo Curso Chan Tai Man 12345 M COMP

Exemplo para: 1-Definir tipo struct; (1) 2- Declarar variável; (2) (3) 3- Usar variável;

Exercício 1. Distância entre pontos: Construa um algoritmo que, tendo como dados de entrada dois pontos quaisquer no plano, P(x1,y1) e P(x2,y2), escreva a distância entre eles. A fórmula que efetua tal cálculo é: d=sqrt((x2-x1)²+(y2-y1)²).

Estruturas aninhadas Exemplos: struct ponto{ double x, y; struct linha{ ponto p1, p2; struct triangulo{ ponto p1, p2, p3; triangulo T; ponto P; linha L;

Estruturas aninhadas struct linha{ ponto p1, p2; linha L; linha p1 p2 x y x y

Estruturas aninhadas Utilizando as estruturas anteriores: 1. Declare variáveis para representar cada uma das situações da figura ao lado, i. e., ponto, linha, triangulo; 2. Atribua os valores constantes no gráfico às variáveis criadas no item 1; (2, 7) (4, 11) (6, 5) ((8, 3) (10, 9) (2, 0)

Estruturas aninhadas ponto P; linha L; triangulo T; P.x = 4; P.y = 11; L.p1.x = 2; L.p1.y = 7; L.p2.x = 10; L.p2.y = 9; (2, 7) (4, 11) (6, 5) (10, 9) T.p1.x = 2; T.p1.y = 0; T.p2.x = 6; T.p2.y = 5; T.p3.x = 8; T.p3.y = 3; (2, 0) ((8, 3)

(4, 11) (10, 9) (2, 7) (6, 5) ((8, 3) (2, 0)

Exercício 2. Controle de Estacionamento: a) Crie uma estrutura chamada HORAIO, contendo três membros inteiros: hora, min, seg. b) Crie uma estrutura chamada CARRO para armazenar dados dos veículos de um estacionamento. Essa estrutura deve ser capaz de armazenar a placa de um carro, o horário de entrada e o horário de saída do mesmo no estacionamento. Utilize a estrutura do item anterior para armazenar os horários. c) Faça um programa que crie uma variável do tipo CARRO, leia do usuário a placa de um veículo e os horários de entrada e saída do mesmo em um estacionamento. Em seguida armazene os valores lidos na variável criada.

Vetor de estruturas Um vetor de tipos primitivos: um tipo de dado em cada posição 0 1 2 98 99 Um vetor de estrutura: pode conter diferentes tipos de dados em cada posição do vetor 0 1 2 98 99

Vetor de estruturas Exemplo: Estudante Classe[100]; strcpy(classe[98].nome, "Chan Tai Man"); Classe[98].Id = 12345; strcpy(classe[98].curso, "COMP"); Class[98].Sexo = 'M'; Class[0] = Class[98]; Chan Tai Man 12345 M COMP... 0 1 2 98 99 19

Vetor como membro de estrutura Exemplo: struct quadrado{ ponto vertex[4]; quadrado Sq; (4, 3) (10, 3) (4, 1) (10, 1) Assinalar valores parasq usando os dados do gráfico. Ver código a seguir. x y x y x y x y

Criando um sistema para biblioteca Defina o tipo livro, utilizando a palavra reservada struct, contendo as seguintes informações: código, título e número de páginas

Sistema biblioteca struct livro { int id; char titulo[50]; int numero_de_paginas; int main(void) { livro biblioteca[10]; for (int i=0; i<10; i++) { biblioteca[i].id = i; cout<<"dados do livro ID:<< i <<endl; cout<< -Nome: ; gets(biblioteca[i].titulo); cout<< -Numero de Paginas: ; cin>>biblioteca[i].numero_de_paginas; } } for (int i=0; i<10; i++) { cout<<"dados do livro ID: << i <<endl; cout<< -Nome: ; puts(biblioteca[i].titulo); cout<< -Numero de Paginas: ; cout<<biblioteca[i].numero_de_paginas; cout<< \n------------------------\n ; }

Sistema biblioteca Como organizar a biblioteca com estantes, as estantes com prateleiras e as prateleiras com livros?

Sistema biblioteca struct livro { int id; char titulo[50]; int numero_de_paginas; struct estante { livro prateleiras[5][10]; struct biblioteca{ estante estantes[10];

int main(void) { biblioteca zilamamede; int i; for (i=0; i<10; i++) { livro l; l.id = i; cout << "Dados do livro ID: << i ; cout << " - Nome: ; cin >> l.titulo; cout << " - Numero de Paginas:"; cin >> l.numero_de_paginas; zilamamede.estantes[0].prateleiras[0][i] = l; } for (i=0; i<10; i++) { livro l; l = zilamamede.estantes[0].prateleiras[0][i]; cout << "Dados do livro ID: << i; cout << " - Nome: << l.titulo; cout << " - Numero de Paginas: << l.numero_de_paginas; cout << \n------------------------\n"; } return 0;

Exercício 3. Agenda telefônica: Construir um sistema em que o usuário possa cadastrar, alterar, remover, listar e procurar contatos.

Inicialização de estruturas struct Ponto{ double x,y; Ponto origem = {0,0 struct Data{ int dia; char mes[10]; int ano; Data natal = {25, Dezembro, 2011 A inicialização de estruturas é semelhante à inicialização de matrizes.

Inicialização de vetores de estruturas struct Ponto{ double x,y; Ponto trapezio[] = { {5,5}, {5,10}, {10,5}, {10,13}

Inicialização de estruturas aninhadas struct Ponto{ double x,y; struct Linha{ Ponto p1, p2; Linha l = {{1.0,2,0}, {3.5,4.8} struct Data{ int dia; char mes[10]; int ano; struct Pessoa{ char nome[50]; Data nasc; Pessoa chico = { Francisco, {10, Maio, 1970}

Atribuições entre estruturas Data natal = {25, Dezembro, 2011 Data feriado = natal; A informação contida em uma variável de uma estrutura pode ser atribuída a outra variável. O bloco de memória associado à variável original é todo (todos os campos) copiado para a variável destino. A atribuição só é permitida entre variáveis de mesmo tipo.

Passando estruturas para funções As estruturas podem ser passadas para funções da mesma forma que variáveis simples. A passagem pode ser feita por valor ou referência.

Passando estruturas por valor struct Venda{ int pecas; float preco; void listavenda(venda, Venda); int main(){ Venda A, B; cout << Venda A\n ; cout << Numero de pecas: ; cin >> A.pecas; cout << Preco: ; cin >> A.preco; cout << Venda B\n ; cout << Numero de pecas: ; cin >> B.pecas; cout << Preco: ; cin >> B.preco; void listavenda(venda X, Venda Y) { cout << VENDA TOTAL\n ; cout << Pecas: << (x.pecas+y.pecas) << endl; cout << Preco: << (x.preco+y.preco) << endl; } A chamada à função listavenda() cria novas variáveis X e Y para conter as cópias dos valores das variáveis A e B da função main(), enviadas como argumento. } listavenda(a,b); return 0;

Passando estruturas por referência struct Venda{ int pecas; float preco; void listavenda(venda&, Venda&); int main(){ Venda A, B; cout << Venda A\n ; cout << Numero de pecas: ; cin >> A.pecas; cout << Preco: ; cin >> A.preco; cout << Venda B\n ; cout << Numero de pecas: ; cin >> B.pecas; cout << Preco: ; cin >> B.preco; } listavenda(a,b); return 0; void listavenda(venda& X, Venda& Y) { cout << VENDA TOTAL\n ; cout << Pecas: << (x.pecas+y.pecas) << endl; cout << Preco: << (x.preco+y.preco) << endl; } Na passagem por referência, não há cópias de variáveis, evitandose o uso desnecessário de espaço. As variáveis X e Y de listavenda() são referências para as variáveis A e B de main().

Passando estruturas por referência struct Venda{ int pecas; float preco; void totalvendas(venda&, Venda&, Venda &); } cout << VENDA TOTAL\n ; cout<< Pecas: << T.pecas <<endl; cout<< Preco: << T.preco <<endl; return 0; int main(){ Venda A, B, T; cout << Venda A\n ; cout << Numero de pecas: ; cin >> A.pecas; cout << Preco: ; cin >> A.preco; cout << Venda B\n ; cout << Numero de pecas: ; cin >> B.pecas; cout << Preco: ; cin >> B.preco; void totalvendas(venda& X, Venda& Y, Venda& total){ total.pecas = X.pecas+Y.pecas; total.preco = x.preco+y.preco; } A variável T de main() é modificada dentro função totalvendas() através da referência total. totalvendas(a,b,t);

Funções que retornam uma estrutura struct Venda{ int pecas; float preco; void totalvendas(venda&, Venda&, Venda&); Venda novavenda(); void imprimevenda(venda&); int main(){ Venda A, B, T; A = novavenda(); B = novavenda(); totalvendas(a,b,t); return 0; } void totalvendas(venda& X, Venda& Y, Venda& total){ total.pecas = X.pecas+Y.pecas; total.preco = x.preco+y.preco; imprimevenda(total); } Venda novavenda(){ Venda nova; cout << Nova Venda\n ; cout << Numero de pecas: ; cin << nova.pecas; cout << Preco: ; cin << nova.preco; return nova; } void imprimevenda(venda& X){ cout << VENDA\n ; cout<< Pecas: << X.pecas <<endl; cout<< Preco: << X.preco <<endl; } Uma estrutura completa é retornada por novavenda() através do comando return. O conteúdo da variável nova é copiado para as variáveis A e B, membro a membro, após cada chamada à função novavenda().

Mensagem final da disciplina Programar é uma atividade que: Faz você passar várias madrugadas acordado. Faz com você passe menos tempo com os amigos. Rouba várias horas do seu tempo de lazer. Stress. Por que eu devo programar? Programar é uma ferramenta que transforma suas ideias em realidade.

Conhecimento é poder. Grandes poderes trazem grandes responsabilidades. Logo: Grandes conhecimentos trazem grandes responsabilidades. Sem a programação esse vídeo não existiria e teríamos um pedaço de papel com ideias bem bonitas. http://www.nature.com/nature/journal/v485/n7398/extref/nature11076- s5.mov