Você está na página 1de 37

1

Algoritmos e Programação

Algoritmos e Programação

Conceitos de Programação

Programa-fonte e Programa-objeto

Programa-fonte é o “texto” criado utilizando uma linguagem pré-definida, também


é conhecido como código-fonte. Para que os computadores processem estes
códigos é necessário que eles sejam traduzidos para comandos de baixo nível
(linguagem de máquina). Para isto existem os compiladores que geram o
programa-objeto, ou seja, o código-objeto. Mas mesmo depois disso o
computador ainda não é capaz de executar o programa, pois ainda é necessário
fazer o que chamamos de “linkagem”, que é a ligação entre bibliotecas e/ou
outros códigos-objeto com o nosso código-objeto.

código-fonte

Compilador

código-objeto

Link Editor

programa

Montador (Assembler): traduz um programa-fonte em linguagem Assembly,


gerando um programa-objeto.

Compilador: analisa, lê e traduz um programa-fonte, menos os em Assembly,


gerando um programa-objeto, que depois de transformado pelo “Linker” (Link
Editor) poderá ser executado pelo computador.

Interpretador: é parecido com o compilador, só que não gera um programa-


objeto. Nele o programa é traduzido e executado logo após. é um processo mais
demorado, pois interpreta uma linha e executa e assim sucessivamente.

Definições Básicas

As pessoas tendem a acreditar que o raciocínio lógico é fácil de usar, mas se


forem solicitadas a executarem alguma tarefa utilizando o raciocínio lógico se
embaraçarão. Para podemos pensar de maneira lógica é necessário o uso de
fatores como paciência, calma, experiência, criatividade, entre outros.
Existem muitas definições para o raciocínio lógico, uns dizem que é um conjunto
de estudos que visam determinar os processos intelectuais que são as condições
gerais do conhecimento verdadeiro, outros já dizem que é a seqüência coerente,
2
Algoritmos e Programação

regular e necessária de acontecimentos, de coisas ou fatos, ou até mesmo, que é


a maneira do raciocínio particular que cabe a um indivíduo ou a um grupo.
Mas podemos resumir como sendo: uma ciência que estuda as leis e critérios de
validade que regem o pensamento e a demonstração, ou seja, ciência dos
princípios formais do raciocínio.
Na computação ele também é como algoritmo e pode ser definido como sendo
uma seqüência de instruções ou operações básicas, cuja execução, em tempo
finito, resolve um problema computacional.
A seqüência em que são dispostas as instruções depende de como foi definida a
estratégia para a solução do problema.

Técnica Top-Down

Nesta técnica são definidas genericamente as etapas de solução do problema e


em seguida, cada etapa é detalhada, obtendo-se desta forma um refinamento da
solução do problema até chegar a uma seqüência de operações básicas e
definição dos tipos de dados.

início
calcula média Início
verifica situação
imprime situação
fim Média =
(Nota1+Nota2)/2
Descrição de um Algoritmo

Eles podem ser descritos através


Simde pseudo-códigos, fluxogramas ou diagramas
de blocos. Média>= 7 “Aprovado”
Fim
Fluxograma: tem como finalidade descrever o fluxo, especificando os suportes
usados para os dadosNão
e as informações.

Exemplo: Vai para Exame

Nota Exame

Resultado final =
(Média+Nota Exame)/2

Diagrama de Blocos: é utilizado para descrever o método e a seqüência do


processo dos planos em um computador.
Sim
Resultado
Exemplo: “Aprovado”
final >= 5

Não

“Reprovado”

Fim
3
Algoritmos e Programação

Algoritmo:

Exemplo:

algoritmo Calcula média


início
real media, nota1, nota2, exame, final;
media ← (nota1 + nota2)/2;
se (media >= 7)
então “Aprovado”;
senão “Vai para Exame”;
fim se
leia exame;
4
Algoritmos e Programação

final ← (media + exame)/2;


se (final >= 5)
então “Aprovado”;
senão “Reprovado”;
fim se
fim

Estruturas Lógicas de um Algoritmo

São três as estruturas: seqüencial, repetitiva e seletiva, isto é, um algoritmo pode


ser constituído por qualquer combinação dessas três estruturas.

Implementação

É a codificação de um algoritmo em uma linguagem de programação qualquer.

Tipos de Programação

Programação Linear: os programas são executados linha a linha, começando na


1º linha do código, seguindo o fluxo do programa.

Programação Estruturada: o programa é dividido em módulos ou sub-rotinas e


utiliza as estruturas lógicas

Programação Visual (Orientada a Eventos): o programa é dividido em retalhos


(procedimentos ou funções) que respondem a um evento externo iniciado pelo
usuário sobre um objeto. Exemplo: clique do mouse sobre um botão de comando.

Passos para a construção de um Algoritmo


1. Identificar o problema (objetivo) lendo atentamente o enunciado.
2. Retirar do enunciado as “entradas de dados”, ou seja, identificar os dados que
devem ser fornecidos.
3. Retirar do enunciado as “saídas de dados” que devem ser geradas como
resultado da solução.
4. Determinar o que deve ser feito para transformar as “entradas” nas “saídas”
desejadas (processamento). Neste ponto deve ser determinada a seqüência
de ações que levem a solução do problema.
5. Construir o algoritmo, utilizando uma forma de representação.
6. Testar a solução. Execução de todas as ações do algoritmo, seguindo o fluxo
estabelecido para verificar se ele está realmente gerando os resultados
esperados ou detectar possíveis erros em seu desenvolvimento.

Exemplo: Construir um algoritmo para somar 2 números.

Entradas: (O que é preciso?)


Primeiro número;
5
Algoritmos e Programação

Segundo número.

Processamento: (Como chegar ao que quero?)


somar os números.

Saídas: (O que quero?)


números somados.

Exercício A

1. Construir um algoritmo para calcular a média semestral antes do exame.

Resposta:
Entradas: Processamento: Saídas:
nota1 somar as notas e dividir por 2 média semestral antes do exame
nota2

Estrutura Básica de um Algoritmo

