Vous êtes sur la page 1sur 51

Fundamentos de Programao.

Algoritmos & Linguagem C++ (MII)


Nome:_______________________________________
Elaborado pelos Educadores Voluntrios: Luiz Claudio de Andrade Junior (luiz.junior@gec.inatel.br) Wellington Cssio Faria (wellingtonf@gec.inatel.br) Las Olmpio (lais-olimpio@hotmail.com) Revisada por: Elisa Marinho de Oliveira - Tcnica de Telecomunicaes (elisa@inatel.br)

Turma:______

Sumrio
Introduo: ............................................................................................................................. 5 O que Programao? ....................................................................................................... 5 O que um Programa e um Algoritmo? ............................................................................ 5 Captulo I ................................................................................................................................. 6 1- Linguagem de programao C++ ................................................................................. 6 2- Compilador .................................................................................................................. 6 3- Ambiente Integrado de Desenvolvimento (IDE) ......................................................... 7 4- Mtodo para a construo de algoritmos ................................................................... 8 4.1- Tipos de algoritmos ................................................................................................. 8 4.1.1- Descrio narrativa............................................................................................... 8 4.1.2- Fluxograma ........................................................................................................... 9 Exerccios de Fluxograma: ............................................................................................ 11 4.4.3- Pseudo Cdigo ou Portugal ................................................................................ 12 4.4.3- Indentao.......................................................................................................... 13 5- Tipos de Dados .......................................................................................................... 14 5.1- Numricos ............................................................................................................. 14 5.2- Lgicos ................................................................................................................... 14 5.3- Literais ou Caracteres ............................................................................................ 14 Exerccios de Pseudocdigo: ............................................................................................ 15 Captulo II .............................................................................................................................. 16 1- Converso Portugol Para C++ .................................................................................... 16 1.11.21.31.41.51.61.7Operadores Aritmticos: .................................................................................... 16 Operadores Relacionais...................................................................................... 16 Operadores Lgicos ............................................................................................ 17 Funes de Entrada de Dados ............................................................................ 18 Funes Matemticas ........................................................................................ 19 Estruturas ........................................................................................................... 20 Declarao de Variveis ..................................................................................... 21

Exerccios de funes Matemticas: ............................................................................ 20

Exerccios de Implementao C++: ............................................................................... 22 2

Captulo III ............................................................................................................................. 22 1. Estrutura Condicional em pseudocdigo .................................................................. 22 1.1- Estrutura Condicional simples ............................................................................... 22 1.2- Estrutura condicional composta. .......................................................................... 22 2. Estrutura condicional em Fluxograma....................................................................... 23 2.1- Estrutura condicional simples ............................................................................... 23 2.2- Estrutura condicional composta ........................................................................... 24 3. Estrutura condicional em C/C++ ................................................................................ 24 3.1- Estrutura condicional simples ............................................................................... 24 3.2- Estrutura condicional composta ........................................................................... 25 4. Estrutura Case............................................................................................................ 26 4.1- Comando em Pseudocdigo.................................................................................. 26 4.2- Fluxograma ............................................................................................................ 27 4.3- Comando em C/C++............................................................................................... 27 Exerccios de IF/ELSE e Switch Case em C++: ................................................................ 28 Captulo IV ............................................................................................................................ 30 1. Estrutura de Repetio em Algoritmo .......................................................................... 30 1.1- Estrutura de Repetio para nmero definido de repeties (Estrutura PARA) .. 30 1.2- Estrutura de Repetio para nmero indefinido de repeties e teste no incio (Estrutura ENQUANTO) ................................................................................................ 32 1.3 Estrutura de repetio para nmero indefinido de repeties e teste no final (Estrutura REPITA) ........................................................................................................ 34 Exerccios de Estruturas de Repetio ......................................................................... 36 Captulo V ............................................................................................................................. 38 1.11.21.31.41.5Declarao de vetor ............................................................................................... 38 Atribuindo valores ao vetor ................................................................................... 38 Preenchendo um vetor .......................................................................................... 39 Mostrando os elementos do vetor ........................................................................ 40 Vetor em C++ ......................................................................................................... 40

1.5.1- Declarao de vetor ........................................................................................... 41 1.5.2- Atribuindo valores ao vetor ............................................................................... 41 1.5.3- Preenchendo um vetor....................................................................................... 42 1.5.4- Mostrando os elementos do vetor..................................................................... 42 3

Exerccios de Vetor: ...................................................................................................... 43 Sub-Rotinas ou Funes ....................................................................................................... 44 1. Exemplo em Pseudocdigo: ......................................................................................... 44 2. Exemplo em Fluxograma: ............................................................................................. 44 3. Exemplo em C++ ........................................................................................................... 45 3.1. Como criar e utilizar uma funo?......................................................................... 45 3.2. Funes que retornam valores .................................................................................. 46 3.3. Funes com argumentos ......................................................................................... 47 4. Variveis globais e locais .............................................................................................. 48 4.1. Variveis Locais ...................................................................................................... 48 4.2. Variveis Globais ................................................................................................ 48 Exerccios de Funes: .................................................................................................. 50 Bibliografia ............................................................................................................................ 51

Introduo:
O que Programao?
Programao o processo de escrita, teste e manuteno de um programa de computador. O programa escrito em uma linguagem de programao, embora seja possvel, com alguma dificuldade, escrev-lo diretamente em linguagem de mquina. No pensei que somente os computadores pessoais (Desktop e Laptops) so computadores. Computador qualquer dispositivo eletrnico capaz de tratamento automaticamente informaes ou processamento de dados. Assumiu-se que os computadores pessoais e laptops so cones da Era da Informao; e isto o que muitas pessoas consideram como "computador". Entretanto, atualmente as formas mais comuns de computador em uso so os sistemas embarcados, pequenos dispositivos usados para controlar outros Pequeno programa na dispositivos, como robs, cmeras linguagem de digitais, brinquedos e celulares.
programao C .

O que um Programa e um Algoritmo?


Um algoritmo uma sequncia de passos para realizar uma tarefa ou resolver um problema. Em nosso dia a dia utilizamos algoritmos para realizar nossas atividades, definindo a sequncia de atividades que devemos fazer para atingir um objetivo. Um algoritmo , num certo sentido, um programa abstrato, j um programa um algoritmo concretizado. Os programas so uma coleo de algoritmos menores que combinados dando origem ao programa. Podemos considerar uma casa como exemplo, a casa um programa e o tijolo, telhado e janelas so algoritmos que constroem a casa.

Captulo I
O conceito de algoritmo frequentemente ilustrado pelo exemplo de uma receita culinria, embora muitos algoritmos sejam mais complexos. Eles podem repetir passos ou necessitar de tomadas de decises at que a tarefa seja completada. Um algoritmo no representa, necessariamente, um programa de computador, e sim os passos necessrios para realizar uma tarefa. Por exemplo, um algoritmo para se calar sapato pode especificar que voc vista primeiro as meias e depois os sapatos e amarre-os. Nesse capitulo estudaremos os mtodos para construo de algoritmos como PORTUGOL e FLUXOGRAMA e posteriormente iremos implementar esses algoritmos no computador, traduzindo os algoritmos para a linguagem de programao C++.

