Você está na página 1de 60

Curso de Vero 2013

Aula 01

Introduo Lgica de Prograo


Professor Dr. Fbio Cappabianco
Professora Dra. Regina Coelho
Professor Dr. Tiago Oliveira

Roteiro
Apresentao do curso.
Variveis.
Constantes.
Entrada e sada padro.
Condicionais.
Repeties.
Variveis compostas.
Arquivos.
Introduo Lgica de Programao

2/60

Apresentao do curso
Objetivos:
Embasar alunos com conhecimentos de lgica de
programao e estrutura de dados.
Avaliar alunos quanto sua aptido ao curso de mestrado
em cincia da computao.

Ementa:
Lgica de programao: representao e manipulao de
dados por meio de linguagem de alto nvel.
Estrutura de dados: organizao de dados em estruturas
complexas, descrevendo suas vantagens e aplicaes.

Introduo Lgica de Programao

3/60

Apresentao do curso
Programao:
Aulas de quartas e sbados, das 8:00h s 12:00.
Muito material de leitura e exerccios para o
restante da semana...

Avaliao:
Exerccios para entrega para a prxima aula.
Prova no final do curso.

Introduo Lgica de Programao

4/60

Memria do Computador
Hierarquia
HD RAM cache registradores.
Lento rpido.
Grande pequeno.

Ponto de vista de programao


Memria!
Uso por variveis e constantes.
Ex. Armrio de academia.
Introduo Lgica de Programao

5/60

Estrutura de Programas
Conjunto de instrues para computador.
Usa linguagem de programao.
Curso: C++, sem OO.
Composta de alfabeto, gramtica e semntica.

estruturada.
Declaraes.
Execuo.

Ex. Receita de bolo.


Introduo Lgica de Programao

6/60

Estrutura de Programas
Estrutura do programa em C++:
<Declaraes>
intmain(){
<Execuo>
return(0);

}
intmain(){ marca o incio do programa.
return(0);} marca o trmino do programa.
Introduo Lgica de Programao

7/60

Variveis
Espaos de memria.
Ilustrao de armrio.
Tipo
Numricas
Enumeradas
Caracteres
Compostas

Nome
Rtulo
Introduo Lgica de Programao

8/60

Variveis Tipos Simples


Tipo

Descrio

Limites

char

Caracteres/inteiros de 8 bits

unsigned char

Inteiros no negativos de 8 bits

short

Inteiros de 16 bits

unsigned short

Inteiros no negativos de 16 bits

int

Inteiros de 32 bits

unsigned int

Inteiros no negativos de 32 bits

long long int

Inteiros de 64 bits

unsigned long long int

Inteiros no negativos de 64 bits

float

Reais de 32 bits

-110-37 a -11037 e de 110-37 a 110-37

double

Reais de 64 bits

-110-308 a -110308 e de 110-308 a 110-308

long double

Reais de 96 bits

-110-4932 a -110 4932 e de 110- 4932 a 110-4932

enum

Enumerados

Tabela ASCII / -128 a 127


0 a 255
32768 a 32767
0 a 65535
2147483648 a 2147483647
0 a 4294967295
9223372036854775808 a 9223372036854775807
0 a 18446744073709551615

Definido pelo programador

Introduo Lgica de Programao

9/60

Variveis - Declarao
Declarao:
<tipo><nome>;

Exemplos:
Declare varivel inteira de alta preciso de nome
estrelas.
Declares uma varivel que represente o peso de
uma pessoa.
Declare uma varivel que represente a cores
naturais de cabelo.
Introduo Lgica de Programao

10/60

Variveis Atribuio
Inicializao:
O que tem dentro do armrio?
Atribuio necessria!

Atribuio:
<nome>=<valor>;
= diferente da matemtica.

Exemplo:
Atribua 90.5 a uma varivel real de nome peso.
Atribua o caractere 'A' para a varivel do tipo caractere
e de nome inicial.

Introduo Lgica de Programao

11/60

Variveis Operaes
Aritmtica:
+*/%.
().
Precedncia.