algoritmo <nome>
início //início do algoritmo
variáveis //declaração de variáveis
constantes //declaração de constantes
{inicialização de variáveis de controle ou que receberão cálculos}
{solicitação de entrada de dados}
{entrada de dados}
{processamento/cálculos}
{saída de informações e resultados}
fim //final do algoritmo

Tipos de Dados Abstratos

Define qual o tipo de informação entrará ou sairá do programa, por exemplo se


será um número inteiro, uma palavra ou cadeia de caracteres etc.
Os tipos de dados são definidos sem a preocupação de como serão
representados computacionalmente, isto para que não se prendam a uma única
linguagem de programação.

Tipos de Dados: Os tipos de dados em uma linguagem de programação podem


não representar exatamente os tipos de dados abstratos.

Tipos de Dados Abstratos


Inteiro Números inteiros com ou sem sinal
Exemplos: -41, 0, 52
Real Números racionais com ou sem sinal
Exemplos: 13.5, -4.5, 6.023E23, -1.23E-2
Booleano Valores lógicos
6
Algoritmos e Programação

True (verdadeiro) e False (falso)


Representados por T ou 1 e F ou 0 respectivamente
Caracter Caracteres alfanuméricos (letras maiúsculas/minúsculas, algarismos,
(literal) sinais de pontuação e símbolos especiais)
Exemplo: ‘A’, ‘2’, ‘.’, ‘<’

Tipos de Dados Básicos em Linguagem C++


Tipo Bit Bytes Escala
char 8 1 -128 a 127
int 16 2 -32768 a 32768
float 32 4 3.4E-38 a 3.4E+38
double 64 8 1.7E-308 a 1.7E+308
void 0 0 sem valor

Modificadores
long ou long int (4 bytes)
unsigned char (0 a 255)
unsigned int (0 a 65535)
short (2 bytes)

Exercício B

Indique que tipo de dados você usaria para representar as informações abaixo:
a) uma nota;
b) uma idade;
c) um nome;
d) uma letra;
e) um telefone;
f) um CPF;
g) uma data;
h) um ano;
i) um horário.

Constante

É um valor fixo, ou seja, que não se altera durante a execução de um programa,


ela pode ser um número, um valor lógico ou uma cadeia de caracteres, de acordo
com o tipo ela pode ser classificada como numérica, lógica ou literal (caracter).

Constante numérica: é um número com ou sem parte fracionária, negativo ou


positivo, podendo haver parte exponencial.

Exemplos: 25, 3.14, 7.8x103, -15.

Constante lógica: é um valor lógico, podendo ser somente falso ou verdadeiro.

Constante literal: é uma seqüência qualquer de caracteres (letras, dígitos ou


símbolos especiais), elas sempre aparecem entre aspas “ “.
7
Algoritmos e Programação

Exemplos: “José da Silva”, “12345”, “*A!B?-”.

Exercício C

Identificar o tipo de cada uma das constantes abaixo:


j) 21;
k) “Bola”;
l) “Verdadeiro”;
m) 0.21x102;
n) falso;
o) “1520”;
p) verdadeiro;
q) “-2.5x103”;
r) “??Onde??”;
s) 41025.44;

Variáveis

Uma variável corresponde a uma posição de memória, cujo conteúdo pode mudar
ao longo da execução do programa. Toda variável tem um nome também
conhecido como identificador. Por exemplo ax2 + bx + c = 0, o conteúdo dos
identificadores a, b e c podem mudar (variar), por isso são considerados variáveis.
O nome de uma variável pode ser composto de um ou mais caracteres, mas tem
que seguir as regras abaixo:

1. Sempre começar com uma letra;


2. Pode ser formado por letras e números;
3. Pode utilizar o underline “_”;
4. Não pode conter espaços;
5. Não pode utilizar cedilha ou qualquer acentuação;
6. Não pode ser igual as palavras reservadas;

Exemplos:

Identificadores Permitidos Identificadores Não Permitidos


A X5 5B X-Y
Nota A32B E(13) Nota[1]
Matricula F1G3H5 A:B B*D

Declaração de Variáveis

As variáveis só podem armazenar valores de um tipo, sendo também


classificadas como numéricas, lógicas e literais.
Uma vez declarada a variável o valor nela armazenado deve ser do tipo em que
ela foi declarada.

Estrutura da declaração:
8
Algoritmos e Programação

nome-do-tipo é a palavra-chave que indica o tipo de dados associado


às variáveis.

lista-de-identificadores são os nomes escolhidos para as variáveis, e devem ser


separados por vírgula;

Exemplos em pseudocódigo:

a) inteiro NOTA, CODIGO, X5;


b) booleano TESTE, SIM;
c) caracter NOME, END1, END2, F1F2;

Exemplos em C++:

a) int NOTA, CODIGO, X5;


b) char SEXO;

Exercício D

1) Assinalar com X os identificadores válidos:


( ) valor ( ) salario-liquido ( )B248
( ) x2 ( ) Nota*do*Aluno ( )A1B2C3
( ) 3x4 ( ) Maria ( )KM/H
( ) XYZ ( ) Nomedaempresa ( )Sala215
( ) “Nota” ( ) Ah! ( )M{A}

2) Supondo-se que as variáveis NOM, PROF, ID e SALARIO serão utilizadas


para armazenar o nome, profissão, idade e salário de uma pessoa, escrever o
conjunto de declarações necessárias para criar essas variáveis e associar às
mesmas os respectivos tipos.

Operadores

Os operadores aritméticos são usados em cálculos matemáticos.


Os operadores relacionais são usados para fazer comparações.
Os operadores lógicos são usados testes condicionais.

Operadores Aritméticos
Algoritmo Linguagem C++
Atribuição ← =
Adição + +
Subtração - -
Multiplicação * *
Divisão real / /
Divisão inteira div sem equivalente
Resto de divisão mod %
Menos Unário - -
9
Algoritmos e Programação

Operadores Lógicos
Algoritmo Linguagem C++
Conjunção e &&
Disjunção ou ||
Negação não !