1- Linguagem de programao C++


A linguagem de programao C++ sinnimo de desenvolvimento robusto em sistemas que exijam suporte a alta complexidade em algoritmos computacionais. O C++ toca a linha tnue entre a camada de hardware e a camada de software, podendo trabalhar tanto no mais baixo at o mais alto nvel, construindo sistemas dos mais variados tipos e aplicaes. Construda nos anos 80 pelo cientista em computao Bjarne Stroustrup nos laboratrios da Bell, a linguagem uma espcie de upgrade da linguagem C com todo o suporte a POO (Programao Orientada a Objeto). Esta linguagem to conhecida por desenvolvedores do mundo todo, suporta basicamente tudo o que a linguagem C oferece, tendo ainda suporte a orientao a objetos, herana, polimorfismo, dados genricos, abstrao, excees etc. A linguagem ainda conta com uma biblioteca padro constituda de funcionalidades que vo desde a manipulao de conjunto de caracteres (std::string), passando por manipulao de arquivos(std::fstream) at a manipulao de algoritmos matemticos complexos, dando tambm suporte a toda biblioteca padro C. Outro ponto forte da linguagem a portabilidade, sistemas ou aplicaes desenvolvidas em C++ so portveis para outras plataformas.

2- Compilador
Um compilador um programa de computador que, a partir de um cdigo fonte escrito em uma linguagem, cria um programa semanticamente equivalente, porm escrito em outra linguagem.

O compilador usado principalmente para os programas que traduzem o cdigo fonte de uma linguagem de programao de alto nvel (Linguagem C++) para uma linguagem de programao de baixo nvel (cdigo de mquina). Os computadores s so capazes de entender o cdigo de mquina que so instrues que so representadas por sequncias de bits. Esse cdigo chamado de cdigo binrio. So formados por 0 e 1.

3- Ambiente Integrado de Desenvolvimento (IDE)


IDE um programa
de computador que rene caractersticas e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. As caractersticas e ferramentas mais comuns encontradas nos IDEs so: Editor - edita o cdigo-fonte do programa escrito na(s) linguagem(ns) suportada(s) pela IDE; Compilador (compil er) - compila o cdigo-fonte do programa, editado em uma linguagem especfica e a transforma em linguagem de mquina; Depurador (debugger) - auxilia no processo de encontrar e corrigir defeitos no cdigofonte do programa, na tentativa de aprimorar a qualidade de software; Refatorao (refactoring) - consiste na melhoria constante do cdigo-fonte do software, seja na construo de cdigo mais otimizado, mais limpo e/ou com melhor entendimento pelos envolvidos no desenvolvimento do software. A refatorao, em conjunto com os testes automatizados, uma poderosa ferramenta no processo de erradicao de "bugs", tendo em vista que os testes "garantem" o mesmo comportamento externo do software ou da caracterstica sendo reconstruda.

A IDE que utilizaremos ser o Code::Blocks que voltado para o desenvolvimento em C/C++

4- Mtodo para a construo de algoritmos


Para a Construo de qualquer tipo de algoritmo, necessrio seguir estes passos: a) Compreender complemente o problema a ser resolvido, destacando os pontos mais importantes e os objetos que o compes. b) Definir os dados de entrada, ou seja, quais dados sero fornecidos e quais objetos fazem parte desse cenrio-problema. c) Definir o processamento, ou seja, quais clculos sero efetuados e quais as restries para esses clculos. O processamento responsvel pela transformao dos dados de entrada em dados de sada. Alm disso, deve se verificar quais objetos so responsveis pelas atividades. d) Definir os dados de sada, ou seja, quais dados sero gerados depois do processamento. e) Construir o algoritmo utilizando um dos tipos descritos na prxima seo. f) Testar o algoritmo realizando simulaes.

4.1- Tipos de algoritmos


Os trs tipos mais utilizados de algoritmo so: descrio narrativa, fluxograma e pseudocdigo ou portugol, que descrevemos a seguir.

4.1.1- Descrio narrativa


A descrio narrativa consiste em analisar o enunciado do problema e escrever, utilizando uma linguagem natural (por exemplo, a lngua portuguesa), os passos a serem seguidos para sua resoluo. Vantagem: no necessrio aprender nenhum conceito novo, pois uma lngua natural, neste ponto, j bem conhecida. Desvantagem: a lngua natural abre espao para vrias interpretaes, o que posteriormente dificultar a transcrio desse algoritmo para programa. 8

Exemplo: 1 - Um algoritmo para se calar sapato 1 Pegar sapatos. 2 Pegar meia. 3 Vista as meias. 4 Calce os sapatos. 5 Amarre os sapatos. 1 Algoritmo, arrumar para ir uma festa. 1 Pegar Toalha. 2 Tomar banho. 3Escolher roupa. 4Pegar roupa. 5Vestir a roupa. 6Pentear cabelo. 7Calar sapatos. 8Dar tchau para a me. 9Ir para festa.

4.1.2- Fluxograma
O fluxograma consiste em analisar o enunciado do problema e escrever, utilizando smbolos grficos pr definidos, os passos a serem seguidos para sua resoluo. Vantagem: o entendimento de elementos grficos mais simples que o entendimento de textos. Desvantagem: necessrio aprender a simbologia dos fluxogramas e, alm disso, o algoritmo resultante no apresenta muitos detalhes, dificultando sua transcrio para um programa.

Exemplo 1 - Um algoritmo para se calar sapato

Inicio

Pegar sapatos

Pegar meia

Amarre os Sapatos Calce os sapatos Vista a meia

Fim

10

2 - Algoritmo, arrumar para ir a uma festa.

Inicio

Pegar Toalha

Tomar Banho

Vestir Roupa

Pegar roupa

Escolher Roupa

Pentear Cabelo

Calar sapatos

Dar tchau para a me

Ir para festa. Fim

Exerccios de Fluxograma:
1. 2. 3. 4. 5. Faa um fluxograma para entrar no Facebook. Faa um fluxograma para escovar os dentes. Faa um fluxograma que mostre o resultado da multiplicao de dois nmeros. Faa um fluxograma para mostar a diviso de dois nmeros. Faa um fluxograma para calcular a mdia aritmtica entre duas notas de um aluno e mostre sua situao, que pode ser aprovado(media>=60) ou reprovado(mdia<60). 6. Faa um fluxograma para calcular o novo salrio de um funcionrio. Sabe-se que os funcionrios que recebem atualmente at R$500,00 tero um aumento de 20%; os demais tero aumento 10%. 7. Faa um fluxograma que receba quatro notas de um alun, calcule e mostre a media aritmtica das notas e a mensagem de aprovado ou reprovado, considerando para a aprovao mdia 7. 8. *Faa um fluxograma que receba trs nmeros e execute as operaes listadas a seguir, de acordo com a escolha do usurio. 11

Escolha do Usurio 1 2 3 4

Operaes Mdia entre os dois nmeros Subtrair o primeiro do segundo Produto dos dois nmeros Diviso do Primeiro pelo Segundo

