Upload
lyphuc
View
225
Download
5
Embed Size (px)
Citation preview
1
Fundamentos de Programação. Algoritmos & Linguagem C++
(MII)
Nome:_______________________________________ Turma:______
Elaborado pelos Educadores Voluntários: Luiz Claudio de Andrade Junior ([email protected]) Wellington Cássio Faria ([email protected]) Laís Olímpio ([email protected]) Revisada por: Elisa Marinho de Oliveira - Técnica de Telecomunicações ([email protected])
2
Sumário
Introdução: ............................................................................................................................. 5
O que é Programação? ....................................................................................................... 5
O que é um Programa e um Algoritmo? ............................................................................ 5
Capítulo I ................................................................................................................................. 6
1- Linguagem de programação C++ ................................................................................. 6
2- Compilador .................................................................................................................. 6
3- Ambiente Integrado de Desenvolvimento (IDE) ......................................................... 7
4- Método para a construção de algoritmos ................................................................... 8
4.1- Tipos de algoritmos ................................................................................................. 8
4.1.1- Descrição narrativa ............................................................................................... 8
4.1.2- Fluxograma ........................................................................................................... 9
Exercícios de Fluxograma: ............................................................................................ 11
4.4.3- Pseudo Código ou Portugal ................................................................................ 12
4.4.3- Indentação .......................................................................................................... 13
5- Tipos de Dados .......................................................................................................... 14
5.1- Numéricos ............................................................................................................. 14
5.2- Lógicos ................................................................................................................... 14
5.3- Literais ou Caracteres ............................................................................................ 14
Exercícios de Pseudocódigo: ............................................................................................ 15
Capítulo II .............................................................................................................................. 16
1- Conversão Portugol Para C++ .................................................................................... 16
1.1- Operadores Aritméticos: .................................................................................... 16
1.2- Operadores Relacionais...................................................................................... 16
1.3- Operadores Lógicos ............................................................................................ 17
1.4- Funções de Entrada de Dados ............................................................................ 18
1.5- Funções Matemáticas ........................................................................................ 19
Exercícios de funções Matemáticas: ............................................................................ 20
1.6- Estruturas ........................................................................................................... 20
1.7- Declaração de Variáveis ..................................................................................... 21
Exercícios de Implementação C++: ............................................................................... 22
3
Capítulo III ............................................................................................................................. 22
1. Estrutura Condicional em pseudocódigo .................................................................. 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 Pseudocódigo. ................................................................................. 26
4.2- Fluxograma ............................................................................................................ 27
4.3- Comando em C/C++............................................................................................... 27
Exercícios de IF/ELSE e Switch Case em C++: ................................................................ 28
Capítulo IV ............................................................................................................................ 30
1. Estrutura de Repetição em Algoritmo .......................................................................... 30
1.1- Estrutura de Repetição para número definido de repetições (Estrutura PARA) .. 30
1.2- Estrutura de Repetição para número indefinido de repetições e teste no início (Estrutura ENQUANTO) ................................................................................................ 32
1.3 Estrutura de repetição para número indefinido de repetições e teste no final (Estrutura REPITA) ........................................................................................................ 34
Exercícios de Estruturas de Repetição ......................................................................... 36
Capítulo V ............................................................................................................................. 38
1.1- Declaração 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- Declaração 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
4
Exercícios de Vetor: ...................................................................................................... 43
Sub-Rotinas ou Funções ....................................................................................................... 44
1. Exemplo em Pseudocódigo: ......................................................................................... 44
2. Exemplo em Fluxograma: ............................................................................................. 44
3. Exemplo em C++ ........................................................................................................... 45
3.1. Como criar e utilizar uma função?......................................................................... 45
3.2. Funções que retornam valores .................................................................................. 46
3.3. Funções com argumentos ......................................................................................... 47
4. Variáveis globais e locais .............................................................................................. 48
4.1. Variáveis Locais ...................................................................................................... 48
4.2. Variáveis Globais ................................................................................................ 48
Exercícios de Funções: .................................................................................................. 50
Bibliografia ............................................................................................................................ 51
5
Introdução:
O que é Programação?
Programação é o processo de escrita, teste e manutenção de um programa de
computador. O programa é escrito em uma linguagem de programação, embora seja possível, com alguma dificuldade, escrevê-lo diretamente em linguagem de máquina. Não pensei que somente os computadores pessoais (Desktop e Laptops) são computadores. Computador é qualquer dispositivo eletrônico capaz de tratamento automaticamente informações ou processamento de dados. Assumiu-se que os computadores pessoais e laptops são ícones da Era da Informação; e isto é o que muitas pessoas consideram como "computador". Entretanto, atualmente as formas mais comuns de computador em uso são os sistemas embarcados, pequenos dispositivos usados para controlar outros dispositivos, como robôs, câmeras digitais, brinquedos e celulares.
O que é um Programa e um Algoritmo?
Um algoritmo é uma sequência de
passos para realizar uma tarefa ou resolver um problema. Em nosso dia a dia utilizamos algoritmos para realizar nossas atividades, definindo a sequência 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 são uma coleção 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 são algoritmos que constroem a casa.
Pequeno programa na linguagem de
programação C .
6
Capí tulo I O conceito de algoritmo é frequentemente ilustrado pelo exemplo de uma receita
culinária, embora muitos algoritmos sejam mais complexos. Eles podem repetir passos ou necessitar de tomadas de decisões até que a tarefa seja completada.
Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos necessários para realizar uma tarefa. Por exemplo, um algoritmo para se calçar sapato pode especificar que você vista primeiro as meias e depois os sapatos e amarre-os. Nesse capitulo estudaremos os métodos para construção de algoritmos como PORTUGOL e FLUXOGRAMA e posteriormente iremos implementar esses algoritmos no computador, traduzindo os algoritmos para a linguagem de programação C++.
1- Linguagem de programação C++
A linguagem de programação C++ é sinônimo de desenvolvimento robusto em
sistemas que exijam suporte a alta complexidade em algoritmos computacionais. O C++ toca a linha tênue entre a camada de hardware e a camada de software,
podendo trabalhar tanto no mais baixo até o mais alto nível, construindo sistemas dos mais variados tipos e aplicações.
Construída nos anos 80 pelo cientista em computação “Bjarne Stroustrup“ nos laboratórios da Bell, a linguagem é uma espécie de upgrade da linguagem “C” com todo o suporte a POO (Programação Orientada a Objeto).
Esta linguagem tão conhecida por desenvolvedores do mundo todo, suporta basicamente tudo o que a linguagem “C” oferece, tendo ainda suporte a orientação a objetos, herança, polimorfismo, dados genéricos, abstração, exceções etc.
A linguagem ainda conta com uma biblioteca padrão constituída de funcionalidades que vão desde a manipulação de conjunto de caracteres (std::string), passando por manipulação de arquivos(std::fstream) até a manipulação de algoritmos matemáticos complexos, dando também suporte a toda biblioteca padrão “C”.
Outro ponto forte da linguagem é a portabilidade, sistemas ou aplicações desenvolvidas em C++ são portáveis para outras plataformas.
2- Compilador
Um compilador é um programa de computador que, a partir de um código fonte escrito em uma linguagem, cria um programa semanticamente equivalente, porém escrito em outra linguagem.
7
O compilador é usado principalmente para os programas que traduzem o código fonte de uma linguagem de programação de alto nível (Linguagem C++) para uma linguagem de programação de baixo nível (código de máquina).
Os computadores só são capazes de “entender” o código de máquina que são instruções que são representadas por sequências de bits. Esse código é chamado de código binário. São formados por 0 e 1.
3- Ambiente Integrado de Desenvolvimento (IDE)
IDE é um programa
de computador que reúne
características e ferramentas de apoio ao desenvolvimento
de software com o objetivo de
agilizar este processo. As características e ferramentas mais comuns encontradas nos IDEs são:
Editor - edita
o código-fonte do
programa escrito
na(s) linguagem(ns)
suportada(s) pela
IDE;
Compilador (compil
er) - compila o
código-fonte do
programa, editado
em uma linguagem específica e a transforma em linguagem de máquina;
Depurador (debugger) - auxilia no processo de encontrar e corrigir defeitos no código-
fonte do programa, na tentativa de aprimorar a qualidade de software;
Refatoração (refactoring) - consiste na melhoria constante do código-fonte do software,
seja na construção de código mais otimizado, mais limpo e/ou com melhor entendimento
pelos envolvidos no desenvolvimento do software. A refatoração, em conjunto com os
testes automatizados, é uma poderosa ferramenta no processo de erradicação de "bugs",
tendo em vista que os testes "garantem" o mesmo comportamento externo do software ou
da característica sendo reconstruída.
A IDE que utilizaremos será o Code::Blocks que é voltado para o desenvolvimento em C/C++
8
4- Método para a construção de algoritmos
Para a Construção de qualquer tipo de algoritmo, é necessário seguir estes passos:
a) Compreender complemente o problema a ser resolvido, destacando os pontos mais importantes e os objetos que o compões.
b) Definir os dados de entrada, ou seja, quais dados serão fornecidos e quais objetos
fazem parte desse cenário-problema.
c) Definir o processamento, ou seja, quais cálculos serão efetuados e quais as restrições para esses cálculos. O processamento é responsável pela transformação dos dados de entrada em dados de saída. Além disso, deve se verificar quais objetos são responsáveis pelas atividades.
d) Definir os dados de saída, ou seja, quais dados serão gerados depois do
processamento.
e) Construir o algoritmo utilizando um dos tipos descritos na próxima seção.
f) Testar o algoritmo realizando simulações.
4.1- Tipos de algoritmos
Os três tipos mais utilizados de algoritmo são: descrição narrativa, fluxograma e
pseudocódigo ou portugol, que descrevemos a seguir.
4.1.1- Descrição narrativa
A descrição narrativa consiste em analisar o enunciado do problema e escrever,
utilizando uma linguagem natural (por exemplo, a língua portuguesa), os passos a serem seguidos para sua resolução. Vantagem: não é necessário aprender nenhum conceito novo, pois uma língua natural, neste ponto, já é bem conhecida. Desvantagem: a língua natural abre espaço para várias interpretações, o que posteriormente dificultará a transcrição desse algoritmo para programa.
9
Exemplo: 1 - Um algoritmo para se calçar 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. 3°Escolher roupa. 4°Pegar roupa. 5°Vestir a roupa. 6°Pentear cabelo. 7°Calçar sapatos. 8°Dar tchau para a mãe. 9°Ir para festa.
4.1.2- Fluxograma
O fluxograma consiste em analisar o enunciado do problema e escrever, utilizando
símbolos gráficos pré definidos, os passos a serem seguidos para sua resolução. Vantagem: o entendimento de elementos gráficos é mais simples que o entendimento de textos. Desvantagem: é necessário aprender a simbologia dos fluxogramas e, além disso, o algoritmo resultante não apresenta muitos detalhes, dificultando sua transcrição para um programa.
10
Exemplo 1 - Um algoritmo para se calçar sapato
Inicio Pegar sapatos
Vista a meia
Pegar meia
Calce os sapatos
Amarre os Sapatos
Fim
11
2 - Algoritmo, arrumar para ir a uma festa.
Exercícios de Fluxograma:
1. Faça um fluxograma para entrar no Facebook. 2. Faça um fluxograma para escovar os dentes. 3. Faça um fluxograma que mostre o resultado da multiplicação de dois números. 4. Faça um fluxograma para mostar a divisão de dois números. 5. Faça um fluxograma para calcular a média aritmética entre duas notas de um
aluno e mostre sua situação, que pode ser aprovado(media>=60) ou reprovado(média<60).
6. Faça um fluxograma para calcular o novo salário de um funcionário. Sabe-se que os funcionários que recebem atualmente até R$500,00 terão um aumento de 20%; os demais terão aumento 10%.
7. Faça um fluxograma que receba quatro notas de um alun, calcule e mostre a media aritmética das notas e a mensagem de aprovado ou reprovado, considerando para a aprovação média 7.
8. *Faça um fluxograma que receba três números e execute as operações listadas a seguir, de acordo com a escolha do usuário.
Inicio Pegar Toalha Tomar Banho
Escolher Roupa Pegar roupa
Vestir Roupa
Pentear Cabelo
Calçar
sapatos Dar tchau para a mãe
Ir para festa. Fim
12
4.4.3- Pseudo Código ou Portugal
O pseudocódigo ou portugol consiste em analisar o enunciado do problema
e escrever, por meio de regras predefinidas, os passos a serem seguidos para sua resolução.
Vantagem: a passagem do algoritmo para qualquer linguagem de programação é
quase imediata, bastando conhecer as palavras reservas dessa linguagem que serão utilizadas.
Desvantagem: é necessário aprender as regras do pseudocódigo.
Exemplo 1 - Um algoritmo para se calçar 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;
//Saída_de_Dados
ESCREVA “Sapatos calçados;
FIM
Escolha do Usuário Operações
1 Média entre os dois números
2 Subtrair o primeiro do segundo
3 Produto dos dois números
4 Divisão do Primeiro pelo Segundo
13
1 - Um algoritmo que some dois números
ALGORITMO_SOMA INICIO
DECLARE N1,N2,S NUMERICO; ESCREVA “Digite dois números”; LEIA N1,N2; S=N1+N2; ESCREVA “A soma é: “, s;
FIM
4.4.3- Indentação
É um termo aplicado ao código fonte de um programa para ressaltar a hierarquia
entre os elementos. Na maioria das linguagens a indentação tem um papel meramente estético, tornando a leitura do código fonte muito mais fácil. A indentação facilita também a modificação, seja para correção ou aprimoramento, do código fonte.
Existem centenas de estilos de indentação, mas, basicamente, consiste na adição de tabulações (Espaço) no início de cada linha na quantidade equivalente ao número de blocos em que cada linha está contida.
14
5- Tipos de Dados
Os tipos de dados mais utilizados são: numérico, lógico e literais/caracteres, que descrevemos a seguir.
5.1- Numéricos
Os dados numéricos dividem se em dois grupos: inteiros e reais. Os números inteiros pode ser positivo ou negativos e não possuem parte fracionária. Exemplo -23 98 0 -357 237 -2. Os números reais podem ser positivos ou negativos e possuem parte fracionária. Exemplo 23. 45 346. 89 -34. 88 0. 0 -247. 0
5.2- Lógicos
São também chamados dados booleanos e podem assumir os valores verdadeiro ou falso.
5.3- Literais ou Caracteres
São dados formados por um único caracter ou por uma cadeia de caracteres. Esses caracteres podem ser as letras maiúsculas, as letras minúsculas, os números(não podem ser usados para cálculos) e os caracteres especiais (&, #, @, ?, +). Exemplo: 'aluno' '1234' '@ internet' '0.34' '1 + 2'
15
Exercícios de Pseudocódigo:
1. Faça um programa que receba 4 números inteiros, calcule e mostre a soma desses
numeros. 2. Faça um programa que receba três notas, calcule a e mostre a mérdia aritmética
entre elas. 3. Faça um programa que receba o sálario de um funcionário, calcule e mostre o
novo sálario, sabendo-se que este sofreu um aumento de 25%. 4. Faça um programa que receba o sálario de um funcionário e o percetual de
aumento, calcule e mostre o valor do aumento e novo sálario. 5. Faça um programa que calcule e mostre a área de um triângulo. Sabe-se que:
Área=(base*altura)/2. 6. Faça um programa que receba uma medida em pés, faça as conversões a seguir e
mostre os resultados. 1 pé = 12 polegadas 1 jarda = 3 pés 1 milha = 1760 jardas
Faça um programa que receba uma medida em pés, faça as conversões e mostre os resultados em polegadas, jardas e milhas.
7. Faça um programa para resolver equação do 2º grau.
Equação: aX²+bX+c
8. Faça um programa que calcule e mostre a área de um círculo. Sabe-se que:
9. O custo ao consumidor de um carro novo é a soma do preço de fábrica
com o percentual de lucro do distribuidor e dos impostos aplicados ao preço de fábrica. Faça um programa que receba o preço de fábrica de um veículo, 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 preço final do veículo.
16
Capí tulo II Nesse capítulo vamos implementar os exercícios do capítulo anterior convertendo o Portugol para Linguagem C++. Utilizaremos a IDE “Code::Blocks” para transformará nossos programas em C++ em Código de Máquina.
1- Conversão Portugol Para C++
1.1- Operadores Aritméticos:
Operação C++ Exemplo Valor de X?
Igualdade e Atribuição = X=10
Soma + X=5+5
Subtração - x=5-4
Multiplicação * x=4*3
Divisão / x=8/2
Módulo (Resto da Divisão) % x=11%2
Parentes ( ) X=(5*2+10)+6-1*2
Prioridades: 1º Parentes, 2º Multiplicação e Divisão, 3º Soma e Subtração
1.2- Operadores Relacionais
Operador C++ Exemplo Valor de Z e Y?
Maior > A=15;
Z=A>10; Y=20>A;
Maior ou igual >= A=10;
Z=A>=10; Y=A>=2;
Menor < A= -10; Z=A<0;
Y= -100<A;
Menor ou Igual <= A=5;
Z= A<=3; Y= A<=2;
Igual ==
A=5; B=5;
Z=A==B; Y=A==2;
Diferente !=
A=5; B=5;
Z=A!=B; Y=A!=2;
17
1.3- Operadores Lógicos
Operador C++ Exemplo Valor de Z?
E V e V = V V e F = F F e V = F F e F= F
&&
X=10 Y=5
Z= (X>=Y)&&(Y==5)
OU V e V = V V e F = V F e V = V F e F= F
|| A= ‘s’; B= ‘n’;
Z=(A!=‘s’)||(B== ‘n’)
NÃO
! X=10;
Z=!(X!=10)
Macete: ARNEOU A - 1º Prioridade Aritmético R - 2º Prioridade Relacional N - 3º Prioridade Não E- 4º Prioridade E OU- 5º Prioridade OU
Z=10>=5&&5==2||5+2*2<(4+1)*2 = _____________
18
1.4- Funções de Entrada de Dados
Portugol C++ Biblioteca
LEIA (Caracteres e Números)
cin>>
cin >>variável;
#include <iostream> using namespace std;
LEIA (String)
cin.getline(variável);
char nome[10]; cout << "Digite um nome: "; cin.getline(nome);
#include <iostream> using namespace std;
ESCREVA
cout<<
X=10; cout << "O valor de X=" << X;
#include <iostream> using namespace std;
CARACTER é uma letra ou símbolo, 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”;
19
system("PAUSE");
return 0;
}
1.5- Funções Matemáticas
C++ / Portugol Biblioteca
|x| Módulo
abs(x)
#include <cmath>
Cosseno
cos(x) #include <cmath>
Seno
sin(x) #include <cmath>
Tangente
tan(x) #include <cmath>
Exponencial
exp(x) #include <cmath>
Log neperiano/natural/base e
log(x) #include <cmath>
Log na base 10
log10(x) #include <cmath>
Potenciação
pow(2, 3) pow(base, expoente)
#include <cmath>
√
Raiz Quadrada
sqrt(49) sqrt(Radicando)
Índice=2
#include <cmath>
Arredondamento para
Baixo. floor(x)
#include <cmath>
Arredondamento para
Cima. ceil(x);
#include <cmath>
20
Exercícios de funções Matemáticas:
1) Implemente em C++ as expressões abaixo:
b)
c) √
d) ( )
1.6- Estruturas
PORTUGOL C/ C++
ALGORITMO_NomeDoAlgoritmo INICIO comandos; FIM
int main(void) { cout<< “Estrutura Básica!”; }
SE(condição) INICIO comandos; FIM
if(condição) { cout<< “Entra se condição for verdadeira!”; }
SE(condição) INICIO comandos; FIM SENÃO INICIO comandos; FIM
If(condição) { cout<< “Entra se condição for verdadeira!”; }else { cout<< “Entra se condição for Falsa!”; }
21
ENQUANTO condição FAÇA INICIO comandos; FIM
while(condição) { cout<< “Repita até condição FALSA!”; }
PARA i=n ATÉ m FAÇA INICIO comandos; FIM
for(i=n;n<=m;n++) { cout<< “Repita até n=m!”; }
REPITA comandos; ATÉ condição;
do { cout<< “Repita até condição VERDADEIRA!”; }while(condição);
ESCOLHA(variável) INICIO CASO valor1: comando1; CASO valor2: comando1; ... CASO valor12: comando12; CASO CONTÁRIO: comando13; FIM
switch(variável) { case valor1: cout<<“Executa quando variável = valor2”; break; case valor2: cout<<“Executa quando variável = valor2”; break; ... case valor12: cout<<“Executa quando variável = valor12”; break; default: cout<<“Executa no quando variável != de valor1, valor2,..., valor12”; }
1.7- Declaração de Variáveis
Portugol C++ / C
DECLARE a,b NUMERICO;
int a; //Números inteiros float b; //Números Fracionários
DECLARE nome,sexo LITERAL;
char nome[10]; //String com 10 Carácteres char sexo; //(M ou F) Carácter
22
DECLARE a LOGICO
boolean a;
Exercícios de Implementação C++:
1) Implemente em C++ os Exercícios de Pseudocódigo do Capitulo I
Capítulo III
1. Estrutura Condicional em pseudocódigo
1.1- Estrutura Condicional simples
SE (condição) ENTÃO comandos
O comando só será executado se a condição for verdadeira. Uma condição é uma comparação que possui dois valores possíveis: verdadeiro ou falso. SE (condição) ENTÃO INÍCIO comando1; comando2; comando3;
FIM Os comandos 1, 2 e 3 só serão executados se a condição for verdadeira. As palavras INÍCIO e FIM serão necessária apenas quando dois ou mais comando forem executados.
1.2- Estrutura condicional composta.
SE (Condição) ENTÃO INÍCIO comando1; comando2; FIM SENÃO INÍCIO comando3; comando4; FIM
23
Se a condição for verdadeira, o comando1 e o coomano2 serão executados; caso
contrário, o comando 3 e o comando4 serão executados
2. Estrutura condicional em Fluxograma
2.1- Estrutura condicional simples
INICIO
SE
F
V
COMANDO1 COMANDO2 COMANDO3
CONTINUA PROGRAMA
FIM
24
2.2- Estrutura condicional composta
3. Estrutura condicional em C/C++
3.1- Estrutura condicional simples
if (condição) comando; O comando só sera executados se a condição for verdadeira. Uma condição é uma comparação que possui dois valores possíveis: verdadeiro ou falso. If (condição) { comando1; comando2; comando3; } Em C/C++ torna-se obrigatória a utilização de chaves quando existe mais e um comando a executar. Os comandos etre chaves { } só serão executados se a condição for verdadeira.
INICIO
SE SENÃO
COMANDO1 COMANDO2
V
COMANDO3 COMANDO4
F
CONTINUA O PRORAMA FIM
25
3.2- Estrutura condicional composta
if (condição) comando1; elses comando2; Se a condição for verdadeira, será executado o comando1; se for falsa, será executado o comando2. Exemplo 1: If (condição) { comando1; comando2; } else { comando3; comando4; } Exemplo 2:
If (condição1) { comando1; comando2; If (condição2) { comando5; comando6; } } else if { comando3; comando4; } else
26
{ comando7; comando8; }
Se a condição fo verdadeira, o comando1 e o comando2 serão executados; caso contrário, o comando e o comando4 serão executados.
4. Estrutura Case
Em alguns programas, existem situações mutuamente exclusivas, isto é, se uma situação for executada, as demais não serão. Esse comando em C/C++ tem a seguinte sintaxe:
4.1- Comando em Pseudocódigo.
ESCOLHA (Variável) { CASO valor1: lista de comandos; break; CASO valor2: lista de comandos; break; ….. CASO CONTRARIO: lista de comanos; }
27
4.2- Fluxograma
4.3- Comando em C/C++
switch (Variável) { case valor1: lista de comandos; break; case valor2: lista de comandos; break; ….. default: lista de comanos; }
INICIO
CASE 1 COMANDO1 COMANDO2
V
CASE 2
V
COMANDO3 COMANDO4
V
CASE 2 COMANDO3 COMANDO4
CASO NÂO EXITE
FIM
28
O comando switch (variável) avalia o valor de uma variável para decidir qual case
será executado. Cada case está associado a UM possível valor da variável, 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 execução dos comandos definidos nos cases, será executado então o default. Exemplo:
#include <iostream.h> #include <conio.h> void main () { int i; clrscr (); cout<<”Digite um número”; cin>>i switch(i) { case 1:cout<<”Número 100”; break; case 2:cout<<”Número 200”; break; default:cout<<”Número diferente de 1 e 2”; } getch(); }
Exercícios de IF/ELSE e Switch Case em C++:
1) Faça um programa que receba dois números inteiros, digitados pelo usuário e
mostre o maior e o menor número 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 fórmulas:
- para homens: (72.7*h)-58 - para mulheres: (62.1*h)-44.7
29
3) Faça um algoritmo que leia um nº inteiro e mostre uma mensagem indicando se este número é par ou ímpar, e se é positivo ou negativo.
4) Faça um Programa que peça um valor e mostre na tela se o valor é positivo ou negativo.
5) Faça um Programa que verifique se uma letra digitada é vogal ou consoante. 6) Faça um programa para a leitura de duas notas parciais de um aluno. O programa
deve calcular a média alcançada por aluno e apresentar: A mensagem "Aprovado", se a média alcançada for maior ou igual a sete; A mensagem "Reprovado", se a média for menor do que sete;
A mensagem "Aprovado com Distinção", se a média for igual a dez. 7) Faça um Programa que leia três números e mostre-os em ordem decrescente. 8) Faça um Programa que pergunte em que turno você estuda. Peça para digitar M-
matutino ou V-Vespertino ou N- Noturno. Imprima a mensagem "Bom Dia!", "Boa Tarde!" ou "Boa Noite!" ou "Valor Inválido!", conforme o caso.
9) Um banco concederá um crédito especial aos seus clientes, variável com o saldo médio no último ano. Faça um algoritmo que leia o saldo médio de um cliente e calcule o valor do crédito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo médio e o valor do crédito.
Saldo médio Percentual
de 0 a 200 nenhum crédito
de 201 a 400 20% do valor do saldo médio
de 401 a 600 30% do valor do saldo médio
acima de 601 40% do valor do saldo médio
30
Capítulo IV
Estrutura de repetição, na ciência da computação, é uma estrutura que realiza e/ou repete diferentes algoritmos/ações dependendo se uma condição é verdadeira ou falsa.
1. Estrutura de Repetição em Algoritmo
Uma estrutura de repetição é utilizada quando um trecho do programa ou até mesmo o algoritmo inteiro precisa ser repetido. O número de repetições pode ser fixo ou estar atrelado a uma condição. Assim, existem estruturas para tais situações, descritas a seguir.
1.1- Estrutura de Repetição para número definido de repetições (Estrutura PARA)
Essa Estrutura de repetição é utilizada quando se sabe o número de vezes que um trecho do algoritmo deve ser repetido. O formato geral dessa estrutura é: PARA I < 1Valor inicial ATÉ valor final FAÇA [PASSO N] INICIO comando1; comando2; …; comandoM; FIM O comando1, o comando2 e o comandoM serão executados utilizando-se a variável I como controle, e seu conteúdo vai variar do valor inicial até valor final. A informação do PASSO está entre colchetes porque é opcional. O PASSO indica como será a variável de controle. Por exemplo, quando for indicado PASSO 2, a variável de controle será aumentada em 2 unidades a cada interação até atingir o valor final. Quando a informação do PASSO for suprimida,isso significa que o incremento ou o decremento da variável de controle será de 1 unidade. Quando houver apenas um comando a ser repetido, os marcadores de bloco INÍCIO e FIM poderão ser suprimidos. Exemplos: PARA I < 1 ATÉ 10 FAÇA; ESCREVA I;
31
O comando ESCREVA I será executado dez vezes, ou seja, para I variando de 1 a 10. Assim, os valores de I serão 1, 2, 3, 4, 5, 6, 7, 8, 9 e 10. PARA J < 1 ATÉ 9 FAÇA 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 serão: 1, 3, 5, 7 e 9. PARA I < 10 ATÉ 5 FAÇA; ESCREVA I; O comando ESCREVA I será executado seis vezes, ou seja, para I variando de 10 a 5. Assim, os valores de I serão: 10, 9, 8, 7, 6 e 5. PARA J < 15 ATÉ 1 FAÇA 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 serão: 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;
}
32
1.2- Estrutura de Repetição para número indefinido de repetições e teste no início (Estrutura ENQUANTO)
Essa estrutura de repetição é utilizada quando não se sabe o número de vezes que um trecho do algoritmo deve ser repetido, embora também possa ser utilizada quando se conhece esse número. Essa estrutura baseia-se na análise de uma condição. A repetição será feita enquanto a condição mostrar-se verdadeira. Existem situações em que o teste condicional da estrutura de repetição, que fica no início, resulta em um valor falso logo na primeira comparação. Nesses casos, os comandos de dentro da estrutura de repetição não serão executados. ENQUANTO condição FAÇA comando1; Enquanto a condição for verdeira, o comando1 será executado. ENQUANTO condição FAÇA INICIO comando1; comando2; comando3; FIM
Enquanto a condição for verdadeira, o comando1, o comando2 e o comando3 serão executados. Exemplos: X < 1; Y < 2; ENQUANTO X<Y FAÇA INÍCIO X < X + 2; Y < Y + 1; FIM Simulação: X Y 1 5 Valores iniciais
33
3 6 Valores obtidos dentro da estrutura de repetição 5 7 7 8 9 9 No trecho do algoritmo anterior, portanto, os comandos que estão dentro da estrutura de repetição serão repetidos quatro vezes. X < 1; Y < 2; ENQUANTO X <= Y FAÇA INÍCIO X < X * 2; Y < Y + 1; FIM Simulação: X Y 1 1 Valores iniciais 1 2 Valores obtidos dentro da estrutura de repetição 2 3 6 4 24 5 120 6 No trecho do algoritmo anterior, portanto, os comandos que se localizam na estrutura de repetição serão repetidos cinco vezes. Nesses exemplo, a estrutura ENQUANTO é utilizada para repetir o trecho do algoritmo um número definido de vezes Exemplo de C++: No exemplo são mostrados os números 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";
34
while (par<=100) {
cout <<par<<"\t"; par+=2; //o mesmo que par=par+2
}
system ("pause");
return 0;
}
1.3 Estrutura de repetição para número indefinido de repetições e teste no final (Estrutura REPITA)
Essa estrutura de repetição é utilizada quando não se sabe o número e vezes que um trecho do algoritmo deve ser repetido, embora também possa ser utilizada quando se conhece esse número. Essa estrutura baseia-se na análise de uma condição. A repetição será feita até a condição tornar-se verdadeira. A diferença entre a estrutura ENQUANTO e a estrutura REPITA é que nesta última os comandos serão repetidos pelo menos uma vez, já que a condição de parada se encontra no final. REPITA
Comandos; ATÉ (condição)
Repita os comandos até a condição se tornar verdadeira. Exemplos: X < 1; Y < 5; REPITA X < X + 2; Y < Y + 1; Simulação: X Y 1 5 Valores iniciais 3 6 Valores obtidos dentro da estrutura de repetição 5 7 7 8 9 9
35
No trecho do algoritmo anterior, portanto, os comandos de dentro da estrutura de repetição serão repetidos quatro vezes. X < 1; Y < 5; REPITA Y < X * Y; X < X + 1; ATÉ X = 6; Simulação: X Y 1 1 Valores iniciais 1 2 Valores obtidos dentro da estrutura de repetição 2 3 6 4 24 5 120 6 No trecho do algoritmo anterior, portanto, os comandos que se localizam dentro da estrutura de repetição serão repetidos cinco vezes. Nesse exemplo, a estrutura REPITA é utilizada para repetir o trecho do algoritmo um número definido de vezes. Exemplo em C++: Este programa verifica se um número é 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";
36
}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;
}
Exercícios de Estruturas de Repetição
1) Faça um programa que imprima na tela os números de 1 a 20, um abaixo do outro. 2) Faça um programa que imprima na tela os números de 1 a 20 um ao lado do outro. 3) Faça um programa que peça uma nota, entre zero e dez. Mostre uma mensagem
caso o valor seja inválido e continue pedindo até que o usuário informe um valor válido.
4) Faça um programa que leia um login e uma senha, se login estiver errado peça para o usuário 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 população de um país A seja da ordem de 80000 habitantes com uma taxa anual de crescimento de 3% e que a população de B seja 200000 habitantes com uma taxa de crescimento de 1.5%. Faça um programa que calcule e escreva o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento.
6) Faça um programa que leia 5 números e informe o maior número. 7) Desenvolva um gerador de tabuada, capaz de gerar a tabuada de qualquer número
inteiro entre 1 a 10. O usuário deve informar de qual numero ele deseja ver a tabuada. A saída deve ser conforme o exemplo abaixo:
Tabuada de 5: 5 X 1 = 5 5 X 2 = 10 ... 5 X 10 = 50 8) Faça um programa que peça dois números, base e expoente, calcule e mostre o
primeiro número elevado ao segundo número. Não utilize a função de potência da linguagem.
9) Faça um programa que peça 10 números inteiros, calcule e mostre a quantidade de números pares e a quantidade de números impares.
10) Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário. Ex.: 5!=5.4.3.2.1=120
37
11) Faça um programa que, dado um conjunto de N números, determine o menor valor, o maior valor e a soma dos valores.
12) Faça um programa que peça um número inteiro e determine se ele é ou não um número primo. Um número primo é aquele que é divisível somente por ele mesmo e por 1.
13) Altere o programa de cálculo dos números primos, informando, caso o número não seja primo, por quais número ele é divisível.
14) O Sr. Manoel Joaquim possui uma grande loja de artigos de R$ 1,99, com cerca de 10 caixas. Para agilizar o cálculo de quanto cada cliente deve pagar ele desenvolveu um tabela que contém o número 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 preços. Você foi contratado para desenvolver o programa que monta esta tabela de preços, que conterá os preços de 1 até 50 produtos, conforme o exemplo abaixo:
Lojas Quase Dois - Tabela de preços 1 - R$ 1.99 2 - R$ 3.98 ... 50 - R$ 99.50 15) O Sr. Manoel Joaquim expandiu seus negócios para além dos negócios de 1,99 e
agora possui uma loja de conveniências. Faça um programa que implemente uma caixa registradora rudimentar. O programa deverá receber um número desconhecido de valores referentes aos preços das mercadorias. Um valor zero deve ser informado pelo operador para indicar o final da compra. O programa deve então mostrar o total da compra e perguntar o valor em dinheiro que o cliente forneceu, para então calcular e mostrar o valor do troco. Após esta operação, o programa deverá voltar ao ponto inicial, para registrar a próxima compra. A saída 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 média das temperaturas.
38
Capítulo V
Vetor também é conhecido como variável composta homogênea unidimensional. Isto quer dizer que se trata de um conjunto de variáveis de mesmo tipo, que possuem o mesmo identificador (nome) e são alocadas sequencialmente na memória. Como as variáveis têm o mesmo nome, o que as distingue é um índice que referencia sua localização dentro da estrutura.
1.1- Declaração de vetor
DECLARE nome [tamanho] TIPO; Nome: é o nome da variável do tipo vetor. Tamanho: é a quantidade de variáveis que vão compor o vetor. Tipo: é o tipo básico dos dados que serão armazenados no vetor. Exemplo de vetor DECLARE x[5] NUMÉRICO; X =[ ]
1 2 3 4 5
1.2- Atribuindo valores ao vetor
As atribuições em vetor exigem que seja informada em qual de suas posições o valor ficará armazenado.
X[1] = 45 No exemplo, o número 45 será armazenado na posição de índice 1 do vetor.
X[4] = 0 No exemplo, o número 45 será armazenado na posição de índice 4 do vetor.
39
1.3- Preenchendo um vetor
Preencher um vetor significa atribuir valores a todas as suas posições. Assim, deve-se implementar um mecanismo que controle o valor do índice. Para i 1 ate 5 para faça INICIO Escreva “Digite o ”, i, “° número”; LEIA x[i]; FIM Nesse exemplo, a estrutura de repetição PARA foi utilizada para garantir que a variável i assuma todos os valores possíveis para o índice do vetor. Assim, para cada execução da repetição, será utilizada uma posição diferente do vetor. Simulação: X =[i]
1 2 3 4 5 i = 1 TELA “Digite o primeiro número”, x [1]= 95
95
1 2 3 4 5 i = 2 TELA “Digite o segundo número”, x [2]= 13
95 13
1 2 3 4 5 i = 3 TELA “Digite o terceiro número”, x [3]= -25
95 13 -25
1 2 3 4 5 i = 4 TELA “Digite o quarto número”, x [4]= 47
40
95 13 -25 47
1 2 3 4 5 i = 5 TELA “Digite o quinto número”, x [5]= 0
95 13 -25 47 0
1 2 3 4 5
1.4- Mostrando os elementos do vetor Mostrando os valores contidos em um vetor também implica a utilização do índice. PARA i < 1 até 5 faça INICIO Escreva “Este é o ”, i, ”° número do vetor”; Escreva X[i]; FIM
Nesse exemplo, a estrutura de repetição PARA foi utilizada para garantir que a variável i assuma todos os valores possíveis para o índice do vetor. Assim, para execução da repetição, será utilizada uma posição diferente e, dessa forma, todos os valores do vetor serão mostrados.
1.5- Vetor em C++
Definição de vetor As variáveis compostas homogêneas unidimensionais (vetores) são capazes de armazenar vários valores. Cada um desses valores é identificado pelo mesmo nome (o nome dado ao vetor). Eles são diferenciados apenas por um índice. Os índices utilizados na linguagem C++ para identificar as posiçoes de um vetor começam sempre em 0(zero) e vão até o tamanho do vetor menos uma unidade.
41
1.5.1- Declaração de vetor
Os vetores em C++ são identificados pela existência de colchetes logo após o nome da variável no momento da declaração. Dentro dos colchetes deve-se colocar o número de posições do vetor. Exemplo de vetor int vet[10]; vet [i]
10 5 3 8 1 19 44 21 2 7
0 1 2 3 4 5 6 7 8 9 Nesses exemplo, o vetor chamado vet possui dez posições, começando pela posição 0 e indo até a posição 9 (tamanho do vetor -1). Em cada posição poderão ser armazenados números inteiros, conforme especificado pelo tipo int da declaração. Char x[5]; x[i]
A * 2 @ K
0 1 2 3 4 Nesse exemplo, o vetor chamado x possui cinco posições, começando pela posição 0 e indo até a posição 4 (tamanho do vetor -1). Em cada posição poderão ser armazenados caracteres, conforme especificado pelo tipo char na declaração. Obs: É importante lembrar, que toda vez que se faz uso de um vetor para armazenar uma cadeia de caracteres, deve-se definir uma posição a mais que a necessária para armazenar a marca de finalização de cadeia (\0).
1.5.2- Atribuindo valores ao vetor
As atribuições em vetor exigem que seja informada em qual de suas posições o valor ficará armazenado. Deve-se lembrar sempre que a primeira posição de um vetor em C++ tem índice 0.
42
vet [0] = 1; //atribui o valor 1 a primeira posição do vetor (lembre-se que o vetor começa na posição 0) x[3] = 'b'; //atribui a letra b à quarta posição do vetor (lembre-se que o vetor começa na posição 0)
1.5.3- Preenchendo um vetor
Preencher um vetor significa atribuir valores a todas as suas posições. Assim, deve-se implementar um mecanismo que controle o valor do índice. for (i=0; i<10; i++)
{ cin >> vetor[i];
} Nesse exemplo, a estrutura de repetição FOR foi utilizada para garantir que a variável i assuma todos os valores possíveis para o índice do vetor (de 0 a 9). Assim, para cada execução da repetição, será utilizada uma posição diferente do vetor.
1.5.4- Mostrando os elementos do vetor
Mostrar os valores contidos em um vetor também exige a utilização do índice. for (i=0; i<10; i++)
{ cout << vetor[i];
} Nesse exemplo, a estrutura de repetição FOR foi utilizada para garantir que a variável i assuma todos os valores possíveis para o índice do vetor (de 0 a 9). Assim, para cada execução da repetição, será utilizada uma posição diferente e, dessa forma, todos os valores do vetor serão mostrados.
43
Exercícios de Vetor:
1) Faça um Programa que leia um vetor de 5 números inteiros e mostre-os. 2) Faça um Programa que leia um vetor de 10 números reais e mostre-os na ordem
inversa. 3) Faça um Programa que leia 4 notas, mostre as notas e a média na tela. 4) Faça um Programa que leia 20 números inteiros e armazene-os num vetor.
Armazene os números pares no vetor PAR e os números IMPARES no vetor impar. Imprima os três vetores.
5) Faça um Programa que peça as quatro notas de 10 alunos, calcule e armazene num vetor a média de cada aluno, imprima o número de alunos com média maior ou igual a 7.0.
6) Uma empresa de pesquisas precisa tabular os resultados da seguinte enquete feita a um grande quantidade de organizações:
"Qual o melhor Sistema Operacional para uso em servidores?" As possíveis respostas são: 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. Não deverão ser aceitos valores além dos válidos para o programa (0 a 6). Os valores referentes a cada uma das opções devem ser armazenados num vetor. Após 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 saída 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.
44
Sub-Rotinas ou Funções
Sub-rotinas, também chamadas de funções, são blocos de instrução que realizam
tarefas específicas. As funções podem ser executados quantas vezes forem necessários, elas
também ajudar diminuindo o programa principal tornando-o menor e mais organizado.
Os programas em geral são executados linearmente(uma linha após a outra, até o
fim). Entretanto, quando são utilizadas a funções, é possível a realização de desvios na
execução do programa. Estes desvios são efetuados quando uma função é chamada pelo
programa principal.
1. Exemplo em Pseudocódigo:
O algoritmo apresentado tem como objetivo receber o valor do salário de um
funcionário e calcular o novo salário.
ALGOTIMO Novo_salario
INICIO
DECLARE sal, aumento, novo_sal NUMERICO;
LEIA sal;
aumento ← calc_almento(sal);
novo_sal ← sal+aumento;
ESCREVA “Novo Salário é”, novo_sal;
FIM
FUNCAO calc_almento(sal NUMERICO) //Com passagem de parâmetro
INICIO
DECLARE percentual, valor NUMERICO;
LEIA percentual;
valor ← sal*percentual/100;
RETORNE valor; //Com retorno
FIM
2. Exemplo em Fluxograma:
Programa com uma função para calcular o Fatorial de um número.(Com passagem de
parâmetro e retorno)
45
3. Exemplo em C++
Funções são usadas para criar pequenos pedaços de códigos separados do programa principal. Em C/C++, tudo, na verdade, é uma função. INT MAIN (VOID) é uma função, por exemplo.
Exceto a função MAIN, todas as outras funções são secundárias, o que significa que elas podem existir ou não. Então, qual a vantagem de fazermos uma função?
Funções são importantes porque elas retornam valores, ajudam a fragmentar o código em partes menores - mais fáceis de lidar - e ainda por cima podem ser utilizadas mais de uma vez no mesmo programa, poupando preciosos minutos de programação e inúmeras linhas de código.
3.1. Como criar e utilizar uma função?
Criamos uma função indicando o tipo de retorno (saída) que será int, float, etc...
Nomeamos a função (valem as mesma regras das variáveis, ex.: Não começa nomes de funções com número) e terminamos colocando entre parênteses os argumentos. Todo o
código da função deve estar dentro de um bloco de instrução ( { } ), mesmo que haja apenas uma linha.
Após a função ser criada, basta chamarmos a função dentro da função principal MAIN.
Para chamá-la, apenas digitamos o nome da função e entre parênteses colocamos seus argumentos.
46
Exemplos de Tipo de Retorno:
Int – Número inteiros Float –Número com virgula Char - Caráter Void – Não retorna Valor
Exemplo: A Função que usaremos não retornará nenhum valor porque a única coisa que ela
faz é mostrar uma mensagem na tela. Ela terá o tipo de retorno vazio também - void. Como esta função não tem argumentos, simplesmente colocamos nada entre os parênteses.
3.2. Funções que retornam valores
Como já foi dito uma função pode retornar um valor, e esse valor pode ou não ser guardado em uma variável, 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 função. Por isso, todo programa utilizado até agora termina em RETURN 0;. Mas em projetos maiores tem por convenção utilizar uma constante - EXIT_SUCCESS - para deixar o programa com mais legibilidade.
No código abaixo, usaremos uma função que chamaremos de somar que retornará um inteiro resultante da soma de duas variáveis. No programa (função MAIN) guardaremos o retorno da função em uma variável chamada resultadoDaFuncao. No final imprimiremos na tela o resultado.
47
3.3. Funções com argumentos Primeiramente, o que são argumentos? Argumentos são parâmetros pré-
especificados que são necessários para o funcionamento de uma função. Resumidamente, um argumento é uma variável ou valor que é necessário para algum processo da função. Para criar uma função com argumento é simples.
Criamos a função como de costume. Primeiro o tipo de retorno e depois o nome da função. Então, entre parênteses "declaramos uma variável", ou praticamente isso.
Podemos por quantos argumentos quisermos, basta que para cada argumento especifique-se seu tipo e separe-se por vírgula. Exemplo: 1 argumento: INT NOMEDAFUNÇÃO (int argumento1) 2 argumentos: INT NOMEDAFUNÇÃO (int argumento1, int argumento 2) 3 argumentos: INT NOMEDAFUNÇÃO (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;
48
y=3;
z=5;
resp_mutiplicacao=multiplicar(x,y,z);
cout<<”A multiplicação=”<<resp_mutiplicacao
system ("pause");
return 0;
}
Foi criada uma função chamada multiplicar que precisa de três argumentos: a, b e c. O seu retorno é a multiplicação das três (a*b*c) que fica gravado na variável resp_mutiplicacao.
4. Variáveis globais e locais
4.1. Variáveis Locais
Variáveis locais são aquelas nas quais apenas a função onde ela está pode usá-la. Por exemplo, se declaramos int x dentro da função main, apenas a função main poderá utilizá-la para guardar dados e nenhuma outra função poderá utilizar o int x da função main. Veja:
Perceba que a variável x só pode ser utilizado por main e a variável y só pode ser
utilizada por obterY. Para conseguirmos utilizar o valor guardado em y na função obterY, tivemos que retornar (por na saída da função) o valor de y (return y) e guardamos dentro de outra variável que estava em main - valorDeY.
4.2. Variáveis Globais
As variáveis globais são declaradas da mesma forma que uma variável local - primeiro o tipo, depois o nome da variável. Mas a diferença é que esta variável é declarada fora de qualquer função. Por convenção, geralmente, utilizamos um underline (_) no começo do nome da variável para facilitar a leitura do programa e facilmente percebermos de que se trata de uma variável global.
49
Variáveis globais podem ser utilizadas por qualquer função. E qualquer função pode alterar o valor, utilizá-la em um processo ou até mesmo atribuir o valor que quiser.
Perceba que a variável _iniciado está sendo usada nas duas funções - main e start.
Toda vez que a função start é chamada, é incrementado (somado) um a _iniciado. Prestemos atenção no seguinte também, dentro da função main também tem uma variável chamada x que toda vez que chamamos main deve ser incrementada (x++). Então, por que apenas o valor de _iniciado muda e x continua sempre 1? É aí que está a vantagem e também a desvantagem da variável global.
A variável global está constantemente na memória. O fato de reiniciar o programa ou não, pouco importa, porque o valor de _iniciado nunca é reinicializado quando chamamos uma função. A não ser que em algum lugar do programa nós especifiquemos isso.
Já as variáveis locais estão presas as funções. Cada vez que chamamos uma função, também chamamos as variáveis dentro da função. Se finalizamos uma função, também finalizamos a variável. Resumindo, se reiniciamos a função, também reiniciamos a variável daquela função.
A desvantagem da variável global é a dificuldade de lidar com ela. Devemos usar variáveis globais apenas quando realmente necessário. Porque, imagine usar uma variável global e dentro de nosso programa tem 10 ou mais funções, todas elas utilizando a mesma variável global e alterando seu valor. Ao final de todas as operações, dificilmente saberemos qual será seu resultado. Ou seja, isso dificultará a lógica do nosso programa, deixando-o difícil de interpretar.
50
Exercícios de Funções:
1) Faça um programa com uma função que receba um número inteiro e positivo N como parâmetro e retorne a soma dos números inteiros existentes entre 1 e N(inclusive).
2) Faça um programa com uma função que receba três números inteiros como parâmetros, 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 função que receba como parâmetro o raio de uma esfera, calcule e mostre no programa principal qual o seu volume: v=4/3*R³.
4) Faça um programa com uma função que receba um numero e informe se o mesmo é positivo ou negativo.
5) Faça um programa com uma função que leia um número não determinado de valores positivos e retorne a média aritmética desses valores.
6) Faça um programa com uma função que receba um valor inteiro e positivo, calcule e mostre o seu fatorial.
7) Faça um programa com uma função que receba o valor de altura e largura e calcule e mostre o valor da área.
8) Faça um programa encomendado pelo Rubinho Barrichello para cálculo da velocidade média escalar do seu carro de fórmula 1. O programa deve ter 3 funções, uma para calcular Variação de Espaço, outra para calcular Variação do Tempo e uma para Cálculo da Velocidade Média Escalar.
51
Bibliografia Site: www.tiexpert.net