Operadores Aritméticos
Algoritmo Linguagem C++
Menor < <
Maior > >
Igual = ==
Diferente ≠ !=
Menor ou igual ≤ <=
Maior ou igual ≥ >=

Palavras Reservadas

Em Pseudocódigo
inteiro se repita início
real então para fim
booleano senão selecione constante
leia escreva imprima registro
caracter enquanto caso

Em C++
asm else _loadds sizeof
auto enum long _ss
break _es _near static
case _export near struct
catch extern new switch
_cdecl _far operator template
cdecl far _pascal this
char float private typedef
class for protected union
const friend public unsigned
continue goto register virtual
_cs huge return void
default if _saveregs volatile
do inline _seg while
double int short
_ds interrupt signed

Pseudocódigo
10
Algoritmos e Programação

Comando leia: recebe o que foi digitado pelo usuário. Utilizado quando
desejamos receber o que foi digitado pelo usuário.

Comando escreva: exibe informações na tela. Utilizado quando desejamos exibir


em tela alguma informação ao usuário, seja ela resultado de um cálculo ou
procedimento, ou ainda uma mensagem.

Exemplos de Algoritmos

1) Dados dois números, calcular a soma dos mesmos.


inicio
inteiro A, B, Soma;
escreva “Digite o valor de A:”;
leia A;
escreva “Digite o valor de B:”;
leia B;
Soma ← A + B;
escreva Soma;
fim

Em C++

#include <iostream.h>
void main()
{
int A, B, Soma;
cout<< “Digite o valor de A:”;
cin>> A;
cout<< “Digite o valor de B:”;
cin>> B;
Soma = A + B;
cout << “A soma e ” << Soma;
}

2) Faça um algoritmo para calcular a área de uma circunferência.


inicio
real A, R;
escreva “Digite o raio da circunferência:”;
leia R;
A ← 3.14159 * (R * R);
escreva A;
fim

Em C++

#include <iostream.h>
void main()
{
float A, R;
cout<< “Digite o raio da circunferência:”;
11
Algoritmos e Programação

cin>> R;
A = 3.14159 * (R * R);
cout<< A;
}

Algumas Definições da Linguagem C++

Os programas em C++ são compostos principalmente por funções, uma ou mais.


A principal delas é a função main().

Estrutura básica de uma função

tipo nome( ) //nome e tipo da função


{ //abertura do corpo do programa
instrução_1; //instruções
instrução_2;
...
instrução_n;
} //fechamento do corpo do programa

Exemplo:
#include <iostream.h>
void main( )
{
cout << “Primeiro Programa”;
}

A Diretiva #include

É utilizada para incluir em nosso código, um outro código-fonte, onde o


processador encontra esta diretiva, ele a substitui pelo conteúdo do arquivo
referenciado.

Exemplos:
#include <iostream.h>
#include “iostream.h”

quando são usadas aspas o compilador procura o arquivo primeiro no diretório


atual se não encontra-lo, procurará no diretório INCLUDE.

Comando cout

O comando é usado para imprimir uma mensagem ou valor na tela, ele sempre
está acompanhado do operador <<.

Exemplo:
cout << “Primeiro Programa”;
12
Algoritmos e Programação

Códigos Especiais Significado


\n Nova linha
\r Retorno do cursor
\t Tab
\b Retrocesso
\” Aspas
\\ Barra
\f Salta página de formulário
\0 Nulo

Comando cin

O comando é usado para ler uma informação digitada no teclado (uma entrada),
ele sempre está acompanhado do operador >>.

Exemplo:
cin >> n;

Exemplos de Programas

1) Programa que imprime mensagem constantes na tela.


#include < iostream.h >
void main( )
{
int evento;
char corrida;
float tempo;
evento = 5;
corrida = ‘C’;
tempo = 27.25;
cout << “O tempo vitorioso na eliminatória ” << corrida;
cout << “ da competição “ << evento << ” foi ” << tempo <<”.”;
}

2) Programa que calcula a conversão de temperaturas em graus Celsius para


Fahrenheit.
#include < iostream.h >
void main( )
{
float F, C;
cout << “Digite a temperatura em graus Celsius:”;
cin >> C;
F = (9 * C + 160) / 5;
cout << “O valor é ” << F;
}

Exercício E

1) Faça um programa que leia uma temperatura em graus Celsius e converta-a


13
Algoritmos e Programação

para graus Fahrenheit. A fórmula de conversão é: F = (9 * C + 160) / 5, sendo


F a temperatura em Fahrenheit e C a temperatura em Celsius.

2) Faça um programa que efetue o cálculo da quantidade de litros de combustível


gastos em uma viagem, utilizando-se um automóvel que faz 12Km por litro.
Para obter o cálculo, o usuário deverá fornecer o tempo gasto e a velocidade
média durante a viagem. Desta forma, será possível obter a distância
percorrida com a fórmula DISTÂNCIA = TEMPO * VELOCIDADE. Tendo o
valor da distância, basta calcular a quantidade de litros utilizados na viagem
com a fórmula LITROS_USADOS = DISTÂNCIA / 12. O algoritmo deverá
apresentar os valores da velocidade média, tempo gasto na viagem, a
distância percorrida e a quantidade de litros gastos.

3) Fazer um programa que leia um número inteiro e apresente o resultado do


quadrado desse número:

4) Fazer um programa que leia dois inteiros e imprima o resultado do quadrado


da diferença do primeiro pelo do segundo.

5) Elaborar um programa que efetue a leitura de 3 valores (A, B e C) e apresente


como resultado final a soma dos quadrados dos três valores lidos.

6) Fazer um programa para calcular e apresentar o valor do volume de uma lata


de óleo, utilizando a fórmula: VOLUME = 3.14159 * (R * R) * ALTURA.

7) Faça um programa que calcule a área de um triângulo. Fórmula: a = (b * c) / 2.

8) Faça um programa que receba o salário de um funcionário, calcule e imprima


o novo salário sabendo-se que este sofreu um aumento de 25%.

Estrutura de Condição

Este tipo de estrutura testa uma condição e de acordo com o resultado do teste
(verdadeiro ou falso) executa uma operação.