4.4.3- Pseudo Cdigo ou Portugal


O pseudocdigo ou portugol consiste em analisar o enunciado do problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para sua resoluo. Vantagem: a passagem do algoritmo para qualquer linguagem de programao quase imediata, bastando conhecer as palavras reservas dessa linguagem que sero utilizadas. Desvantagem: necessrio aprender as regras do pseudocdigo. Exemplo 1 - Um algoritmo para se calar sapato. ALGORITMO_SAPATO INICIO DECLARE meia, sapato, amarra_sapato literal; //entrada de dados ESCREVA Pegar meia e sapato; LEIA meia, sapato; //Processamento amarra_sapato = meia + sapato; //Sada_de_Dados ESCREVA Sapatos calados; FIM 12

- Um algoritmo que some dois nmeros ALGORITMO_SOMA INICIO DECLARE N1,N2,S NUMERICO; ESCREVA Digite dois nmeros; LEIA N1,N2; S=N1+N2; ESCREVA A soma : , s; FIM

4.4.3- Indentao
um termo aplicado ao cdigo fonte de um programa para ressaltar a hierarquia entre os elementos. Na maioria das linguagens a indentao tem um papel meramente esttico, tornando a leitura do cdigo fonte muito mais fcil. A indentao facilita tambm a modificao, seja para correo ou aprimoramento, do cdigo fonte. Existem centenas de estilos de indentao, mas, basicamente, consiste na adio de tabulaes (Espao) no incio de cada linha na quantidade equivalente ao nmero de blocos em que cada linha est contida.

13

5- Tipos de Dados Os tipos de dados mais utilizados so: numrico, lgico e literais/caracteres, que descrevemos a seguir.

5.1- Numricos
Os dados numricos dividem se em dois grupos: inteiros e reais. Os nmeros inteiros pode ser positivo ou negativos e no possuem parte fracionria. Exemplo -23 98 0 -357 237 -2.

Os nmeros reais podem ser positivos ou negativos e possuem parte fracionria. Exemplo 23. 45 346. 89 -34. 88 0. 0 -247. 0

5.2- Lgicos
So tambm chamados dados booleanos e podem assumir os valores verdadeiro ou falso.

5.3- Literais ou Caracteres


So dados formados por um nico caracter ou por uma cadeia de caracteres. Esses caracteres podem ser as letras maisculas, as letras minsculas, os nmeros(no podem ser usados para clculos) e os caracteres especiais (&, #, @, ?, +). Exemplo: 'aluno' '1234' '@ internet' '0.34' '1 + 2' 14

Exerccios de Pseudocdigo:
1. Faa um programa que receba 4 nmeros inteiros, calcule e mostre a soma desses numeros. 2. Faa um programa que receba trs notas, calcule a e mostre a mrdia aritmtica entre elas. 3. Faa um programa que receba o slario de um funcionrio, calcule e mostre o novo slario, sabendo-se que este sofreu um aumento de 25%. 4. Faa um programa que receba o slario de um funcionrio e o percetual de aumento, calcule e mostre o valor do aumento e novo slario. 5. Faa um programa que calcule e mostre a rea de um tringulo. Sabe-se que: rea=(base*altura)/2. 6. Faa um programa que receba uma medida em ps, faa as converses a seguir e mostre os resultados. 1 p = 12 polegadas 1 jarda = 3 ps 1 milha = 1760 jardas Faa um programa que receba uma medida em ps, faa as converses e mostre os resultados em polegadas, jardas e milhas. 7. Faa um programa para resolver equao do 2 grau. Equao: aX+bX+c

8. Faa um programa que calcule e mostre a rea de um crculo. Sabe-se que: 9. O custo ao consumidor de um carro novo a soma do preo de fbrica com o percentual de lucro do distribuidor e dos impostos aplicados ao preo de fbrica. Faa um programa que receba o preo de fbrica de um veculo, o percentual de lucro do distribuidor e o percentual de impostos. Calcule e mostre: a. O valor correspondente ao lucro do distribuidor b. O valor correspondente aos impostos. c. O preo final do veculo.

15

Captulo II
Nesse captulo vamos implementar os exerccios do captulo anterior convertendo o Portugol para Linguagem C++. Utilizaremos a IDE Code::Blocks para transformar nossos programas em C++ em Cdigo de Mquina.

1- Converso Portugol Para C++


1.1Operadores Aritmticos:
Operao C++ Exemplo Valor de X? Igualdade e Atribuio = X=10 Soma + X=5+5 Subtrao x=5-4 Multiplicao * x=4*3 Diviso / x=8/2 Mdulo (Resto da Diviso) % x=11%2 Parentes () X=(5*2+10)+6-1*2 Prioridades: 1 Parentes, 2 Multiplicao e Diviso, 3 Soma e Subtrao

1.2-

Operadores Relacionais
Operador Maior C++ > Exemplo A=15; Z=A>10; Y=20>A; A=10; Z=A>=10; Y=A>=2; A= -10; Z=A<0; Y= -100<A; A=5; Z= A<=3; Y= A<=2; A=5; B=5; Z=A==B; Y=A==2; A=5; B=5; Z=A!=B; Y=A!=2; Valor de Z e Y?

Maior ou igual

>=

Menor

<

Menor ou Igual

<=

Igual

==

Diferente

!=

16

1.3-

Operadores Lgicos
Operador C++ Exemplo X=10 Y=5 Z= (X>=Y)&&(Y==5) Valor de Z?

E
VeV=V VeF=F FeV=F F e F= F OU VeV=V VeF=V FeV=V F e F= F NO &&

||

A= s; B= n; Z=(A!=s)||(B== n) X=10; Z=!(X!=10)

Macete: ARNEOU A - 1 Prioridade Aritmtico R - 2 Prioridade Relacional N - 3 Prioridade No E- 4 Prioridade E OU- 5 Prioridade OU Z=10>=5&&5==2||5+2*2<(4+1)*2 = _____________

17

1.4-

Funes de Entrada de Dados

Portugol LEIA (Caracteres e Nmeros)

C++ cin>> cin >>varivel; cin.getline(varivel);

Biblioteca #include <iostream> using namespace std;

LEIA (String)

char nome[10]; cout << "Digite um nome: "; cin.getline(nome); cout<<

#include <iostream> using namespace std;

ESCREVA

X=10; cout << "O valor de X=" << X;

#include <iostream> using namespace std;

CARACTER uma letra ou smbolo, por exemplo: A, B, $, C, A etc. J uma STRING conjunto de CARACTERES, por exemplo, um nome: MARIA uma STRING com 5 CARACTERES. Exemplo:
#include <iostream> using namespace std; char nome[10]; //Nome com 10 Caracteres int idade;

int main() { cout << "Entre com nome: ; cin.getline(nome); cout << "Entre com a Idade:"; cin>>idade; cout <<nome<< tem <<idade<< anos;

18

system("PAUSE"); return 0; }

1.5-

Funes Matemticas

C++ / Portugol

Biblioteca #include <cmath> #include <cmath> #include <cmath>

|x|
Mdulo Cosseno Seno Tangente Exponencial Log neperiano/natural/base e Log na base 10 Potenciao

abs(x) cos(x) sin(x) tan(x) exp(x) log(x) log10(x) pow(2, 3) pow(base, expoente) sqrt(49) sqrt(Radicando) ndice=2 floor(x)

#include <cmath> #include <cmath> #include <cmath> #include <cmath> #include <cmath> #include <cmath>

Raiz Quadrada Arredondamento para

Baixo.
Arredondamento para

#include <cmath>

Cima.

ceil(x);

#include <cmath>

19

Exerccios de funes Matemticas:


1) Implemente em C++ as expresses abaixo:

b)

c)

d)
1.6Estruturas

PORTUGOL ALGORITMO_NomeDoAlgoritmo INICIO comandos; FIM SE(condio) INICIO comandos; FIM

C/ C++ int main(void) { cout<< Estrutura Bsica!; }

if(condio) { cout<< Entra se condio for verdadeira!; }

SE(condio) INICIO comandos; FIM SENO INICIO comandos; FIM

If(condio) { cout<< Entra se condio for verdadeira!; }else { cout<< Entra se condio for Falsa!; } 20

ENQUANTO condio FAA INICIO comandos; FIM PARA i=n AT m FAA INICIO comandos; FIM REPITA comandos; AT condio; ESCOLHA(varivel) INICIO CASO valor1: comando1; CASO valor2: comando1; ... CASO valor12: comando12; CASO CONTRIO: comando13; FIM

while(condio) { cout<< Repita at condio FALSA!; } for(i=n;n<=m;n++) { cout<< Repita at n=m!; } do { cout<< Repita at condio VERDADEIRA!; }while(condio); switch(varivel) { case valor1: cout<<Executa quando varivel = valor2; break; case valor2: varivel = valor2; break; ... case valor12: varivel = valor12; break; cout<<Executa quando cout<<Executa quando

default: cout<<Executa no quando varivel != de valor1, valor2,..., valor12; }

1.7-

Declarao de Variveis
Portugol DECLARE a,b NUMERICO; C++ / C int a; //Nmeros inteiros float b; //Nmeros Fracionrios char nome[10]; //String com 10 Carcteres char sexo; //(M ou F) Carcter

DECLARE nome,sexo LITERAL;

21

DECLARE a LOGICO

boolean a;

Exerccios de Implementao C++:


1) Implemente em C++ os Exerccios de Pseudocdigo do Capitulo I

Captulo III
1. Estrutura Condicional em pseudocdigo
1.1- Estrutura Condicional simples
SE (condio) ENTO comandos O comando s ser executado se a condio for verdadeira. Uma condio uma comparao que possui dois valores possveis: verdadeiro ou falso. SE (condio) ENTO INCIO comando1; comando2; comando3; FIM Os comandos 1, 2 e 3 s sero executados se a condio for verdadeira. As palavras INCIO e FIM sero necessria apenas quando dois ou mais comando forem executados.

1.2- Estrutura condicional composta.


SE (Condio) ENTO INCIO comando1; comando2; FIM SENO INCIO comando3; comando4; FIM 22

Se a condio for verdadeira, o comando1 e o coomano2 sero executados; caso contrrio, o comando 3 e o comando4 sero executados

2. Estrutura condicional em Fluxograma


2.1- Estrutura condicional simples

INICIO

F SE CONTINUA PROGRAMA

COMANDO1 COMANDO2 COMANDO3

FIM

23

2.2- Estrutura condicional composta


INICIO

F SE SENO V COMANDO3 COMANDO4

COMANDO1 COMANDO2

CONTINUA O PRORAMA

FIM

3. Estrutura condicional em C/C++


3.1- Estrutura condicional simples
if (condio) comando; O comando s sera executados se a condio for verdadeira. Uma condio uma comparao que possui dois valores possveis: verdadeiro ou falso. If (condio) { comando1; comando2; comando3; } Em C/C++ torna-se obrigatria a utilizao de chaves quando existe mais e um comando a executar. Os comandos etre chaves { } s sero executados se a condio for verdadeira.

24

3.2- Estrutura condicional composta


if (condio) comando1; elses comando2; Se a condio for verdadeira, ser executado o comando1; se for falsa, ser executado o comando2. Exemplo 1: If (condio) { comando1; comando2; } else { comando3; comando4; } Exemplo 2: If (condio1) { comando1; comando2; If (condio2) { comando5; comando6; } } else if { comando3; comando4; } else 25

{ comando7; comando8; } Se a condio fo verdadeira, o comando1 e o comando2 sero executados; caso contrrio, o comando e o comando4 sero executados.

4. Estrutura Case
Em alguns programas, existem situaes mutuamente exclusivas, isto , se uma situao for executada, as demais no sero. Esse comando em C/C++ tem a seguinte sintaxe:

4.1- Comando em Pseudocdigo.


ESCOLHA (Varivel) { CASO valor1: lista de comandos; break; CASO valor2: lista de comandos; break; .. CASO CONTRARIO: lista de comanos; }

26

4.2- Fluxograma
INICIO

V CASE 1 COMANDO1 COMANDO2

V CASE 2 COMANDO3 COMANDO4

V CASE 2 COMANDO3 COMANDO4

CASO NO EXITE

FIM

4.3- Comando em C/C++


switch (Varivel) { case valor1: lista de comandos; break; case valor2: lista de comandos; break; .. default: lista de comanos; } 27

O comando switch (varivel) avalia o valor de uma varivel para decidir qual case ser executado. Cada case est associado a UM possvel valor da varivel, que deve ser, obrigatoriamente, do tipo char, unsigned char, int, unsigned int, short int, long ou unsigned long. O comando break deve ser utilizado para impedir a execuo dos comandos definidos nos cases, ser executado ento o default.
Exemplo:

#include <iostream.h> #include <conio.h> void main () { int i; clrscr (); cout<<Digite um nmero; cin>>i switch(i) { case 1:cout<<Nmero 100; break; case 2:cout<<Nmero 200; break; default:cout<<Nmero diferente de 1 e 2; } getch(); }

Exerccios de IF/ELSE e Switch Case em C++:


1) Faa um programa que receba dois nmeros inteiros, digitados pelo usurio e mostre o maior e o menor nmero digitado. 2) Tendo como dados de entrada a altura e o sexo de uma pessoa (M masculino e F feminino), construa um algoritmo que calcule seu peso ideal, utilizando as seguintes frmulas: - para homens: (72.7*h)-58 - para mulheres: (62.1*h)-44.7 28

3) Faa um algoritmo que leia um n inteiro e mostre uma mensagem indicando se este nmero par ou mpar, e se positivo ou negativo. 4) Faa um Programa que pea um valor e mostre na tela se o valor positivo ou negativo. 5) Faa um Programa que verifique se uma letra digitada vogal ou consoante. 6) Faa um programa para a leitura de duas notas parciais de um aluno. O programa deve calcular a mdia alcanada por aluno e apresentar: A mensagem "Aprovado", se a mdia alcanada for maior ou igual a sete; A mensagem "Reprovado", se a mdia for menor do que sete; A mensagem "Aprovado com Distino", se a mdia for igual a dez. 7) Faa um Programa que leia trs nmeros e mostre-os em ordem decrescente. 8) Faa um Programa que pergunte em que turno voc estuda. Pea para digitar Mmatutino ou V-Vespertino ou N- Noturno. Imprima a mensagem "Bom Dia!", "Boa Tarde!" ou "Boa Noite!" ou "Valor Invlido!", conforme o caso. Saldo mdio de 0 a 200 de 201 a 400 de 401 a 600 acima de 601 Percentual nenhum crdito 20% do valor do saldo mdio 30% do valor do saldo mdio 40% do valor do saldo mdio

