Documentos relacionados
Programando em C++ Histórico da Linguagem C

Guia de Consulta Rápida C++ STL. Joel Saade. Novatec Editora

Aula 8- Standard Template Library. Arthur Ribacki Gabriel Portal Leonardo Chatain Luiz Fernando Scheidegger Rosália Schneider

Linguagem de Programação I

Estrutura switch if-else switch switch switch if-else-if switch switch case default break switch switch break Observações: case

Algoritmos de Pesquisa e Ordenação em Vectores

SCC-210 Algoritmos Avançados

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 11: Exercício Integrador (parte 2)

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

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

Linguagens de Programação

Biblioteca STL aplicada à Maratona de

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

Princípios de programação em Linguagem C++

Templates. Introdução. Motivação. Thiago Rosso Adams

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

Algoritmos e Técnicas de

Algoritmo Iterativo. Dilema do Martelo x Edifício. O Martelo. O Edifício 01/06/2014. Dilema das ações x declarações

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

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

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010

INFORMÁTICA E COMPUTAÇÃO CMP 1060 CONTROLE DE FLUXO ESTRUTURA CONDICIONAL 1

Aula 07. Estruturas de dados Lista, Pilha, Fila Pair, Map, Set e Bitset

Roteiro de estudos para maratona de. Autores: André Luís Tibola Guilherme Fickel

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

Universidade Federal do Espírito Santo. Programação I Tipos de Dados Básicos - C Professora: Norminda Luiza

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

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

Convertendo Algoritmos para a Linguagem C

Fundamentos de Programação Linguagem C++ Entrada e saída com arquivos

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença

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

9.1.2 Laços Controlados por Entrada: Contador

Algoritmos e Programação

CIC 110 Análise e Projeto de Algoritmos I

LINGUAGEM C. Estrutura básica de um programa

LINGUAGEM C. Um programa em linguagem C é composto dos seguintes elementos: Eis um exemplo de um programa bem simples em linguagem C:

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2008/2009

Orientação a Objetos - Programação em C++

d) Defina uma função que copia (replica) um vector de inteiros, tendo o novo vector um tamanho dado como argumento.

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

INF 1010 Estruturas de Dados Avançadas

Programação Estruturada I

INTRODUÇÃO À LINGUAGEM C++

Curso C: Funções e Macros

Laboratório de programação II

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Pesquisa Linear. Adriano J. Holanda 15/3/2016

Linguagem de Programação I

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

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

Fundamentos de Programação

Linguagem de Programação C

Tipo de Dados em Linguagem C

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

Programação: Estruturas de seleção

Introdução à linguagem C++

Tipo de Dados Abstractos: Pilha (stack)

Variáveis e Comandos de Atribuição

Manipulação de Arquivos

Aula 05: Condicionais (Parte 2)

Analise o código abaixo:

INF 1007 Programação II

Métodos Computacionais em Física

Introdução à linguagem de programação C++ Tulio Marcus R. Calixto Centro de Informática de Ribeirão Preto

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

INF 1620 P2-01/11/03 Questão 1 Nome:

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

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

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

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

Tabelas de dispersão

Transcrição:

Mar 13, 2009

Roteiro Entrada & Saída Contêineres Algoritmos Exemplos

Leitura simples #include <iostream> // cin, cout, endl int a; float b; cin >> a >> b; if (cin) cout << a << " " << b << endl; if (cin >> a >> b) cout << "leitura funcionou" << endl; if (! (cin >> a >> b) ) cout << "leitura falhou" << endl;

Lendo linhas inteiras #include <string> // string, getline() string linha; getline(cin, linha); // le uma linha inteira while (getline(cin, linha)) // linha por linha //... processa a linha Problema: cin >> a; getline(cin, linha);

Lendo linhas inteiras #include <string> // string, getline() string linha; getline(cin, linha); // le uma linha inteira while (getline(cin, linha)) // linha por linha //... processa a linha Problema: cin >> a; getline(cin, linha);

Leitura mista - versão 1 #include <stdio.h> // sscanf() int i; char c; float f; double d; unsigned u; string linha; getline(cin, linha); if ( sscanf(linha.c_str(), "%d %c %f %lf %u", &i, &c, &f, &d, &u ) == 5 ) { // ok } else { // falhou } Obs: info scanf. A string de formato de leitura é bem poderosa.

Leitura mista - versão 2 #include <strstream> // istringstream int i; char c; float f; double d; unsigned u; string linha; getline(cin, linha); istringstream is(linha); if ( is >> i >> c >> f >> d >> u ) { // ok } else { // falhou } while (is >> i) { // processa i }