Estrutura Condicional Simples

Nesta estrutura há uma única condição, que no caso de ser verdadeira, o


algoritmo executará uma determinada instrução.

inicio
inteiro A, B;
escreva “Digite A:”;
leia A;
escreva “Digite B:”;
leia B;
se (A > B)
então escreva A;
fim se
14
Algoritmos e Programação

fim

Estrutura Condicional Composta

Nesta estrutura há uma única condição, que no caso de ser verdadeira, o


algoritmo executará uma determinada instrução e caso não seja verdadeira, ele
executará uma segunda instrução.

inicio
inteiro A, B;
escreva “Digite A:”;
leia A;
escreva “Digite B:”;
leia B;
se (A > B)
então escreva A;
senão escreva B;
fim se
fim

Estrutura Condicional Encadeada

Nesta estrutura há no mínimo duas condições, no caso da primeira ser


verdadeira, o algoritmo executará uma determinada instrução, caso não seja ele
testará a segunda condição que se for verdadeira ele executará uma segunda
instrução, caso não seja ele pode encerrar o processo ou se houver uma terceira
condição ele irá testá-la e assim sucessivamente.

inicio
real salario, novo_salario;
escreva “Digite salario:”;
leia salario;
se (salario < 500)
então novo_salario ← salario * 1.15;
senão se (salario <= 1000)
então novo_salario ← salario * 1.10;
senão novo_salario ← salario * 1.05;
fim se
fim se
fim

Estrutura Condicional com Uso de Operadores Lógicos

Nesta caso podemos utilizar qualquer uma das estruturas citadas anteriormente,
mas iremos ter o uso de operadores lógicos que auxiliam na composição da
condição.

inicio
inteiro A, B, C;
escreva “Digite A:”;
15
Algoritmos e Programação

leia A;
escreva “Digite B:”;
leia B;
escreva “Digite C:”;
leia C;
se (A > B) e (B < C)
então escreva B;
fim se
fim

Operador Lógico E
Condição 1 Condição 2 Resultado
falsa falsa falsa
verdadeira falsa falsa
falsa verdadeira falsa
verdadeira verdadeira verdadeira

Operador Lógico OU
Condição 1 Condição 2 Resultado
falsa falsa falsa
verdadeira falsa verdadeira
falsa verdadeira verdadeira
verdadeira verdadeira verdadeira

Operador Lógico NÃO


Condição Resultado
falsa verdadeira
verdadeira falsa

Exemplo do uso de NÃO:

se não (x > 5)
então C ← (A + B) * X;
senão C ← (A - B) * X;;
fim se

Exercício F

1) Determine o resultado lógico das expressões mencionadas, assinalando se


são verdadeiras ou falsas. Considere para as respostas os seguintes valores:
X = 1, A = 3, B = 5, C = 8 e D = 7.

a) não (X > 3) V( ) F( )
b) (X < 1) e não (B > D) V( ) F( )
c) não (D < 0) e (C > 5) V( ) F( )
d) não (X > 3) ou (C < 7) V( ) F( )
e) (A > B) ou (C > B) V( ) F( )
f) (X >= 2) V( ) F( )
g) (X < 1) e (B >= D) V( ) F( )
16
Algoritmos e Programação

h) (D < 0) ou (C > 5) V( ) F( )
i) não (D > 3) ou não (B < 7) V( ) F( )
j) (A > B) ou não (C > B) V( ) F( )

Estruturas Condicionais em C

Estrutura if

Esta estrutura é equivale à estrutura se em pseudocódigo.

if (condição)
instrução;

Exemplos:

#include <iostream.h>
#include <conio.h>
void main( )
{
char ch;
ch = getche( );
if (ch == ‘p’)
cout << “Você pressionou a tecla p.”;
}

#include <iostream.h>
#include <conio.h>
void main( )
{
if (getche( ) == ‘p’)
{
cout << “Você pressionou a tecla p.”;
cout << “Pressione qualquer tecla para terminar.”;
getche( );
}
}

Estrutura if-else

Esta estrutura é equivale à estrutura se-então-senão em pseudocódigo.

if (condição)
instrução_1;
else
instrução_2;

Exemplos:

#include <iostream.h>
17
Algoritmos e Programação

#include <conio.h>
void main( )
{
char ch;
ch = getche( );
if (ch == ‘p’)
cout << “Você pressionou a tecla p.”;
else
cout << “Você não pressionou a tecla p.”;
}

#include <iostream.h>
#include <conio.h>
void main( )
{
if (getche( ) == ‘p’)
{
cout << “Você pressionou a tecla p.”;
cout << “Pressione qualquer tecla para terminar.”;
getche( );
}
else
{
cout << “Você não pressionou a tecla p.”;
cout << “Pressione qualquer tecla para terminar.”;
getche( );
}
}

Estrutura if-else Encadeados

Esta estrutura é equivale à estrutura se-então-senão se em pseudocódigo.

if (condição_1)
instrução_1;
else if (condição_2)
instrução_2;
else
instrução_3;

Exemplos:

#include <iostream.h>
#include <conio.h>
void main( )
{
char ch;
ch = getche( );
if (ch == ‘p’)
18
Algoritmos e Programação

printf(“Você pressionou a tecla p.”);


else if (ch == ‘r’)
cout << “Você pressionou a tecla p.”;
else
cout << “Você não pressionou nem a tecla p e nem a r.”;
}

#include <iostream.h>
#include <conio.h>
void main( )
{
if (getche( ) == ‘p’)
{
cout << “Você pressionou a tecla p.”;
cout << “Pressione qualquer tecla para terminar.”;
getche( );
}
else if (getche( ) == ‘r’)
{
cout << “Você pressionou a tecla r.”;
cout << “Pressione qualquer tecla para terminar.”;
getche( );
}
else
{
cout << “Você não pressionou nem a tecla p e nem a r.”;
cout << “Pressione qualquer tecla para terminar.”;
getche( );
}
}

Exercício G

Façam em pseudocódigo e linguagem C++:

1) Elaborar um programa que efetue a leitura de um determinado valor, e


apresentá-lo caso não seja maior que 3.

2) Dados dois números verifique qual é o maior e imprima-o.

3) Faça um algoritmo que calcule a média das notas de dois alunos e imprima a
maior delas. Considerando que cada aluno possui três notas.

4) Faça um algoritmo que leia dois números e apresente a diferença do maior


pelo menor.

5) Faça um algoritmo que efetue a leitura de um valor inteiro positivo ou negativo


e apresente o número lido como sendo um valor positivo, ou seja, o programa
deverá apresentar o módulo de um número fornecido. Lembre-se de verificar
se o número fornecido é menor que zero, sendo, multiplique-o por –1.
19
Algoritmos e Programação

6) Faça um algoritmo para:


a) Ler um número inteiro qualquer, no caso o número N;
b) Calcular o resto da divisão de N por 4, e armazenar na variável R4;
c) Calcular o resto da divisão de N por 5, e armazenar na variável R5
d) Verificar se ambas as variáveis possuem o valor zero, se sim apresentar a
variável N, se não, apresentar a mensagem “Não é divisível por 4 e 5”;

Exercício H

Façam em pseudocódigo e linguagem C++:

1) Faça um algoritmo que leia valores referentes a quatro notas escolares de um


aluno e escreva uma mensagem dizendo que o aluno foi aprovado, se o valor
da média for maior ou igual a 7. Se o valor for menor que 7, solicitar a nota de
exame, somar com o valor da média e obter nova média. Se a nova média for
maior ou igual a 5, escrever uma mensagem informando que o aluno foi
aprovado em exame. Se for menos escrever uma mensagem informando que
o aluno não foi aprovado. Apresentar junto com as mensagens o valor da
média do aluno.

2) Efetuar a leitura de quatro números inteiros e apresentar os números que são


divisíveis por 2 e 3.

3) Fazer um algoritmo que leia um número inteiro e apresentar uma mensagem


informando se o número é par ou ímpar.

Operador Condicional Ternário “?”

Este operador tem função muito parecida com a do if-else mas o seu
resultado é atribuído a uma variável.

resp = condição ? instrução_1 : instrução_2;

Exemplos:
1) max = (num1 > num2) ? num1: num2;

equivale a

if (num1 > num2)


max = num1;
else
max = num2;

2) abs = (num < 0) ? –num: num;

equivale a

if (num < 0)
20
Algoritmos e Programação

abs = - num;
else
abs = num;

Observação: este tipo de operador melhora a eficiência do algoritmo.

Exercício I

1) Refaça os exercícios G-2, G-3, G-4, G5, H-3 utilizando no lugar do if o


operador Ternário (fazer somente em C++).

Estrutura selecione

Esta estrutura é muito parecida com se-então, mas o segundo permite


apenas duas alternativas de execução para cada condição, enquanto o primeiro
oferece a possibilidade de escolher entre várias alternativas com uma única
condição. Vejamos sua estrutura para entender melhor.

selecione (expressão constante)


caso constante 1:
instruções;
caso constante 2:
instruções;
...
padrão:
instruções;
fim selecione

Exemplo: Calculadora com 4 operações.

inicio
real num1, num2;
caracter op;
escreva “Digite um número, operador, número”;
leia num1, op, num2;
selecione (op)
caso ‘+’:
escreva “ = ”, num1 + num2;
quebra;
caso ‘-’:
escreva “ = ”, num1 - num2;
quebra;
caso ‘*’:
escreva “ = ”, num1 * num2;
quebra;
caso ‘/’:
escreva “ = ”, num1 / num2;
quebra;
padrão:
21
Algoritmos e Programação

escreva “Operador desconhecido!”;


fim selecione
}

Em C++

switch (expressão constante)


{
case constante 1:
instruções;
case constante 2:
instruções;
...
default:
instruções;
}

Exemplo: Calculadora com 4 operações.

#include <iostream.h>
#include <conio.h>
void main( )
{
float num1, num2;
char op;
cout << “Digite um número, operador, número” << endl;
cin >> num1, op, num2;
switch (op)
{
case ‘+’:
cout << “ = ” << num1 + num2;
break;
case ‘-’:
cout << “ = ” << num1 - num2;
break;
case ‘*’:
cout << “ =” << num1 * num2;
break;
case ‘/’:
cout << “ = ” << num1 / num2);
break;
default:
cout << “Operador desconhecido!”;
}
getch( );
}
Comando quebra
22
Algoritmos e Programação

Este comando é utilizado para provocar a saída do switch. Se este


comando não for utilizado o programa executará as instruções seguintes.

Exemplo: Calculadora com 4 operações sem o comando quebra.

inicio
real num1, num2;
caracter op;
escreva “Digite um número, operador, número”;
leia num1, op, num2;
selecione (op)
caso ‘+’:
escreva “ = ”, num1 + num2;
quebra;
caso ‘-’:
escreva “ = ”, num1 - num2;
quebra;
caso ‘*’:
caso ‘x’:
escreva “ = ”, num1 * num2;
quebra;
caso ‘/’:
caso ‘\’:
escreva “ = ”, num1 / num2;
quebra;
padrão:
escreva “Operador desconhecido!”;
fim selecione
}

Em C++

Exemplo: Calculadora com 4 operações sem o comando break.

#include <iostream.h>
#include <conio.h>
void main( )
{
float num1, num2;
char op;
cout << “Digite um número, operador, número” << endl;
cin >> num1, op, num2;
switch (op)
{
case ‘+’:
cout << “ = ” << num1 + num2;
break;
case ‘-’:
cout << “ = ” << num1 - num2;
break;
23
Algoritmos e Programação

case ‘*’:
case ‘x’:
cout << “ =” << num1 * num2;
break;
case ‘/’:
case ‘\\’:
cout << “ = ” << num1 / num2);
break;
default:
cout << “Operador desconhecido!”;
}
getch( );
}

Exercício O

1) Escreva um programa que pergunte ao usuário com qual velocidade costuma