9) Um banco conceder um crdito especial aos seus clientes, varivel com o saldo mdio no ltimo ano. Faa um algoritmo que leia o saldo mdio de um cliente e calcule o valor do crdito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo mdio e o valor do crdito.

29

Captulo IV
Estrutura de repetio, na cincia da computao, uma estrutura que realiza e/ou repete diferentes algoritmos/aes dependendo se uma condio verdadeira ou falsa.

1. Estrutura de Repetio em Algoritmo


Uma estrutura de repetio utilizada quando um trecho do programa ou at mesmo o algoritmo inteiro precisa ser repetido. O nmero de repeties pode ser fixo ou estar atrelado a uma condio. Assim, existem estruturas para tais situaes, descritas a seguir.

1.1- Estrutura de Repetio para nmero definido de repeties (Estrutura PARA)


Essa Estrutura de repetio utilizada quando se sabe o nmero de vezes que um trecho do algoritmo deve ser repetido. O formato geral dessa estrutura : PARA I < 1Valor inicial AT valor final FAA [PASSO N] INICIO comando1; comando2; ; comandoM; FIM O comando1, o comando2 e o comandoM sero executados utilizando-se a varivel I como controle, e seu contedo vai variar do valor inicial at valor final. A informao do PASSO est entre colchetes porque opcional. O PASSO indica como ser a varivel de controle. Por exemplo, quando for indicado PASSO 2, a varivel de controle ser aumentada em 2 unidades a cada interao at atingir o valor final. Quando a informao do PASSO for suprimida,isso significa que o incremento ou o decremento da varivel de controle ser de 1 unidade. Quando houver apenas um comando a ser repetido, os marcadores de bloco INCIO e FIM podero ser suprimidos. Exemplos: PARA I < 1 AT 10 FAA; ESCREVA I; 30

O comando ESCREVA I ser executado dez vezes, ou seja, para I variando de 1 a 10. Assim, os valores de I sero 1, 2, 3, 4, 5, 6, 7, 8, 9 e 10. PARA J < 1 AT 9 FAA PASSO 2; ESCREVA J; O comando ESCREVA J ser executado cinco vezes, ou seja para J variando de 1 a 10, de 2 em 2. Assim, os valores de J sero: 1, 3, 5, 7 e 9. PARA I < 10 AT 5 FAA; ESCREVA I; O comando ESCREVA I ser executado seis vezes, ou seja, para I variando de 10 a 5. Assim, os valores de I sero: 10, 9, 8, 7, 6 e 5. PARA J < 15 AT 1 FAA PASSO -2 ESCREVA J; O comando ESCREVA J ser executado oito vezes, ou seja, para J variando de 15 a 1, de 2 em 2. Assim, os valores de J sero: 15, 13, 11, 9, 7, 5, 3 e 1. Exemplo em C++ da Estrutura FOR(Para): No exemplo, faremos um programa que contar de 1 a 100: #include <iostream> #include <cstdlib> using namespace std; int main (void) { int x; for (x=1; x<=100; x++) { cout << x <<"\t"; } system ("pause"); return 0; }

31

1.2- Estrutura de Repetio para nmero indefinido de repeties e teste no incio (Estrutura ENQUANTO)
Essa estrutura de repetio utilizada quando no se sabe o nmero de vezes que um trecho do algoritmo deve ser repetido, embora tambm possa ser utilizada quando se conhece esse nmero. Essa estrutura baseia-se na anlise de uma condio. A repetio ser feita enquanto a condio mostrar-se verdadeira. Existem situaes em que o teste condicional da estrutura de repetio, que fica no incio, resulta em um valor falso logo na primeira comparao. Nesses casos, os comandos de dentro da estrutura de repetio no sero executados. ENQUANTO condio FAA comando1; Enquanto a condio for verdeira, o comando1 ser executado. ENQUANTO condio FAA INICIO comando1; comando2; comando3; FIM Enquanto a condio for verdadeira, o comando1, o comando2 e o comando3 sero executados. Exemplos: X < 1; Y < 2; ENQUANTO X<Y FAA INCIO X < X + 2; Y < Y + 1; FIM

Simulao: X 1 Y 5

Valores iniciais 32

3 5 7 9

6 7 8 9

Valores obtidos dentro da estrutura de repetio

No trecho do algoritmo anterior, portanto, os comandos que esto dentro da estrutura de repetio sero repetidos quatro vezes. X < 1; Y < 2; ENQUANTO X <= Y FAA INCIO X < X * 2; Y < Y + 1; FIM Simulao: X 1 1 2 6 24 120 Y 1 2 3 4 5 6

Valores iniciais Valores obtidos dentro da estrutura de repetio

No trecho do algoritmo anterior, portanto, os comandos que se localizam na estrutura de repetio sero repetidos cinco vezes. Nesses exemplo, a estrutura ENQUANTO utilizada para repetir o trecho do algoritmo um nmero definido de vezes Exemplo de C++: No exemplo so mostrados os nmeros pares entre 0 e 100.
#include <iostream> #include <cstdlib> using namespace std; int main (void) { int par=0; cout <<"Os numeros pares de 0 a 100 sao:\n\n";

33

while (par<=100) { cout <<par<<"\t"; par+=2; //o mesmo que par=par+2 } system ("pause"); return 0;

1.3 Estrutura de repetio para nmero indefinido de repeties e teste no final (Estrutura REPITA)
Essa estrutura de repetio utilizada quando no se sabe o nmero e vezes que um trecho do algoritmo deve ser repetido, embora tambm possa ser utilizada quando se conhece esse nmero. Essa estrutura baseia-se na anlise de uma condio. A repetio ser feita at a condio tornar-se verdadeira. A diferena entre a estrutura ENQUANTO e a estrutura REPITA que nesta ltima os comandos sero repetidos pelo menos uma vez, j que a condio de parada se encontra no final. REPITA Comandos; AT (condio) Repita os comandos at a condio se tornar verdadeira. Exemplos: X < 1; Y < 5; REPITA X < X + 2; Y < Y + 1; Simulao: X 1 3 5 7 9 Y 5 6 7 8 9

Valores iniciais Valores obtidos dentro da estrutura de repetio

34

No trecho do algoritmo anterior, portanto, os comandos de dentro da estrutura de repetio sero repetidos quatro vezes. X < 1; Y < 5; REPITA Y < X * Y; X < X + 1; AT X = 6; Simulao: X 1 1 2 6 24 120 Y 1 2 3 4 5 6

Valores iniciais Valores obtidos dentro da estrutura de repetio

No trecho do algoritmo anterior, portanto, os comandos que se localizam dentro da estrutura de repetio sero repetidos cinco vezes. Nesse exemplo, a estrutura REPITA utilizada para repetir o trecho do algoritmo um nmero definido de vezes. Exemplo em C++: Este programa verifica se um nmero par ou mpar, e finaliza em 0. #include <iostream> #include <cstdlib> using namespace std; int main (void) { int nr; do { cout <<"Digite um numero (0 para finalizar): "; cin >> nr; cin.ignore (); if (nr%2==0) { cout <<"Este numero e par\n"; 35

}else { cout <<"Este numero e impar\n"; } system ("pause"); system ("cls"); //Limpa a Tela } while (nr!=0); //enquanto nr for diferente de 0 return 0; }