Leitura mista - versão 2 #include <strstream> // istringstream int i; char c; float f; double d; unsigned u; string linha; getline(cin, linha); istringstream is(linha); if ( is >> i >> c >> f >> d >> u ) { // ok } else { // falhou } while (is >> i) { // processa i }

Leitura mista - versão 3 /* Entrada: a\n linha\n */ int a; b; char dummy; string linha; cin >> a; cin >> dummy; cin.putback(dummy); getline(cin, linha);

Impressão com separador /* v[0], v[1], v[2],..., v[n-1] */ int v[n]; const char *sep = ""; for (int i=0; i<n; ++i, sep=", ") cout << sep << v[i];

Índices de arrays arbitrários int x[20] = {... }; int *y = x+10; for (int i=-10; i<10; ++i) cout << y[i] << endl;

STL A Standard Template Library é uma biblioteca de algoritmos de estruturas de dados baseada no paradigma de programação genérica. É composta de 3 elementos-chave: Contêineres Algoritmos Iteradores

Contêineres vector<int> a; list<string> b; deque<double> c; map<string, int> d; multimap<string, int> e; set<string> f; multiset<string> g; string h; bitset<128> i;

vector vector<int> a(5, -1); // { -1, -1, -1, -1, -1 } int v[4] = {1, 2, 3, 4}; vector<int> b(v, v+4); b.push_back(7); cout << b.size() << endl; cout << b[2] << endl; // imprime 3

map map<string, int> dict; dict["um"] = 1; dict["dois"] = 2; cout << dict["um"] << endl; cout << dict["tres"] << endl;

set, multiset set<string> a; multiset<string> b; a.insert("azul"); a.insert("azul"); a.insert("verde"); b.insert("azul"); b.insert("azul"); b.insert("verde"); cout << a.size() << endl; cout << b.size() << endl; cout << a.count("azul") << endl; cout << b.count("azul") << endl;

Iteradores Um iterador é qualquer coisa que represente uma posição em um contêiner. Deve permitir percorrimento (++i, --i, i+=3, i-=2) e acesso (*i)..begin(),.end().rbegin(),.rend() istream iterator, ostream iterator ponteiros para arrays nativos.

Iteradores Um iterador é qualquer coisa que represente uma posição em um contêiner. Deve permitir percorrimento (++i, --i, i+=3, i-=2) e acesso (*i)..begin(),.end().rbegin(),.rend() istream iterator, ostream iterator ponteiros para arrays nativos.

list list<string> words; string s; while (cin >> s) words.push_back(s); list<string>::iterator i; for (i=words.begin(); i!=words.end(); ++i) cout << *i << " : " << i->length() << endl;

Algoritmos Cabeçalhos: algorithm: count, find, search, for each, lower bound, max, max element, copy, fill, merge, sort, partial sort, nth element, partition, stable sort, unique, rotate, reverse, swap ranges, next permutation, make heap, pop heap, etc. numeric: accumulate, inner product, partial sum, adjacent difference functional: less, greater, plus, multiplies, etc.

Exemplo: vector, iteradores istream_iterator<string> a(cin), b; vector<string> v(a, b); sort(v.begin(), v.end(); vector<string>::iterator novo_fim = unique(v.begin(), v.end()); v.erase(novo_fim, v.end()); copy(v.begin(), v.end(), ostream_iterator<string>(cout, " : ")); cout << endl; vector<string>::iterator x = lower_bound(v.begin(), v.end(), "p"); if (x!= v.end()) cout << *x << endl;

Exemplo: separar pares de ímpares bool iseven(int x) { return x % 2 == 0; } vector<int> v =...; vector<int>::iteartor impares = partition(v.begin(), v.end(), iseven); copy(v.begin(), impares, ostream_iterator<int>(cout, " : ")); cout << endl; copy(impares, v.end(), ostream_iterator<int>(cout, " : ")); cout << endl;

Exemplo: ordem decrescente bool maior(int a, int b) { return a > b; } vector<int> v =...; sort(v.begin(), v.end(), maior); sort(v.begin(), v.end(), greater<int>());

Exemplo: contador de freqüências string w; map<string,int> contador; while (cin >> w) contador[w]++; map<string,int>::iterator i; for (i=contador.begin(); i!=contador.end(); ++i) cout << i->first << " : " << i->second << endl;

Exemplo: comparando seqüências vector<int> a =..., b =...; if (a.size() == b.size() and equal(a.begin(), a.end(), b.begin()) cout << "sequencias iguais" << endl; else { if (a.size() > b.size()) swap(a, b); vector<int>::iterator i = mismatch(a.begin(), a.end(), b.begin()); } cout << "primeira diferenca na posicao " << distance(a.begin(), i) << endl;

Exemplo: comparando seqüências Referências: Web: Rogue Wave Standard Library (agora Apache stdcxx ), GNU libstdc++. Livro: The Programming Language