dirigir seu carro e imprima a resposta que o guarda de trânsito daria de acordo
com a velocidade conforme definido na tabela abaixo.

75 km/h “Você está acima da velocidade máxima permitida.”


65 km/h “Você está acima da velocidade máxima permitida.”
55 km/h “Você está na velocidade máxima permitida.”
45 km/h “Você está abaixo da velocidade máxima permitida.”
24
Algoritmos e Programação

Estruturas de Repetição

Estrutura enquanto-repita

enquanto <condição> repita


<bloco>
fim enquanto

Nesta estrutura, <bloco> só será executado se <condição> for verdadeira. Dentro


de <bloco> deve haver uma instrução que altere <condição> senão <bloco> será
executado infinitamente (loop).

Exemplo: Calcular os quadrados de uma lista de números inteiros positivos,


enquanto eles forem maiores que zero.
inicio
inteiro A, t;
escreva “Digite A:”;
leia A;
enquanto (A > 0) repita
t ← A * A;
escreva t;
escreva “Digite A:”;
leia A;
fim enquanto
fim

Outro exemplo: Faça um algoritmo que leia 5 números e os multiplique por três
exibindo o resultado de cada multiplicação.
inicio
inteiro X, R, cont;
cont ← 1;
enquanto (cont <= 5) repita
escreva “Digite X:”;
leia X;
R ← X * 3;
escreva R;
cont ← cont + 1;
fim enquanto
fim

Laço while

while (condição)
instrução;

Exemplo: Imprime números de 0 a 9.


#include <iostream.h>
void main( )
{
int conta = 0;
25
Algoritmos e Programação

while (conta < 10)


{
cout << “conta = ” << conta;
conta++;
}
}

Exemplo: Conta caracteres de uma frase.


#include <iostream.h>
void main( )
{
int cont = 0;
cout << “Digite uma frase: \n”;
while (getche( ) != ‘\r’)
cont++;
cout << “\n O numero de caracteres e ” << cont;
}

Exemplo: Conta caracteres de uma frase e dá a alternativa de contar nova frase.


#include <iostream.h>
void main( )
{
int cont = 0;
char ch = ‘S’;
while (ch == ‘S’)
{
cout << “Digite uma frase: \n”;
while (getche( ) != ‘\r’)
cont++;
cout << “\n O numero de caracteres e ” << cont;
cout << “\n Deseja contar os caracteres de outra frase?”;
ch = getche( );
}
}

Exercício J

1) Construir um algoritmo que calcule a média aritmética de vários valores


inteiros positivos, lidos externamente. O final da leitura acontecerá quando for
lido um valor negativo.

2) Faça um programa, utilizando um laço while, que solicite ao usuário caracteres


e imprima seus códigos decimais. O programa deve terminar quando o usuário
pressionar a tecla <Enter>.

Estrutura repita-enquanto

repita
<bloco>
enquanto <condição>
26
Algoritmos e Programação

Nesta estrutura, <bloco> é executado uma vez e após a execução se <condição>


for verdadeira ela executará <bloco> outra vez e assim sucessivamente até que
<condição> seja falsa.

Exemplo: Calcular os quadrados de uma lista de números inteiros positivos,


enquanto eles forem maiores que zero.
inicio
inteiro A, t;
repita
escreva “Digite A:”;
leia A;
t ← A * A;
escreva t;
enquanto (A > 0)
fim

Outro exemplo: Faça um algoritmo que leia 5 números e os multiplique por três
exibindo o resultado de cada multiplicação.
inicio
inteiro X, R, cont;
cont ← 1;
repita
escreva “Digite X:”;
leia X;
R ← X * 3;
escreva R;
cont ← cont + 1;
enquanto (cont <= 5)
fim

Funções getche( ) e getch( )

As duas funções lêem o caracter do teclado e diferente do cout não


esperam pelo <enter> para finalizar a função, a diferença entre elas é que a
getch( ) lê e guarda o caracter sem exibi-lo na tela e a getche( ) exibe.

Exemplos:
#include <iostream.h>
void main( )
{
char ch;
cout << “Digite algum caracter:”;
ch = getche( );
cout << “\nA tecla que você pressionou é ” << ch;
}

#include <iostream.h>
void main( )
{
27
Algoritmos e Programação

char ch;
cout << “Digite algum caracter:”;
ch = getch( );
cout << “\nA tecla que você pressionou é ” << ch;
}

Laço do-while

Este laço tem a mesma função do laço while, a diferença entre eles é que neste é
possível executar pelo menos uma vez as instruções, por que nele a condição é
verificada somente no final, ou seja, quando temos um caso em que precisamos
executar instruções pelo menos uma vez é que o utilizamos. Ele equivale a
estrutura repita-enquanto do algoritmo.

do
{
instrução;
} while (condição);

Exemplo: Conta caracteres de uma frase e dá a alternativa de contar nova frase.


#include <iostream.h>
void main( )
{
int cont = 0;
char ch;
do
{
cout << “Digite uma frase: \n”;
while (getche( ) != ‘\r’)
cont++;
cout << “\n O numero de caracteres e ” << cont;
cout << “\n Deseja contar os caracteres de outra frase?”;
ch = getche( );
} while (ch == ‘S’);
}

Exemplo: Calculadora com 4 operações.


#include <iostream.h>
void main()
{
float num1, num2;
char op, ch;
do
{
cout >> "Digite um numero, operador, numero \n";
cin >> num1 << op << num2;
switch (op)
{
case '+':
cout << " = " << num1 + num2;
28
Algoritmos e Programação

break;
case '-':
cout << " = " << num1 - num2;
break;
case '*':
case 'x':
cout << " = " << num1 * num2;
break;
case '/':
case '\\':
cout << " = " << num1 / num2;
break;
default:
cout << "Operador Invalido";
}
cout << “Deseja fazer novo cálculo? ”;
ch = getche( );
} while (ch == ‘S’ || ch == ‘s’);
getch();
}

Exercício K

3) Faça um algoritmo que leia o ano de nascimento de uma pessoa e escreva a