Exerccios de Estruturas de Repetio


1) Faa um programa que imprima na tela os nmeros de 1 a 20, um abaixo do outro. 2) Faa um programa que imprima na tela os nmeros de 1 a 20 um ao lado do outro. 3) Faa um programa que pea uma nota, entre zero e dez. Mostre uma mensagem caso o valor seja invlido e continue pedindo at que o usurio informe um valor vlido. 4) Faa um programa que leia um login e uma senha, se login estiver errado pea para o usurio entrar de novo com o login e mesmo como a senha. Quando o senha e login estiverem certos, envie uma mensagem de sucesso .(Login=aluno, Senha=123) 5) Supondo que a populao de um pas A seja da ordem de 80000 habitantes com uma taxa anual de crescimento de 3% e que a populao de B seja 200000 habitantes com uma taxa de crescimento de 1.5%. Faa um programa que calcule e escreva o nmero de anos necessrios para que a populao do pas A ultrapasse ou iguale a populao do pas B, mantidas as taxas de crescimento. 6) Faa um programa que leia 5 nmeros e informe o maior nmero. 7) Desenvolva um gerador de tabuada, capaz de gerar a tabuada de qualquer nmero inteiro entre 1 a 10. O usurio deve informar de qual numero ele deseja ver a tabuada. A sada deve ser conforme o exemplo abaixo: Tabuada de 5: 5X1=5 5 X 2 = 10 ... 5 X 10 = 50 8) Faa um programa que pea dois nmeros, base e expoente, calcule e mostre o primeiro nmero elevado ao segundo nmero. No utilize a funo de potncia da linguagem. 9) Faa um programa que pea 10 nmeros inteiros, calcule e mostre a quantidade de nmeros pares e a quantidade de nmeros impares. 10) Faa um programa que calcule o fatorial de um nmero inteiro fornecido pelo usurio. Ex.: 5!=5.4.3.2.1=120 36

11) Faa um programa que, dado um conjunto de N nmeros, determine o menor valor, o maior valor e a soma dos valores. 12) Faa um programa que pea um nmero inteiro e determine se ele ou no um nmero primo. Um nmero primo aquele que divisvel somente por ele mesmo e por 1. 13) Altere o programa de clculo dos nmeros primos, informando, caso o nmero no seja primo, por quais nmero ele divisvel. 14) O Sr. Manoel Joaquim possui uma grande loja de artigos de R$ 1,99, com cerca de 10 caixas. Para agilizar o clculo de quanto cada cliente deve pagar ele desenvolveu um tabela que contm o nmero de itens que o cliente comprou e ao lado o valor da conta. Desta forma a atendente do caixa precisa apenas contar quantos itens o cliente est levando e olhar na tabela de preos. Voc foi contratado para desenvolver o programa que monta esta tabela de preos, que conter os preos de 1 at 50 produtos, conforme o exemplo abaixo: Lojas Quase Dois - Tabela de preos 1 - R$ 1.99 2 - R$ 3.98 ... 50 - R$ 99.50 15) O Sr. Manoel Joaquim expandiu seus negcios para alm dos negcios de 1,99 e agora possui uma loja de convenincias. Faa um programa que implemente uma caixa registradora rudimentar. O programa dever receber um nmero desconhecido de valores referentes aos preos das mercadorias. Um valor zero deve ser informado pelo operador para indicar o final da compra. O programa deve ento mostrar o total da compra e perguntar o valor em dinheiro que o cliente forneceu, para ento calcular e mostrar o valor do troco. Aps esta operao, o programa dever voltar ao ponto inicial, para registrar a prxima compra. A sada deve ser conforme o exemplo abaixo: Lojas Tabajara Produto 1: R$ 2.20 Produto 2: R$ 5.80 Produto 3: R$ 0 Total: R$ 9.00 Dinheiro: R$ 20.00 Troco: R$ 11.00 ... 16) O Departamento Estadual de Meteorologia lhe contratou para desenvolver um programa que leia as um conjunto indeterminado de temperaturas, e informe ao final a menor e a maior temperatura informadas, bem como a mdia das temperaturas. 37

Captulo V
Vetor tambm conhecido como varivel composta homognea unidimensional. Isto quer dizer que se trata de um conjunto de variveis de mesmo tipo, que possuem o mesmo identificador (nome) e so alocadas sequencialmente na memria. Como as variveis tm o mesmo nome, o que as distingue um ndice que referencia sua localizao dentro da estrutura.

1.1- Declarao de vetor


DECLARE nome [tamanho] TIPO; Nome: o nome da varivel do tipo vetor. Tamanho: a quantidade de variveis que vo compor o vetor. Tipo: o tipo bsico dos dados que sero armazenados no vetor. Exemplo de vetor DECLARE x[5] NUMRICO; X =[ ]

1.2- Atribuindo valores ao vetor


As atribuies em vetor exigem que seja informada em qual de suas posies o valor ficar armazenado. X[1] = 45 No exemplo, o nmero 45 ser armazenado na posio de ndice 1 do vetor. X[4] = 0 No exemplo, o nmero 45 ser armazenado na posio de ndice 4 do vetor.

38

1.3- Preenchendo um vetor


Preencher um vetor significa atribuir valores a todas as suas posies. Assim, devese implementar um mecanismo que controle o valor do ndice. Para i 1 ate 5 para faa INICIO Escreva Digite o , i, nmero; LEIA x[i]; FIM Nesse exemplo, a estrutura de repetio PARA foi utilizada para garantir que a varivel i assuma todos os valores possveis para o ndice do vetor. Assim, para cada execuo da repetio, ser utilizada uma posio diferente do vetor. Simulao: X =[i]

1 i=1 95 1 5 i=2 95 1 5 i=3 95 1 i=4

TELA Digite o primeiro nmero, x [1]= 95

TELA Digite o segundo nmero, x [2]= 13 13 2

TELA Digite o terceiro nmero, x [3]= -25 13 2 -25 3

TELA Digite o quarto nmero, x [4]= 47 39

95 1 i=5 95 1

13 2

-25 3

47 4

TELA Digite o quinto nmero, x [5]= 0 13 2 -25 3 47 4 0 5

1.4- Mostrando os elementos do vetor


