Vous êtes sur la page 1sur 51

Fundamentos de Programao.

Algoritmos & Linguagem C++


(MII)
Nome:_______________________________________

Turma:______

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)

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

Operadores Aritmticos: .................................................................................... 16

1.2-

Operadores Relacionais...................................................................................... 16

1.3-

Operadores Lgicos ............................................................................................ 17

1.4-

Funes de Entrada de Dados ............................................................................ 18

1.5-

Funes Matemticas ........................................................................................ 19

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


1.6-

Estruturas ........................................................................................................... 20

1.7-

Declarao de Variveis ..................................................................................... 21

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

Declarao de vetor ............................................................................................... 38

1.2-

Atribuindo valores ao vetor ................................................................................... 38

1.3-

Preenchendo um vetor .......................................................................................... 39

1.4-

Mostrando os elementos do vetor ........................................................................ 40

1.5-

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

Calce os sapatos

Vista a meia

Amarre os Sapatos

Fim

10

2 - Algoritmo, arrumar para ir a uma festa.

Inicio

Vestir Roupa

Pentear Cabelo

Pegar Toalha

Tomar Banho

Pegar roupa

Escolher Roupa

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

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

Operadores 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

C++

Maior

>

Maior ou igual

>=

Menor

<

Menor ou Igual

<=

Igual

==

Diferente

!=

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?

16

1.3-

Operadores Lgicos
Operador

C++

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

&&

Exemplo

Valor de Z?

X=10
Y=5
Z= (X>=Y)&&(Y==5)

||

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;

Biblioteca
#include <iostream>
using namespace std;

cin.getline(varivel);
LEIA (String)

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

#include <iostream>
using namespace std;

cout<<
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

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

Raiz Quadrada
Arredondamento para

Baixo.
Arredondamento para

Cima.

C++ / Portugol

Biblioteca

abs(x)

#include <cmath>

cos(x)
sin(x)
tan(x)
exp(x)
log(x)
log10(x)

#include <cmath>
#include <cmath>

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

pow(2, 3)
pow(base, expoente)

#include <cmath>

sqrt(49)
sqrt(Radicando)
ndice=2

#include <cmath>

floor(x)

#include <cmath>

ceil(x);

#include <cmath>

19

Exerccios de funes Matemticas:


1) Implemente em C++ as expresses abaixo:

b)

c)

d)
1.6-

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

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

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

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

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;

cout<<Executa

quando

cout<<Executa

quando

...
case valor12:
varivel = valor12;
break;

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

1.7-

Declarao de Variveis
Portugol

C++ / C

DECLARE a,b NUMERICO;

int a; //Nmeros inteiros


float b; //Nmeros Fracionrios

DECLARE nome,sexo LITERAL;

char nome[10]; //String com 10 Carcteres


char sexo; //(M ou F) Carcter

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

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
COMANDO3
COMANDO4

CASE 2

V
CASE 2

CASO NO
EXITE

COMANDO3
COMANDO4

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

Percentual
nenhum crdito

de 201 a 400

20% do valor do saldo mdio

de 401 a 600

30% do valor do saldo mdio

acima de 601

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

Y
1

1
2
6
24
120

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

Y
5

3
5
7
9

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

Y
1

1
2
6
24
120

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]

i=1

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


95
1

5
i=2

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


95
1

13
2

5
i=3

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


95
1

i=4

13
2

-25
3

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


39

95
1

13
2

i=5

-25
3

47
4

TELA Digite o quinto nmero, x [5]= 0


95
1

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

5
0

3
1

8
2

1
3

19
4

44
5

21
6

2
7

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

2
1

@
2

K
3

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