idade dela em anos. Depois do cálculo pergunte se deseja calcular outra
idade, se sim reinicie o laço se não encerre o programa.

4) Faça um programa que solicite um número inteiro de até 4 dígitos ao usuário e


inverta a ordem de seus algarismos. Coloque no programa, utilizando um laço
do-while, a opção do usuário digitar um novo número para inverter.

Estrutura com variável de controle – para-até-repita

para i = 1 até n repita


<bloco>
fim para

Nesta estrutura, <bloco> será executado de 1à n vezes, ou seja, a variável i


funciona como controle, ela é iniciada em 1 e chegará a atingir um valor n,
enquanto isso não acontecer ela executará as instruções do <bloco>.

Exemplo: Dado um número n, calcular a soma dos n primeiros números pares.


inicio
inteiro n, s, i;
escreva “Digite N:”;
leia n;
s ← 0;
para (i = 0; i < n; i ← i + 1)
se (i mod 2 = 0)
então s ← s + i;
29
Algoritmos e Programação

fim se
fim para
escreva “A soma é: ”, s;
fim

Outro exemplo: Faça um algoritmo que leia 5 números e os multiplique por três
exibindo o resultado de cada multiplicação.
inicio
inteiro X, R, cont;
para (cont = 0; cont < 5; cont ← cont + 1)
escreva “Digite X:”;
leia X;
R ← X * 3;
escreva R;
cont ← cont + 1;
fim para
fim

Operadores de Incremento (++) e Decremento (--)

++ incrementa de 1 seu operando


-- decrementa de 1 seu operando

Exemplos:
i++ eqüivale a i = i + 1
i-- eqüivale a i = i - 1

Estes operadores têm duas formas de serem usados: a pré-fixada e a pós-fixada.

Pré-fixada = ++i ou - - i
Pós-fixada = i++ ou i - -

Na pré-fixada primeiro a variável i é incrementada/decrementada depois ela é


usada e na pós-fixada primeiro a variável é usada e depois incrementada/
decrementada.

Exemplo de pós-fixada:
#include <iostream.h>
void main( )
{
int n, x;
n = 5;
x = n++;
cout << “x = “ << x << “, n = ” << n;
}

Saída: x = 5 n = 6

Exemplo de pré-fixada:
#include <iostream.h>
30
Algoritmos e Programação

void main( )
{
int n, x;
n = 5;
x = ++n;
cout << “x =” << x << “, n = “ << n;
}

Saída: x = 6 n = 6

Outros exemplos:
K = 3 * n++;
K = 3 * ++n;

Importante: estes operadores só podem ser usados com variáveis e não com
constantes ou expressões.

Operadores Aritméticos de Atribuição +=, -=, *=, /=, %=

X op= exp;

Se X é uma variável, exp uma expressão e op um operador aritmético (+, -, *, / ou


%) a expressão acima equivale a:

X = (X) op (exp);

Exemplos:
i += 2; equivale a i = i + 2;
x *= y + 1; equivale a x = x * (y + 1);
t /= 2.5; equivale a t = t / 2.5;
p %= 5; equivale a p = p % 5;
d -= 3; equivale a d = d - 3;

Exemplo:
#include <iostream.h>
void main( )
{
int total = 0, cont = 10;
cout << “Total = ” << total << endl;
total += cont;
cout << “Total = ” << total <<endl;
total += cont;
cout << “Total = “ << total;
}

Laço for

for (inicialização; teste; incremento)


instrução;
31
Algoritmos e Programação

Exemplo: Imprime números de 0 a 9.


#include <iostream.h>
void main( )
{
int conta;
for (conta = 0; conta < 10; conta++)
cout << “conta = ” << conta << endl;
}

Exemplo: Imprime números de 9 a 0.


#include <iostream.h>
void main( )
{
int conta;
for (conta = 9; conta >= 0; conta--)
cout << “conta = ” << conta << endl;
}

Exemplo: Imprime números de 0 a 9 pulando de três em três.


#include <iostream.h>
void main( )
{
int conta;
for (conta = 0; conta < 10; conta += 3)
cout << “conta = ” << conta << endl;
}

Exemplo: Soma e exibe os números de 0 a 9, mostrando as parciais da soma.


#include <iostream.h>
void main( )
{
int conta, total;
for (conta = 0, total = 0; conta < 10; conta++)
{
total += conta;
cout << “conta = ” << conta << “, total = ” << total << endl;
}
}

Exemplo: Imprime a soma de x + y enquanto esta soma for menor que 100.
#include <iostream.h>
void main( )
{
int x, y;
for (x = 0, y = 0; x + y < 100; x++, y++)
cout << x + y << endl;
}

Exercício L
32
Algoritmos e Programação

5) Faça um algoritmo que calcule e apresente a média de 10 alunos,


considerando que cada aluno tenha 2 notas.

6) Faça um algoritmo que calcule o seguinte somatório, onde A e B devem ser


fornecidos pelo usuário.

7) Faça um algoritmo que calcule o fatorial de um número N recebido via teclado.


N! = N*(N-1)* (N-2)* (N-3)...
0! = 1 e 1! = 1
N pertence aos naturais (0 a 9)

Exemplos:
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6
4! = 4 * 3 * 2 * 1 = 24
5! = 5 * 4 * 3 * 2 * 1 = 120

8) Faça um algoritmo que leia n e calcule os valores da seguinte seqüência:


S = 1, 2, 4, 8, 16, ..., n
S=i+i

9) Faça um algoritmo que calcule a tabuada de multiplicação de um número


fornecido pelo usuário. Exiba no seguinte formato n x i = r.

10)Dado um número real X e um número natural N, calcule e escreva o valor de


xn.

11)Faça um programa que leia 5 valores para A, um de cada vez, e conte quantos
deles são negativos, escrevendo esta informação.

12)Dado um número N, escreva todos os ímpares menores que N e maiores que


0, para n = 10 deverão ser exibidos os ímpares: 1, 3, 5, 7e 9.

13)Faça um programa para calcular o somatório dos pares de 0 a 100.

14)Dada um relação de 200 números, leia os mesmos e informe quantos deles