Mostrando os valores contidos em um vetor tambm implica a utilizao do ndice. PARA i < 1 at 5 faa INICIO Escreva Este o , i, nmero do vetor; Escreva X[i]; FIM Nesse exemplo, a estrutura de repetio PARA foi utilizada para garantir que a varivel i assuma todos os valores possveis para o ndice do vetor. Assim, para execuo da repetio, ser utilizada uma posio diferente e, dessa forma, todos os valores do vetor sero mostrados.

1.5- Vetor em C++


Definio de vetor As variveis compostas homogneas unidimensionais (vetores) so capazes de armazenar vrios valores. Cada um desses valores identificado pelo mesmo nome (o nome dado ao vetor). Eles so diferenciados apenas por um ndice. Os ndices utilizados na linguagem C++ para identificar as posioes de um vetor comeam sempre em 0(zero) e vo at o tamanho do vetor menos uma unidade.

40

1.5.1- Declarao de vetor

Os vetores em C++ so identificados pela existncia de colchetes logo aps o nome da varivel no momento da declarao. Dentro dos colchetes deve-se colocar o nmero de posies do vetor. Exemplo de vetor int vet[10]; vet [i] 10 0 5 1 3 2 8 3 1 4 19 5 44 6 21 7 2 8 7 9

Nesses exemplo, o vetor chamado vet possui dez posies, comeando pela posio 0 e indo at a posio 9 (tamanho do vetor -1). Em cada posio podero ser armazenados nmeros inteiros, conforme especificado pelo tipo int da declarao. Char x[5]; x[i] A 0 4 Nesse exemplo, o vetor chamado x possui cinco posies, comeando pela posio 0 e indo at a posio 4 (tamanho do vetor -1). Em cada posio podero ser armazenados caracteres, conforme especificado pelo tipo char na declarao. Obs: importante lembrar, que toda vez que se faz uso de um vetor para armazenar uma cadeia de caracteres, deve-se definir uma posio a mais que a necessria para armazenar a marca de finalizao de cadeia (\0). * 1 2 2 @ 3 K

1.5.2- Atribuindo valores ao vetor


As atribuies em vetor exigem que seja informada em qual de suas posies o valor ficar armazenado. Deve-se lembrar sempre que a primeira posio de um vetor em C++ tem ndice 0. 41

vet [0] = 1; //atribui o valor 1 a primeira posio do vetor (lembre-se que o vetor comea na posio 0) x[3] = 'b'; //atribui a letra b quarta posio do vetor (lembre-se que o vetor comea na posio 0)

1.5.3- Preenchendo um vetor


Preencher um vetor significa atribuir valores a todas as suas posies. Assim, devese implementar um mecanismo que controle o valor do ndice. for (i=0; i<10; i++) { cin >> vetor[i]; } Nesse exemplo, a estrutura de repetio FOR foi utilizada para garantir que a varivel i assuma todos os valores possveis para o ndice do vetor (de 0 a 9). Assim, para cada execuo da repetio, ser utilizada uma posio diferente do vetor.

1.5.4- Mostrando os elementos do vetor


Mostrar os valores contidos em um vetor tambm exige a utilizao do ndice. for (i=0; i<10; i++) { cout << vetor[i]; } Nesse exemplo, a estrutura de repetio FOR foi utilizada para garantir que a varivel i assuma todos os valores possveis para o ndice do vetor (de 0 a 9). Assim, para cada execuo da repetio, ser utilizada uma posio diferente e, dessa forma, todos os valores do vetor sero mostrados.

42

Exerccios de Vetor:
1) Faa um Programa que leia um vetor de 5 nmeros inteiros e mostre-os. 2) Faa um Programa que leia um vetor de 10 nmeros reais e mostre-os na ordem inversa. 3) Faa um Programa que leia 4 notas, mostre as notas e a mdia na tela. 4) Faa um Programa que leia 20 nmeros inteiros e armazene-os num vetor. Armazene os nmeros pares no vetor PAR e os nmeros IMPARES no vetor impar. Imprima os trs vetores. 5) Faa um Programa que pea as quatro notas de 10 alunos, calcule e armazene num vetor a mdia de cada aluno, imprima o nmero de alunos com mdia maior ou igual a 7.0. 6) Uma empresa de pesquisas precisa tabular os resultados da seguinte enquete feita a um grande quantidade de organizaes: "Qual o melhor Sistema Operacional para uso em servidores?" As possveis respostas so: 1- Windows Server 2- Unix 3- Linux 4- Netware 5- Mac OS 6- Outro Voc foi contratado para desenvolver um programa que leia o resultado da enquete e informe ao final o resultado da mesma. O programa dever ler os valores at ser informado o valor 0, que encerra a entrada dos dados. No devero ser aceitos valores alm dos vlidos para o programa (0 a 6). Os valores referentes a cada uma das opes devem ser armazenados num vetor. Aps os dados terem sido completamente informados, o programa dever calcular a percentual de cada um dos concorrentes e informar o vencedor da enquete. O formato da sada foi dado pela empresa, e o seguinte: Sistema Operacional Votos % ------------------- ----- --Windows Server 1500 17% Unix 3500 40% Linux 3000 34% Netware 500 5% Mac OS 150 2% Outro 150 2% ------------------- ----Total 8800 O Sistema Operacional mais votado foi o Unix, com 3500 votos, correspondendo a 40% dos votos. 43

Sub-Rotinas ou Funes
Sub-rotinas, tambm chamadas de funes, so blocos de instruo que realizam tarefas especficas. As funes podem ser executados quantas vezes forem necessrios, elas tambm ajudar diminuindo o programa principal tornando-o menor e mais organizado. Os programas em geral so executados linearmente(uma linha aps a outra, at o fim). Entretanto, quando so utilizadas a funes, possvel a realizao de desvios na execuo do programa. Estes desvios so efetuados quando uma funo chamada pelo programa principal.

1. Exemplo em Pseudocdigo:
O algoritmo apresentado tem como objetivo receber o valor do salrio de um funcionrio e calcular o novo salrio. ALGOTIMO Novo_salario INICIO DECLARE sal, aumento, novo_sal NUMERICO; LEIA sal; aumento calc_almento(sal); novo_sal sal+aumento; ESCREVA Novo Salrio , novo_sal; FIM FUNCAO calc_almento(sal NUMERICO) //Com passagem de parmetro INICIO DECLARE percentual, valor NUMERICO; LEIA percentual; valor sal*percentual/100; RETORNE valor; //Com retorno FIM

2. Exemplo em Fluxograma:
Programa com uma funo para calcular o Fatorial de um nmero.(Com passagem de parmetro e retorno)

44

3. Exemplo em C++
Funes so usadas para criar pequenos pedaos de cdigos separados do programa principal. Em C/C++, tudo, na verdade, uma funo. INT MAIN (VOID) uma funo, por exemplo. Exceto a funo MAIN, todas as outras funes so secundrias, o que significa que elas podem existir ou no. Ento, qual a vantagem de fazermos uma funo? Funes so importantes porque elas retornam valores, ajudam a fragmentar o cdigo em partes menores - mais fceis de lidar - e ainda por cima podem ser utilizadas mais de uma vez no mesmo programa, poupando preciosos minutos de programao e inmeras linhas de cdigo.