Exemplo:
Declare trs variveis reais, atribua os valores iniciais
15.7 e 12.9 para duas delas, faa a diviso entre elas
e atribua o resultado para a terceira varivel.
Escreva a expresso em C++ para converter uma
temperatura de graus Celsius para Fahrenheit.

Introduo Lgica de Programao

12/60

Variveis Operaes
Converso:
Operaes entre tipos diferentes de variveis em C++ muitas
vezes requerem uma converso explcita de um tipo para outro.

Entre float e int:


No precisa de converso explcita neste caso.
int float: sem segredos.
float int: truncamento.

Exemplo:
Some duas variveis reais com valores 12.3 e 14.4 e atribua o
resultado a uma varivel inteira. Qual ser o valor atribudo no
final?

Introduo Lgica de Programao

13/60

Constantes
Semelhantes s variveis, mas so atribudas apenas
uma vez.
Declarao:
const<tipo><nome>=<valor>;

Operaes:
Mesmo modo que variveis.

Exemplo:
Escreva um trecho de programa que declare uma
constante real PI, uma varivel real de nome raio, calcule
a rea de uma circunferncia com este raio e guarde o
resultado em uma varivel real de nome area.

Introduo Lgica de Programao

14/60

Entrada e Sada Padro


Acesso aos dados pelo usurio.
Biblioteca iostream.
Declarao: #include<iostream>.
Leitura ou entrada padro: cin>><varivel>.
Escrita ou sada padro: cout<<<valor>.
Atalho: usingnamespacestd;
Tecla enter: endl.

Introduo Lgica de Programao

15/60

Entrada e Sada Padro