são pares e ímpares.

15)Escreva um programa usando o laço for que imprima os caracteres da tabela


ASCII de 32 a 255 decimal. O programa deve imprimir cada caracter, seu
código decimal e seu código hexadecimal.

16)Escreva um programa usando o laço for que imprima o quadrado de todos os


inteiros de 1 a 20.
33
Algoritmos e Programação

Estruturas de Dados Homogêneas (Vetores e Matrizes)

Vetor

É o agrupamento de várias informações, de mesmo tipo de dados, dentro de uma


mesma variável. Os vetores são chamados também de matrizes unidimensionais.

nome tamanh
da o do

inteiro V[10]; índic


e

0 1 2 3 4 5 6 7 8 9
V 45 32 66 2 0 12 5 77 31 10
Nome da Conteúd
variável o

Durante a execução do programa temos duas formas de atribuir valores aos


vetores, a primeira delas é logo após a declaração, por exemplo:

Atribui duas notas e calcula a média.

inicio
real nota[2], media;
nota[ 0 ] = 5.0;
nota[ 1 ] = 7.0;
media ← (nota[0] + nota[1])/2;
escreva “A media e ”, media;
fim

A outra maneira é utilizando um laço, onde utilizamos um índice para indicar que
elemento do vetor estamos acessando, por exemplo:

Recebe duas notas e calcula a média.


inicio
real media, nota[2];
inteiro i;
para (i ← 0; i < 2; i ← i+1)
escreva “Digite a nota”, i+1;
leia nota[ i ];
fim para
media ← (nota[0] + nota[1])/2;
escreva “A media e ”, media;
fim

Carrega um vetor de 10 posições com o valores de notas.


34
Algoritmos e Programação

inicio
real nota[10];
inteiro i;
para (i ← 0; i < 10; i ← i+1)
escreva “Digite a nota:”;
leia nota[ i ];
fim para
fim
Outro exemplo: Faça um algoritmo que leia 100 números, depois receba um
número qualquer e verifique se ele existe entre os 100 anteriores e imprima a(s)
posição(ões) onde ele aparece dentro do vetor.

inicio
inteiro N[100], i, comp;
para (i ← 0; i<100; i ← i + 1)
escreva “Digite o numero”, i+1;
leia N[ i ];
fim para
escreva “Digite um numero para localizar”;
leia comp;
para (i ← 0; i<100; i ← i + 1)
se (N[ i ] = comp)
escreva i;
fim se
fim para
fim

Composição de Vetores

0 1 2 3 4 5 6 7 8 9
peso 46.5 66.1 99.1 33.1 14.2 13.0 67.5 58.8 48.0 54.1

0 1 2 3 4 5 6 7 8 9
idade 27 28 15 12 64 13 20 34 28 44

Cadastro de Produtos

0 1 2 3 4 5 6 7 8 9
codig
o

0 1 2 3 4 5 6 7 8 9
preco
35
Algoritmos e Programação

0 1 2 3 4 5 6 7 8 9
quant

inicio
real preco[10];
inteiro codigo[10], i, quant[10];
escreva “Cadastro de produtos”;
para (i ← 0; i<10; i ← i + 1)
escreva “Digite o codigo: ”;
leia codigo[ i ];
escreva “Digite o preco: ”;
leia preco[ i ];
escreva “Digite a quantidade: ”;
leia quant[ i ];
fim para
escreva “Os valores em estoque por produto são:”;
para (i ← 0; i<10; i ← i + 1)
escreva preco[ i ] * quant[ i ];
fim para
fim

Em C++

Exemplos: Atribui duas notas e calcula a média.

#include <iostream.h>
void main()
{
float nota[2], media;
nota[ 0 ] = 5.0;
nota[ 1 ] = 7.0;
media = (nota[0] + nota[1])/2;
cout << “A media e ” << media;
}

Recebe duas notas e calcula a média.

#include <iostream.h>
void main()
{
float nota[2], media;
int i;
for (i=0; i < 2; i++)
{
cout << “Digite a nota ” << i+1;
cin >> nota[ i ];
}
media = (nota[0] + nota[1])/2;
36
Algoritmos e Programação

cout << “A media e ” << media;


}

Carrega um vetor de 10 posições com o valores de notas.


#include <iostream.h>
void main()
{
float nota[10];
int i;
for (i=0; i < 10; i++)
{
cout << “Digite a nota ”;
cin >> nota[ i ];
}
}

Outro exemplo: Faça um algoritmo que leia 100 números, depois receba um
número qualquer e verifique se ele existe entre os 100 anteriores e imprima a(s)
posição(ões) onde ele aparece dentro do vetor.

#include <iostream.h>
void main()
{
int N[100], i, comp;
for (i=0; i<100; i++)
{
cout << “Digite o numero”;
cin >> N[ i ];
}
cout << “Digite um numero para localizar”;
cin >> comp;
for (i=0; i<100; i++)
if (N[ i ] == comp)
cout << i;
}

Exercício M

1) Faça um algoritmo que calcule a média de 10 alunos, considerando que cada


aluno tenha 2 notas. As médias devem ser armazenadas em um vetor de 10
posições.

2) Faça um algoritmo que leia 50 elementos em um vetor e apresente-os.

3) Elabore um algoritmo que contenha um vetor A de 10 valores inteiros e leia


esses valores a partir do teclado, depois calcule o dobro do valor dos
elementos de índices pares e exiba esta informação.

4) Construa um algoritmo leia em um vetor de 5 valores inteiros e apresente a


soma de todos os elementos lidos.
37
Algoritmos e Programação

5) Faça um algoritmo que contenha dois vetores de 15 elementos e leia os


valores, depois guarde no segundo o resultado da multiplicação do primeiro
por 3, apresente os resultados.

6) Faça um programa que lê um vetor A[6] e o escreve. Conte, a seguir, quantos


valores de A são negativos e escreva esta informação.

7) Escrever um programa que lê um vetor B[30] e o escreve. Substitua, a seguir,


todos os valores pares de B por 1 e escreva novamente o vetor B.

Você também pode gostar