3.1. Como criar e utilizar uma funo?


Criamos uma funo indicando o tipo de retorno (sada) que ser int, float, etc... Nomeamos a funo (valem as mesma regras das variveis, ex.: No comea nomes de funes com nmero) e terminamos colocando entre parnteses os argumentos. Todo o cdigo da funo deve estar dentro de um bloco de instruo ( { } ), mesmo que haja apenas uma linha. Aps a funo ser criada, basta chamarmos a funo dentro da funo principal MAIN. Para cham-la, apenas digitamos o nome da funo e entre parnteses colocamos seus argumentos.

45

Exemplos de Tipo de Retorno: Int Nmero inteiros Float Nmero com virgula Char - Carter Void No retorna Valor Exemplo: A Funo que usaremos no retornar nenhum valor porque a nica coisa que ela faz mostrar uma mensagem na tela. Ela ter o tipo de retorno vazio tambm - void. Como esta funo no tem argumentos, simplesmente colocamos nada entre os parnteses.

3.2. Funes que retornam valores


Como j foi dito uma funo pode retornar um valor, e esse valor pode ou no ser guardado em uma varivel, isso depende de como queremos lidar com isso. Para retornarmos um valor usamos o comando RETURN. Toda vez que retornamos um valor porque terminamos a funo. Por isso, todo programa utilizado at agora termina em RETURN 0;. Mas em projetos maiores tem por conveno utilizar uma constante EXIT_SUCCESS - para deixar o programa com mais legibilidade. No cdigo abaixo, usaremos uma funo que chamaremos de somar que retornar um inteiro resultante da soma de duas variveis. No programa (funo MAIN) guardaremos o retorno da funo em uma varivel chamada resultadoDaFuncao. No final imprimiremos na tela o resultado.

46

3.3. Funes com argumentos


Primeiramente, o que so argumentos? Argumentos so parmetros prespecificados que so necessrios para o funcionamento de uma funo. Resumidamente, um argumento uma varivel ou valor que necessrio para algum processo da funo. Para criar uma funo com argumento simples. Criamos a funo como de costume. Primeiro o tipo de retorno e depois o nome da funo. Ento, entre parnteses "declaramos uma varivel", ou praticamente isso. Podemos por quantos argumentos quisermos, basta que para cada argumento especifique-se seu tipo e separe-se por vrgula. Exemplo:
1 argumento: INT NOMEDAFUNO (int argumento1) 2 argumentos: INT NOMEDAFUNO (int argumento1, int argumento 2) 3 argumentos: INT NOMEDAFUNO (int argumento1, float argumento2, int argumento3) etc...
include <iostream> #include <cstdlib> using namespace std; int multiplicar(int a,int b, int c); { int reposta; resposta=a*b*c; return resposta; } int main (void) { int x,y,z,resp_mutiplicacao; x=2;

47

y=3; z=5; resp_mutiplicacao=multiplicar(x,y,z); cout<<A multiplicao=<<resp_mutiplicacao system ("pause"); return 0;

} Foi criada uma funo chamada multiplicar que precisa de trs argumentos: a, b e c. O seu retorno a multiplicao das trs (a*b*c) que fica gravado na varivel resp_mutiplicacao.

4. Variveis globais e locais 4.1. Variveis Locais


Variveis locais so aquelas nas quais apenas a funo onde ela est pode us-la. Por exemplo, se declaramos int x dentro da funo main, apenas a funo main poder utiliz-la para guardar dados e nenhuma outra funo poder utilizar o int x da funo main. Veja:

Perceba que a varivel x s pode ser utilizado por main e a varivel y s pode ser utilizada por obterY. Para conseguirmos utilizar o valor guardado em y na funo obterY, tivemos que retornar (por na sada da funo) o valor de y (return y) e guardamos dentro de outra varivel que estava em main - valorDeY.

4.2.

Variveis Globais

As variveis globais so declaradas da mesma forma que uma varivel local primeiro o tipo, depois o nome da varivel. Mas a diferena que esta varivel declarada fora de qualquer funo. Por conveno, geralmente, utilizamos um underline (_) no comeo do nome da varivel para facilitar a leitura do programa e facilmente percebermos de que se trata de uma varivel global. 48

Variveis globais podem ser utilizadas por qualquer funo. E qualquer funo pode alterar o valor, utiliz-la em um processo ou at mesmo atribuir o valor que quiser.

Perceba que a varivel _iniciado est sendo usada nas duas funes - main e start. Toda vez que a funo start chamada, incrementado (somado) um a _iniciado. Prestemos ateno no seguinte tambm, dentro da funo main tambm tem uma varivel chamada x que toda vez que chamamos main deve ser incrementada (x++). Ento, por que apenas o valor de _iniciado muda e x continua sempre 1? a que est a vantagem e tambm a desvantagem da varivel global. A varivel global est constantemente na memria. O fato de reiniciar o programa ou no, pouco importa, porque o valor de _iniciado nunca reinicializado quando chamamos uma funo. A no ser que em algum lugar do programa ns especifiquemos isso. J as variveis locais esto presas as funes. Cada vez que chamamos uma funo, tambm chamamos as variveis dentro da funo. Se finalizamos uma funo, tambm finalizamos a varivel. Resumindo, se reiniciamos a funo, tambm reiniciamos a varivel daquela funo. A desvantagem da varivel global a dificuldade de lidar com ela. Devemos usar variveis globais apenas quando realmente necessrio. Porque, imagine usar uma varivel global e dentro de nosso programa tem 10 ou mais funes, todas elas utilizando a mesma varivel global e alterando seu valor. Ao final de todas as operaes, dificilmente saberemos qual ser seu resultado. Ou seja, isso dificultar a lgica do nosso programa, deixando-o difcil de interpretar.

49

Exerccios de Funes:
1) Faa um programa com uma funo que receba um nmero inteiro e positivo N como parmetro e retorne a soma dos nmeros inteiros existentes entre 1 e N(inclusive). 2) Faa um programa com uma funo que receba trs nmeros inteiros como parmetros, representado horas, minutos e segundos, e os converta em segundos. Exemplo: 2h,40 min, 10 s correspondem a 9610 segundos. 3) Elabore um programa com uma funo que receba como parmetro o raio de uma esfera, calcule e mostre no programa principal qual o seu volume: v=4/3*R. 4) Faa um programa com uma funo que receba um numero e informe se o mesmo positivo ou negativo. 5) Faa um programa com uma funo que leia um nmero no determinado de valores positivos e retorne a mdia aritmtica desses valores. 6) Faa um programa com uma funo que receba um valor inteiro e positivo, calcule e mostre o seu fatorial. 7) Faa um programa com uma funo que receba o valor de altura e largura e calcule e mostre o valor da rea. 8) Faa um programa encomendado pelo Rubinho Barrichello para clculo da velocidade mdia escalar do seu carro de frmula 1. O programa deve ter 3 funes, uma para calcular Variao de Espao, outra para calcular Variao do Tempo e uma para Clculo da Velocidade Mdia Escalar.

50

Bibliografia
Site: www.tiexpert.net

51