Exemplo: Programa que l um nmero inteiro do teclado,
guarda em uma varivel, e imprime sua diviso por 2.
#include<iostream>
usingnamespacestd;
intnumero;
intmain(){
cin>>numero;
cout<<numero/2<<endl;
return(0);

Introduo Lgica de Programao

16/60

Entrada e Sada Padro


Impresso de textos:
cout<<<texto>.

Exemplos:
Escreva um programa pea para digitar uma
temperatura em Kelvin, leia a temperatura do
teclado e imprima seu valor correspondente em
Fahrenheits.
Escreva um programa que pea para o usurio
digitar um caractere e depois imprima a frase Voc
digitou o caractere <caracteredigitado>.
Introduo Lgica de Programao

17/60

Operaes Matemticas
Biblioteca math.
Declarao: #include<math>.
Funo
sin(x)
cos(x)
tan(x)
round(x)
log10(x)
pow(x,y)
sqrt(x)
exp(x)
log(x)

Descrio
Seno de um ngulo x em radianos
Cosseno de um ngulo x em radianos
Tangente de um ngulo x em radianos
Arredonda o nmero real x para o inteiro mais prximo
Logaritmo de x na base 10
x elevado a y
Raiz quadrada de x
Exponencial de x
Logaritmo neperiano de x.

Introduo Lgica de Programao

18/60

Operaes Matemticas
Exerccios:
Escreva um programa que leia um ngulo em graus
e um raio e converta o ngulo em radianos e
calcule a rea da regio. Utilize a constante PI para
a converso.
Dada uma taxa de juros, um montante inicial e um
nmero de meses digitados no teclado, escreva um
programa que calcule os juros compostos deste
montante no perodo dado.

Introduo Lgica de Programao

19/60

Instrues Condicionais
At o momento:
Programas sequencial.

H como verificar se
dado digitado est em
determinada faixa de
valores?
Ex. Dada uma idade,
verificar se maior ou
menor de 18 anos.

Sequncia de execuo
<instruo_1>
<instruo_2>
<instruo_3>
...
<instruo_i>
<instruo_i+1>
<instruo_i+2>
...
<instruo_n>

Introduo Lgica de Programao

20/60

Instrues Condicionais - if
Instruo if:

Sequncia de execuo

...
<instruo_a>

Sintaxe:
...
<instruo_a>
if(<comparao>){
<instruo_1>
<instruo_2>
...
<instruo_n>
}
<instruo_b>
...

Comparao
verdadeira

Comparao
Falsa

<instruo_1>
<instruo_2>
...
<instruo_n>
Fim da
Comparao

<instruo_b>
...

Introduo Lgica de Programao

21/60

Instrues Condicionais
Tipos de Comparaes
a==b: Verdadeiro se a igual a b.
a!=b: Verdadeiro se a diferente de b.
a<b: Verdadeiro se a menor que b.
a>b: Verdadeiro se a maior que b.
a>=b: Verdadeiro se a maior ou igual a b.
a<=b: Verdadeiro se a menor ou igual a b.
permitido comparar nmeros, caracteres e
variveis.
Introduo Lgica de Programao

22/60

Instrues Condicionais - Exemplo


#include<iostream>
usingnamespacestd;
intmain(){
intidade;
cout<<Digiteasuaidade:;
cin>>idade;
if(idade>=18){
cout<<Vocmaiordeidade.<<endl;
}
if(idade<18){
cout<<Vocmenordeidade<<endl;
}
return(0);
}

Introduo Lgica de Programao

23/60

Instrues Condicionais and, or


Mais de uma condio:
Operadores && e ||. Significam 'e' e 'ou'.
Exemplo: Verificar se uma pessoa adulta e se
ele do sexo masculino. O sexo
armazenado em uma varivel do tipo char
que contm os caracteres 'm' para masculino
ou 'f' para feminino.
if((idade>=18)&&(sexo=='m')){

}
Introduo Lgica de Programao
24/60

Instrues Condicionais if, else


...
<instruo_a>

Instruo ifelse:
Sintaxe:
...
<instruo_a>
if(<comparao>){
<instruo_i1>
...
<instruo_in>
}
else{
<instruo_j1>
...
<instruo_jn>
}
<instruo_b>
...

Verdadeira
Falsa

<instruo_i1>
...
<instruo_in>
<instruo_j1>
Fim de
...
<instruo_jn> Verdadeira

Fim de Falsa
<instruo_b>
...

Introduo Lgica de Programao

25/60

Instrues Condicionais - Exemplo


#include<iostream>
usingnamespacestd;
intmain(){
charsexo;
cout<<Digiteseusexo:;
cin>>sexo;
if(sexo=='f'){
cout<<Vocumamulher.<<endl;
}
else{
cout<<Vocumhomem.<<endl;
}
return(0);
}

Introduo Lgica de Programao

26/60

Instrues Condicionais Mltiplas


Opes
Em alguns programas nos deparamos
com mltiplas alternativas que dependem
do valor de uma varivel inteira.

if(cor_olhos==1)
cout<<"Seusolhossao
castanhos."<<endl;

#include<iostream>

if(cor_olhos==2)

usingnamespacestd;

cout<<"Seusolhossaoverdes."
<<endl;

intmain(){

if(cor_olhos==3)

intcor_olhos;

cout<<"Seusolhossaoazuis."<<
cout<<"Entrecomacor endl;
dosseusolhos(0 if(cor_olhos==4)

pretos,1castanhos,2 cout<<"Voceusalentes."<<
verdes,3azuis,4 endl;
lentes):";
if((cor_olhos<0)||
cin>>cor_olhos;
if(cor_olhos==0)

(cor_olhos>4))
cout<<"Opcaoinvalida!"<<endl;
return(0);

cout<<"Seusolhossao }
pretos."<<endl;

Introduo Lgica de Programao

27/60

Instrues Condicionais switch,


case
Comando switch-case uma alternativa mais intuitiva.
switch<varivel_inteira>{
case<valor_1>:
<instruesdacondio1>
break;
case<valor_2>:
<instruesdacondio2>
break;
...
default:
<instruesdacondiopadro>
break;
}

Introduo Lgica de Programao

28/60

Instrues Condicionais Exemplo


#include<iostream>

case2:

usingnamespacestd;

cout<<"Seusolhossaoverdes."<<
endl;

intmain(){
intcor_olhos;

break;
case3:

cout<<"Entrecomacordosseus
cout<<"Seusolhossaoazuis."<<
olhos(0pretos,1castanhos,2
endl;
verdes,3azuis,4lentes):";
cin>>cor_olhos;
switch(cor_olhos){
case0:

break;

case4:
cout<<"Voceusalentes."<<endl;
break;

cout<<"Seusolhossaopretos."
default:
<<endl;
break;
case1:

cout<<"Opcaoinvalida!"<<endl;
break;
}

cout<<"Seusolhossao
return(0);
castanhos."<<endl;
break;

Introduo Lgica de Programao

29/60

Exerccios
1. Dados trs nmeros lidos do teclado, verificar
qual deles o maior.
2. Dados os trs nmeros, imprimir na tela em
ordem crescente.
3. Escreva um programa que, dados dois
nmeros e uma operao escolhida pelo
usurio entre soma, subtrao, diviso ou
mutiplicao, imprima o resultado da operao
entre os dois nmeros.
Introduo Lgica de Programao

30/60

Repeties
Como escrever um programa que leia uma
temperatura em Kelvin do teclado, converta para
Clsius e imprima o resultado no monitor?
Como no existe temperatura negativa em Kelvin,
gostariamos de verificar se a temperatura entrada
pelo usurio vlida.
Mais que isso, gostaramos de dar a oportunidade ao
usurio de entrar com outra temperatura caso a
digitada no seja vlida.

Introduo Lgica de Programao

31/60

Repeties - do-while
Instruo do-while

...

Sintaxe:

<instruo_a>

...
<instruo_a>
do{
<instruo_1>
<instruo_2>
...
<instruo_n>
while(<comparao>);
<instruo_b>
...

<instruo_1>

Comparao
verdadeira

<instruo_2>
...
<instruo_n>

Comparao
Falsa
<instruo_b>
...

Introduo Lgica de Programao

32/60

Repeties - Exemplo
Programa que l uma temperatura vlida em Kelvin do teclado.
#include<iostream>
usingnamespacestd;
intmain(){
floatkelvin;
do{
cout<<EntrecomumatemperaturaemKelvin:;
cin>>kelvin;
if(kelvin<0.0){
cout<<Temperaturainvlida<<endl;
}
}while(kelvin<0.0);
return(0);
}

Introduo Lgica de Programao

33/60

Repeties - while
Instruo while

...

Sintaxe:

<instruo_a>

...

Comparao
verdadeira

<instruo_a>
while(<comparao>){

<instruo_1>

<instruo_1>

<instruo_2>

<instruo_2>
...
<instruo_n>
}
<instruo_b>
...

Desvio

...
<instruo_n>

Comparao
Falsa
<instruo_b>
...

Introduo Lgica de Programao

34/60

Repeties - Exemplo
Programa que calcula o fatorial de um inteiro lido do teclado.
#include<iostream>
usingnamespacestd;
intmain(){
intfat,entrada;
cout<<Entrecomumnmerointeirononegativo:;
cin>>entrada;
fat=1;
while(entrada>1){
fat=fat*entrada;
entrada=entrada1;
}
cout<<Ofatorial:<<fat<<endl;
return(0);
}

Introduo Lgica de Programao

35/60

Repeties - for
Instruo while

...

Sintaxe:

<instruo_a>

...

<instruo_i>

<instruo_a>
for(<instruo_i>;
<comparao>;
<instruo_ii>){

Comparao
verdadeira
Desvio

<instruo_1>
<instruo_2>

<instruo_1>

...

<instruo_2>

<instruo_n>

...

<instruo_ii>

<instruo_n>
}

<instruo_b>

<instruo_b>

...

Comparao
Falsa

...

Introduo Lgica de Programao

36/60

Repeties - Exemplo
Programa que l cinco nmeros positivos do teclado e imprime o maior.
#include<iostream>
usingnamespacestd;
intmain(){
intmaior=1;
intentrada;
inti;
for(i=1;i<=5;i=i+1){
cout<<"Entrecomovalordonmeropositivo"<<i<<:;
cin>>entrada;
if(maior<entrada){
maior=entrada;
}
}
cout<<"Omaiornmerodigitadofoi<<maior<<endl;
return0;
}

Introduo Lgica de Programao

37/60

Repeties while, do-while ou for


Quando utilizar um while, do-while ou for?
Depende do programa.
Se o programa tiver que executar obrigatriamente uma
vez as instrues repetidas indefinidamente, use do-while.
Caso as instrues repetidas no sejam executadas
nenhuma vez ou indefinidademente, dependendo do valor
de uma varivel, utilize while.
O for uma boa opo quando o nmero de repeties
depende do valor de uma varivel incrementada ou
decrementada a cada iterao.

Introduo Lgica de Programao

38/60

Repeties Exerccios
1. Altere o programa do fatorial para que a entrada do
usurio seja sempre um nmero no negativo.
2. Dados dois nmeros lidos do teclado, imprimir o MDC
deles.
3. Dado um nmero inteiro positivo, verificar se ele primo.
4. Faa um programa que imprima na tela a soma de n
nmeros inteiros. O nmero n tambm deve ser
informado pelo usurio. Certifique que n seja um nmero
positivo.

Introduo Lgica de Programao

39/60

Cadeias (Vetores)
Problema: armazenar as notas de 100 alunos.
100 variveis? No!
Cadeias (arrays) , ou vetores.

Sintaxe de declarao:
<tipo><varivel>[<tamanho>];
Exemplos:
intbrilho[4];
charnome[50];
floatnota[100];

Introduo Lgica de Programao

40/60

Cadeias - Acesso
Com poucas excees, os vetores normalmente so
acessados para leitura ou escrita elemento por
elemento.
Exemplos:
roda[0]=33.5;
cin>>rua[3];
if(dama[2]=='h')
cout<<pessoa[1];
Note que os ndices do vetor variam entre 0 e
<tamanho> - 1.
Introduo Lgica de Programao

41/60

Cadeias - Exemplo
#include<iostream>
using namespace std;
int main() {
int vetor[ 10 ], i;
for( i = 0; i < 10; i++ ) { // Leitura dos elementos do vetor.
cout << "Entre com o valor do elemento " << i+1 << " do vetor: ";
cin >> vetor[ i ];
}
cout << "Os valores digitados foram:" << endl;
for( i = 0; i < 10; i++ ) // Escrita dos elementos do vetor na tela.
cout << vetor[ i ] << "; ";
cout << endl;
return( 0 );
}

Introduo Lgica de Programao

42/60

Matrizes
Matrizes em C++: extenso de vetores para duas
ou mais dimenses.
Sintaxe de declarao:
<tipo> <varivel>[<tamanho_1>]
[<tamanho_2>]...[<tamanho_n>];
Exemplos:
int tabela[20][30];
float nota[50][50][50];
char nome[20][150];
Introduo Lgica de Programao

43/60

Matrizes - Exemplo
Clculo de determinante de uma matriz 2x2.
#include<iostream>
usingnamespacestd;
intmain(){
floatm[2][2],det;
inti,j;
for(i=0;i<2;i++){//Leituradoselementosdamatriz.
for(j=0;j<2;j++){
cout<<"Entrecomoelemento"<<i+1<<","<<j+1<<":";
cin>>m[i][j];
}
}
det=m[0][0]*m[1][1]m[0][1]*m[1][0];//Clculododeterminante
cout<<"Odeterminantedamatriz"<<det<<endl;
return(0);
}

Introduo Lgica de Programao

44/60

Vetores e Matrizes - Exerccios


1. Utilize vetores para calcular a mdia das notas de 50 alunos
em uma disciplinas. Os valores lidos devem ser duas notas de
prova de mesmo peso. O programa deve tambm ler e imprimir
os nomes dos alunos.
2. Escreva um programa que cadastre 50 produtos de uma loja
de departamento, lendo do teclado um cdigo de barras (tipo
longint) e o valor do produto (tipo float).
3. Leia uma matriz 2x2 do teclado, calcule a sua matriz inversa e
imprima o resultado na tela.
4. Leia uma matriz 3x3 do teclado e calcule seu determinante.

Introduo Lgica de Programao

45/60

Cadeia de Caracteres (strings)


Vetor do tipo char.
Letras, nmeros e smbolos.
Tabela ASCII.

Sintaxe de declarao:
charc[50];
Cadeias de caracteres em C++ utilizam caractere de valor 0 cmo
controle.
Tamanho deve levar em conta este caractere.
Caracteres especiais:
'\n': tecla enter; '\t' tecla tab; '\': aspas duplas;
'\\': uma barra invertida; '\'': aspas simples.

Introduo Lgica de Programao

46/60

Cadeia de Caracteres - Acesso


Acesso:
Elementos um a um, igual ao acesso de um vetor.
Tambm pode ser lido e escrito pela entrada e sada padro
em um nico comando.

Exemplo:
charnome[100];
cout<<Digiteonome:;
cin>>nome;
cout<<Onomedigitadofoi:<<nome<<
endl;

Obs.: Leitura para antes de '\n' ou tecla espao.

Introduo Lgica de Programao

47/60

Cadeia de Caracteres Biblioteca


string.h
Instrues auxiliares:
strlen(<nome_da_cadeia>);
strcat(<cadeia_destino>,<cadeia_origem>);
strcpy(<cadeia_destino>,<cadeia_origem>);
strcmp(<cadeia_1>,<cadeia_2>);

Todas elas podem ter sua operao limitada em tamanho:


strnlen(<nome_da_cadeia>,<tamanho_mximo>);
strncat(<cadeia_destino>,<cadeia_origem>,
<tamanho_mximo>);
strncpy(<cadeia_destino>,<cadeia_origem>,
<tamanho_mximo>);
strncmp(<cadeia_1>,<cadeia_2>,<tamanho_mximo>);

Introduo Lgica de Programao

48/60

Cadeia de Caracteres - Exemplo


Compara se a senha digitada igual senha armazenada no sistema.
#include<string.h>
#include<iostream>
intmain(){
charsenha_sys[30]=Segredo;
charsenha_usr[30];
intcomp;
cout<<Digiteasenha:;
cin>>senha_usr;
comp=strcmp(senha_usr,senha_sys);//Comparaasstrings.
if(comp==0)
cout<<Senhacorreta.<<endl;
else
cout<<Senhainvlida.<<endl;
return(0);
}

Introduo Lgica de Programao

49/60

Cadeia de Carcteres - Exerccios


1. Teste a funo strncasecmp da biblioteca string.h por
implementar um programa que verifica se dois nomes so iguais
independente de ser escrito com letras maisculas ou minsculas.
2. Escreva uma funo que leia o primeiro nome e o sobrenome de
uma pessoa em cadeias de caracteres separadas e junte os dois
em uma nica. Tome o devido cuidado para ter exatamente um
espao entre os nomes.
3. Escreva um programa que declare uma cadeia de caracteres de
tamanho 100 e leia diversas cadeias do teclado concatenando-as
at que o tamanho mximo permitido seja atingido.

Introduo Lgica de Programao

50/60

Registros
Com vetores, matrizes e cadeias de caracteres:
Agrupar dados do mesmo tipo.

Registros:
Agrupar dados de tipos diferentes.

Sintaxe de declarao:
struct<nome_registro>{
<tipo1><nome1>;
<tipo2><nome2>;
<tipo3><nome3>;
...
}<var1>,<var2>;

Introduo Lgica de Programao

51/60

Registro Exemplo de Declarao


structaluno{
charnome[200];
intra;
floatnota[4];
}melhor_aluno,turma[100];
structpixel{
intx,y;
floatcor[3];
}desenho[256][256];

Introduo Lgica de Programao

52/60

Registro - Acesso
Sintaxe de acesso de um campo:
<nome_varivel>.<nome_campo>

Exemplo:
...
structaluno{
charnome[200];
intra;
floatnota[4];
}melhor_aluno,turma[100];
...
melhor_aluno.nota[0]=10.0;
turma[5].ra=546678;
cin>>turma[99].nome;
melhor_aluno.ra=111111;
...

Introduo Lgica de Programao

53/60

Registro - Exemplo
#include<iostream>
intmain(){
structaluno{
charnome[200];
intra;
}aluno1,aluno2;

cout<<EntrecomoRAdo
segundoaluno:);
cin>>aluno2.ra;
cout<<Osdadosdoprimeiro
aluno:<<endl;
cout<<Nome:<<aluno1.nome<<
endl;

cout<<Entrecomonomedo cout<<RA:<<aluno1.ra<<
endl<<endl;
primeiroaluno:;
cin>>aluno1.nome;

cout<<Osdadosdosegundo
aluno:<<endl;

cout<<EntrecomoRAdo
cout<<Nome:<<aluno2.nome<<
primeiroaluno:;
cin>>aluno1.ra;

endl;

cout<<RA:<<aluno2.ra<<
cout<<Entrecomonomedo endl;

segundoaluno:;

return(0);

cin>>aluno2.nome;

Introduo Lgica de Programao

54/60

Registro - Exerccios
1. Altere o programa que contm o registro aluno, incluindo o
campo curso. Leia e imprima esta informao.
2. Escreva um registro que guarde as informaes de nmero
de marca, modelo, cor, ano de fabricao, nmero de portas
de um carro.
3. Faa um programa que permita o armazenamento dos
carros de uma concecionria. O nmero de carros informado
pelo teclado no incio do programa.
4. Faa um programa que armazene os passageiros de um
vo, incluindo seu nome, CPF, idade, sexo e um campo para
informaes adicionais, tais como doenas e dietas. O
programa deve ler e imprimir a informao de 20 passageiros.

Introduo Lgica de Programao

55/60

Arquivos
Para armazenar e recuperar dados
permanentes.
Biblioteca fstream.
#include<fstream>

Declarao de variveis para acessar arquivos:


Entrada: ifstream<nome_varivel>;
Sada: ofstream<nome_varivel>;
Entrada e sada: fstream<nome_varivel>;
Introduo Lgica de Programao

56/60

Arquivos - Acesso
Abertura de arquivo:
<varivel>.open(<nome_arquivo>);

Fechamento de arquivo:
<varivel>.close();

Leitura de dados de arquivo:


<varivel_arquivo>>><varivel_destino>;
<varivel_arquivo>.getline(<cadeia>,
<tamanho>);

Escrita de dados em um arquivo:


<varivel_arquivo><<<Dados>;

Introduo Lgica de Programao

57/60

Arquivos - Exemplo
Ler uma palavra de um arquivo e imprimir na tela.
#include<iostream>
#include<fstream>
usingnamespacestd;
intmain(){
charfname[50]=arquivo.txt;
charpalavra[200];
ifstreamarq_ent;
arq_ent.open(fname);
arq_ent>>palavra;
cout<<palavra;
arq_ent.close();
return(0);
}

Introduo Lgica de Programao

58/60

Arquivos - Exerccios
1. Escreva um programa que abra o arquivo de nome
mensagem.txt e escreva nele trs nmeros lidos do teclado.
Deve haver um espao entre cada nmero.
2. Escreva um programa que abra o arquivo de nome
mensagem.txt e escreva nele trs palavras lidas do teclado.
Deve haver um espao entre cada palavra.
3. Escreva um programa que abra o arquivo de nome
mensagem.txt e leia a primeira palavra dele em uma string.
Depois escreva o contedo da string na tela.
4. Escreva um programa que abra o arquivo de nome
mensagem.txt e leia o n-simo nmero contido nele, onde n
lido do teclado.

Introduo Lgica de Programao

59/60

Para a prxima aula


Escreva um programa que simule um terminal bancrio com as seguintes
caractersticas:
O terminal deve permitir realizar as tarefas de cadastrar cliente, apagar cliente,
saque, depsito e saldo.
O cadastro solicitar os seguintes dados do cliente: nome, RG, CPF, profisso,
renda mensal, data de nascimento e senha. No cadastro, criado tambm um
nmero de conta e o saldo do cliente de R$0,00.
Para apagar um cliente, deve ser digitado o nmero da conta.
As operaes de saque e saldo solicitam a senha do cliente.
As operaes de saque e depsito solicitam a quantia em reais.

Outros detalhes ficam a cargo da implementao.


Armazene os dados de maneira permanente e providencie uma interface
amigvel e segura, quanto verificao da senha correta.
Pode ser utilizado um cadastro de cliente com campos de tamanho fixo
para facilitar a leitura e escrita em arquivo.

Introduo Lgica de Programao

60/60

Você também pode gostar