Aproximando-se da maneira pela qual o computador

Propaganda
CONSTRUÇÃO DE ALGORITMOS E PROGRAMAS
 O computador é capaz de manipular e armazenar uma grande quantidade de dados
ou informações com alto desempenho, liberando o homem para outras tarefas nas
quais o seu conhecimento é indispensável.
 A informação é a matéria-prima que faz com que seja necessária a existência dos
computadores.
 A Informática é a ciência que estuda a informação e suas aplicações.
Informação
INFORMÁTICA
COMPUTADOR
Automática
TIPOS BÁSICOS DE DADOS (OU TIPOS PRIMITIVOS)
Aproximando-se da maneira pela qual o computador manipula as informações, quatro
tipos primitivos de dados podem ser definidos:
 Inteiro: toda e qualquer informação númérica que pertença ao conjunto dos números
Inteiros (...-3, -2, -1, 0, 1, 2, 3, ...);
Exemplos:
a-) Ele tem 15 irmãos;
b-) A temperatura desta noite será de –2 graus;
 Real: toda e qualquer informação numérica que pertença ao conjunto dos números
Reais (-, +);
Exemplos:
a-) Ela tem 2,05 metros de altura;
b-) Meu saldo bancário é de -211,87 Reais;
 Caractere: toda e qualquer informação composta por um conjunto de caracteres
alfanuméricos (0...9) e/ou especiais (por exemplo: # $ % & * ? ~ < ! @);
Exemplos:
a-) Constava na prova: “Use somente caneta !!”;
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
22
b-) O parque estava repleto de placas: “Não pise na grama.”;
 Lógico: toda e qualquer informação que pode apenas assumir duas situações
(biestável);
Exemplos:
a-) A porta pode estar aberta ou fechada.
b-) A lâmpada pode estar acessa ou apagada.
A Linguagem de Programação C++ possui os seguintes tipos básicos de dados:

char

int

float

double

void
Tipo
Descrição
char
Espaço que
ocupa na memória
equivale ao tipo caractere
1 byte
int
equivale ao tipo inteiro
2 bytes
float
equivale ao tipo real
4 bytes
double
void
equivale ao tipo real, mas
possui uma escala maior que a
do tipo float
8 bytes
tipo nenhum
0 bytes
Faixa
-128 a 127
(incluindo letras e
símbolos)
-32768
a
32767
3.4E-38
a
3.4E+38
1.7E-308
a
1.7E+308
nenhum valor
Com exceção do tipo void, os tipos básicos de dados podem ser acompanhados por
modificadores. Os modificadores de tipo oferecidos em C++ são:
-
long (mais longo, escala maior)
short (mais curto, escala menor)
unsigned (sem sinal, somente valores positivos)
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
23
Um modificador de tipo pode ser utilizado sem que seja especificado o tipo do dado.
Quando isso é feito, o compilador assume, por default, que o tipo é int.
A tabela a seguir mostra as características dos modificadores em C++:
Tipo
unsigned char
unsigned
short
Descrição
Espaço que
ocupa na memória
equivale ao tipo char
considerando apenas
valores positivos
1 byte
equivale ao tipo int
considerando apenas
valores positivos
2 bytes
equivale ao tipo int
2 bytes
long
unsigned long
long double
equivale ao tipo int ou
short, mas com uma
escala maior
equivale ao tipo long
considerando apenas
valores positivos
equivale ao tipo
double, mas com uma
escala maior
4 bytes
4 bytes
10 bytes
Faixa
0
a
255
0
a
65535
-32768
a
32767
-2147483648
a
2147483647
0
a
4294967295
3.4E-4932
a
1.1E+4932
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
24
VARIÁVEIS
Uma informação é classificada como variável quando tem a possibilidade de ser alterada
ao longo do tempo.
Em um programa de computador cada variável corresponde uma posição de memória,
cujo conteúdo pode variar no decorrer do tempo de execução do programa.
Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a
cada instante.
Toda variável é identificada por um nome ou identificador.
Exemplo: Num algoritmo ou programa para cálculo das raízes de uma equação de 2o grau
(ax2 + bx + c = 0), os identificadores a, b e c podem representar as posições de memória
que armazenam os coeficientes (a, b e c) da equação, fazendo neste caso o papel das
variáveis.
FORMAÇÃO DOS IDENTIFICADORES (NOMES DAS VARIÁVEIS)
Como na memória de um computador podem existir inúmeras variáveis, é necessário
então diferenciá-las. Isto é feito por meio de identificadores.
Na maioria das linguagens de programação, inclusive na linguagem C++, um identificador
ou um nome de uma variável é formado por um ou mais caracteres, sendo que:
 o primeiro caractere é uma letra ou travessão ( _ );
 os outros caracteres podem ser letras, algarismos ou travessão ( _ ).
Exemplos:
a-) Nomes válidos:
L
a de op1 V9a
Lista_Notas
a_2 p56 A1 _2A
b-) Nomes Inválidos:
x+
t.6 43x &ah
$dolar
Lista-Notas
n! %p
Em C++, letras maiúsculas e minúsculas são diferentes. Os seguintes nomes são
distintos:
PESO
Peso
peso
peSo
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
25
Uma variável não pode ter o mesmo nome de uma palavra-chave de C++, como por
exemplo:
main cout cin float
char short return case void
DECLARAÇÃO DE VARIÁVEIS
As variáveis só podem armazenar informações ou dados sempre de um mesmo tipo
(inteiro, real, caractere ou char).
Para indicar o tipo de uma ou mais variáveis é usada a declaração de variáveis.
Na linguagem C++, a declaração de variáveis obedece a seguinte sintaxe:
<tipo><nome>;
Consiste no nome de um tipo, seguido do nome da variável, seguido de ponto-e-vírgula.
O tipo da variável pode ser um daqueles tipos básicos de dados ou tipos primitivos vistos
anteriormente (int, char, float, double, bool, ...).
Exemplos: (declaração de variáveis em C++)
int a;
float soma;
char nome;
double x;
unsigned b;
long double valor;
Se tivermos mais de uma variável do mesmo tipo, elas podem ser declaradas de uma
única vez, separando seus nomes por vírgulas.
Exemplos:
int a, b, c;
float divisao, soma, produto;
char nome1, nome2, nome3;
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
26
É importante não esquecer que quando se declara uma variável, um espaço num
determinado endereço na memória é alocado para armazenar um dado que
obrigatoriamente tem que ser do mesmo tipo que o da variável.
a
int a; float x;
MEMÓRIA
espaço alocado para
armazenar somente
valores inteiros
x
espaço alocado para
armazenar somente
valores reais
Em C++, toda e qualquer variável deve ser declarada e sua declaração deve ser feita
antes de sua utilização no programa.
Uma variável em C++, pode ser declarada em qualquer lugar do programa.
Convencionalmente, os nomes das variáveis (identificadores) são sempre definidos
com letras minúsculas.
Exemplo: (programa em C++ com declarações de variáveis)
# include <iostream.h>
# include <conio.h>
int a,b; // declaração de variáveis
main()
{
int soma; // declaração de variável
cout<<"Forneca dois valores: \n";
cin>>a>>b;
soma = a + b;
cout<<"A soma e: "<< soma;
char letra1, letra2; // declaração de variáveis
cout<<”Digite duas letras:\n”;
cin>>letra1>>letra2;
float produto; double quadrado; // declarações de variáveis
produto = a * b;
quadrado = a * a ;
}
Observação: Geralmente, as declarações de todas as variáveis são feitas no início da
parte principal do programa (dentro do main()), logo depois da abertura de chave ({).
CONSTANTES
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
27
Uma constante é um determinado valor fixo que não se modifica ao longo do tempo,
durante a execução de um programa.
Um constante pode ser um número, um valor lógico ou uma seqüência de caracteres
quaisquer com algum significado para o problema em estudo.
A declaração de constantes em C++ pode ser feita de duas maneiras:
1-) Usando a diretiva define:
# define <nome_da_constante> <valor>
2-) Usando o qualificador const:
const <tipo_da_constante><nome_da constante> = <valor>;
Exemplos:
#define PI 3.1415
const float PI = 3.1415;
#define AVISO “Pare !!”
const double MAX = 32767;
#define MAX 32767
É importante lembrar que o valor de uma constante não muda durante a execução de um
programa.
Convencionalmente, os nomes das constantes são sempre definidos com letras
maiúsculas.
Exemplo: (programa em C++ usando constantes)
# include <iostream.h>
# include <conio.h>
#define AVISO "Pare" //declaração de uma constante
const int VERDADE = 1; // declaração de uma constante
main()
{
const float raio = 2; // declaração de uma constante
float volume;
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
28
#define PI 3.1415 // declaração de uma constante
volume = (4/3)*PI*raio*raio*raio;
if (VERDADE) cout<<AVISO;
getch();
}
Observação: Geralmente, as declarações das constantes são feitas utilizando a diretiva
define e colocadas antes da parte principal do programa (antes do main()), logo depois
das diretivas include.
ASPAS SIMPLES OU ASPAS DUPLAS
A linguagem C++ reconhece uma cadeia de caracteres constante quando delimitada por
aspas duplas.
As aspas simples servem para representar um único caracter.
Exemplos:
#define NOME “Cadeia de Caracteres”
#define LETRA ‘A’
INICIALIZAÇÃO DE VARIÁVEIS
É possível combinar uma declaração de variável com o operador de atribuição para que a
variável tenha um valor inicial ao mesmo tempo de sua declaração; é o que se chama de
inicialização de variável.
Exemplos: (inicialização de variáveis)
int evento = 5;
char corrida = ‘C’;
float tempo = 27.32;
double total1 = 37.6956, total2 = 0,5656;
Inicializar uma variável significa atribuir um valor a ela na mesma instrução de sua
declaração.
Exercícios de Fixação:
1-) Quais dos seguintes nomes são válidos para variáveis em C++:
a-) 3ab
b-) _sim
c-) n_a_o
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
29
d-) 00FIM
e-) int
f-) A123
g-) x**x
h-) --A
i-) y-2
K-) \meu
l-) *y2
j-) OOFIM
2-) Quais das seguintes instruções são corretas ?
a-) int a;
d-) unsigned d;
b-) float b;
e-) long e;
c-) double float c;
f-) long char f;
g-) unsigned char g; h-) short h;
3-) O tipo float ocupa o mesmo espaço que ______ variáveis do tipo char.
4-) Supondo que as variáveis nota, nmat, sx sejam utilizadas para armazenar a nota do
aluno, o número da matrícula e o sexo, declare-as corretamente.
5-) Encontre os erros da seguinte declaração de variáveis:
int idade, nfilhos;
char placa; aviso;
float soma, total,
double saldo, debito, float produto;
float idade;
6-) Qual o trecho de programa que inicializa a variável x ?
a-) int x; x = 5;
b-) int x = 5;
c-) int x, y = 5;
d -) x = y;
7-) Qual a diferença no uso de aspas simples e aspas duplas em C++?
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
30
OPERADORES E EXPRESSÕES
A linguagem C++ é rica em operadores, possui aproximadamente 50. Alguns são mais
utilizados que outros, como é o caso do operador de atribuição e dos operadores
aritméticos.
 Operador de Atribuição: =
Em C++, o sinal de igual não tem a interpretação dada em matemática. Representa a
atribuição da expressão à sua direita à variável à sua esquerda.
Exemplo:
memória
x
2000
x = 2000;
atribui o valor 2000 à variável de nome x. A ação é executada da direita para a esquerda.
É possível realizar em C++ atribuições múltiplas.
Exemplo:
memória
y = z = 3;
yy
33
z
3
atribui o valor 3 às variáveis de nome x e y.
 Operadores Aritméticos: + - * / %
C++ oferece cinco operadores aritméticos binários (que operam sobre dois operandos)
e um operador aritmético unário (que opera sobre um operando).
Binários:
+
*
/
%
Soma
Subtração
Multiplicação
Divisão
Módulo
Unário:
- Menos (unário)
O operador módulo (%) opera somente com operandos inteiros e dá como resultado o
resto da divisão do inteiro à sua esquerda pelo inteiro à sua direita.
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
31
Exemplo: (expressões aritméticas)
x = 7; y = 3;
soma 10
soma = x+y; sub = x – y;
produto 21
produto = x * y; div = x / y;
mod 1
mod = x % y; x = -y;
sub 4
div 2,333
x -3
y 3
Valores atribuídos às variáveis
depois da execução das operações
aritméticas ao lado.
A multiplicação, a divisão e o módulo têm precedência sobre a soma e subtração.
Exemplo:
int x = 5, y = 3, z = 1, n;
n = z + y * x;
o valor 16 será atribuído à variável n.
Os parênteses têm maior prioridade. Eles são sempre avaliados primeiro.
Exemplo:
n = (z + y) * x;
agora n conterá o valor 20.
Quando uma expressão contém todos os operadores com mesma prioridade, a
precedência das operações é da esquerda para a direita.
É importante salientar que o operador unário é usado somente para indicar a troca do
sinal algébrico do valor. Pode também ser pensado como o operador que multiplica seu
operando por –1.
Exemplo:
x = -8;
x = -x;
depois destas duas instruções, o conteúdo de x será 8.
 Operadores de Incremento (++) e Decremento (--)
O operador de incremento (++) é um operador unário que adiciona 1 à variável operando.
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
32
O operador de incremento pode ser usado de duas formas: prefixado quando aparece
antes do nome da variável e pós-fixado quando aparece em seguida ao nome da
variável.
A instrução:
x = x +1;
é equivalente a:
++x;
que é equivalente a:
x++;
A sintaxe e modo de uso do operador de decremento (- -) prefixado e pós-fixado é
idêntica à do operador de incremento, exceto porque a variável é decrementada de 1.
x = x –1;
é equivalente a:
--x;
que é equivalente a:
x--;
 Operadores Aritméticos de Atribuição: += -= *= /= %=
Estes operadores são binários e combinam as operações aritméticas com atribuição.
O operando da esquerda é sempre o nome de uma variável e o da direita, uma expressão
qualquer.
A operação consiste em atribuir um novo valor à variável que dependerá do operador e da
expressão à direita.
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;
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
33
 Operadores Relacionais: > >= < <= == !=
Os operadores relacionais fazem comparações. São eles:
> maior
<= menor ou igual
>= maior ou igual
== igual
< menor
!= diferente
Os operadores relacionais serão utilizados sobre laços e comandos de decisão. Estas
construções requerem que o programa pergunte sobre relações entre variáveis ou
expressões.
Exemplos:
int x = 4;
((2 * x) == (24 / 3))
 verdade
((15 % x) != (19 % 6))
 verdade
((2 + 8 % 7) >= (3 * 6 – x))
 falso
 Operadores Lógicos: && || !
Operadores lógicos também fazem comparações. A diferença entre comparações lógicas
e relacionais está na forma como os operadores avaliam seus operandos.
Operandos de operadores lógicos são avaliados como lógicos (0 ou 1), e não como
numéricos.
A linguagem C++ oferece três operadores lógicos:
&& lógico E
|| lógico OU
!
lógico NÃO
Destes operadores, ! é unário e os outros dois são binários.
Se p e q são duas expressões, então:
p && q
p || q
 Resulta 1 (verdadeiro) somente se p e q forem
outra situação, resulta 0 (falso).
verdadeiras. Em qualquer
 Resulta 0 (falso) somente se p e q forem falsas. Em qualquer outra situação,
resulta 1 (verdadeiro)
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
34
! p  Resulta 1 (verdadeiro) somente se p for 0 (falsa).
Exemplos:
int a = 2, b = 5;
(a <= b) || ( a == 0)  resulta 1 (verdadeiro)
! ((a <= b) || ( a == 0))  resulta 0 (falso)
(b < a) && (b == 5)  resulta 0 (falso)
!(b < a ) && (a ==2)  resulta 1 (verdadeiro)
(!(b < a ) && (a ==2)) && (a <= b)  resulta 1 (verdadeiro)
((b < a) && (b == 5)) || (a ==2)  resulta 1 (verdadeiro)
FUNÇÕES MATEMÁTICAS PRÉ-DEFINIDAS
Em C++ existem diversas funções matemáticas já definidas.
As mais utilizadas são:
sqrt (x) equivale a x1/2 (raiz quadrada)
pow(x,n) equivale a xn
abs (x) equivale a |x| (valor absoluto)
sin(x) equivale a sen(x)
cos(x) equivale a cos(x)
Para utilizar as funções matemáticas pré-definidas em um programa em C++ é necessário
incluir a biblioteca math.h.
# include <math.h>
Exercícios de Fixação:
1-) Assuma que todas as variáveis são do tipo int e encontre o valor de cada uma delas:
a-) x = (2 + 1) * 6;
b-) y = (5 + 1) / 2 * 3;
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
35
c-) i = j = (2 + 3) / 4;
d-) a = 3 + 2 * (b = 7 / 2);
e-) c = 5 + 10 % 4 / 2;
2-) Reescreva as seguintes instruções usando os operadores de incremento e
decremento:
numero = numero + 1;
valor = valor –1;
3-) Quais são os valores de cada variável nas seguintes expressões ?
int a = 1, b = 2, c = 3, d = 4;
a-) a = b % c;
b-) a = b++;
c-) a = ++b;
d-) a += b + c;
e-) d %= b;
f-) b *= c;
g-) b *= c = d + 2;
h-) d %= a + a + a;
i-) d -= c -= b -= a;
j-) a += b += c += 7;
4-) Quais das seguintes expressões estão corretas ?
a-) a == ‘A’
b-) a > b
c-) a =< b
d-) a >= b
e-) –a = b
f-) –a == b
g-) a =! b
h-) –85.2 >= (x * 45.3 + 32.34)
5-)Qual é o valor (0 ou 1) das seguintes expressões:
int x =2, y = 5; bool a =1;
a-) 1 > x
d-) (x + y == 10) && ( 3 < x)
b-) ! (1 > x)
c-) 3 == x
e-) !((0 < -1) || (x < y))
f-) !((3 < 10) && (y > 7)) || ((4 +1 = 6) && ( x < y) && !(x==y))
g-) a
h-) !a
i-) !(a==0)
6-) Qual é o valor da variável y em cada expressão?
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
36
float x = 4, n = 0.5, y;
a-) y = pow(x,n)
b-) y = cos(0) + sen(0) ;
c-) y = abs(1 – x);
d-) y = sqrt(x);
e-) y = pow(sqrt(x), n + 0.5);
COMANDOS DE ENTRADA E SAÍDA
 cout
O comando cout é utilizado para imprimir uma mensagem na tela. O operador
inserção << conecta a mensagem a ser impressa à cout.
de
As definições necessárias ao uso de cout e << estão no arquivo “iostream.h”.
Exemplo:
cout<<“Primeiro Programa !!!”;
A instrução acima imprimirá na tela:
Primeiro Programa !!!
A mensagem a ser imprimida pelo cout deve ser colocada obrigatoriamente entre aspas
duplas. Tudo o que está entre as aspas será imprimido de maneira idêntica na tela,
exceto códigos especiais.
Códigos Especiais
\n
\b
\a
\r
\”
Significado
Nova linha
Retrocesso
Beep – Toca o alto-falante
Cursor para o início da linha
Aspa dupla (“)
O código especial mais utilizado é o \n que ativa uma nova linha.
Exemplo:
cout<<“Primeiro \n Programa \n !!!”;
A instrução acima imprimirá na tela:
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
37
Primeiro
Programa
!!!
O comando cout também pode ser utilizado para imprimir o conteúdo de uma variável na
tela.
Exemplo:
float x = 2.54;
cout<<“O conteúdo de X é: ”<<x;
A instrução acima imprimirá na tela:
O conteúdo de X é: 2.54
O exemplo acima mostra o conteúdo de uma variável sendo impresso no final da frase.
Os conteúdos das variáveis também podem ser impressos no meio das frases.
Exemplo:
float x = 2.53; int y = 300;
cout<<“O conteúdo de X é ”<<x<<“ e o de Y é ”<<y;
A instrução acima imprimirá na tela:
O conteúdo de X é 2.53 e o de Y é 300
 cin
O comando cin manipula toda entrada do teclado por meio do operador de extração >>
que conecta a entrada de dados à variável que a conterá.
As definições necessárias ao uso de cin e >> estão no arquivo “iostream.h”.
Exemplo:
int anos;
cout<<”\n Digite a sua idade em anos: “;
cin>>anos;
No momento da execução da instrução “cin>>anos;”, o cursor ficará “piscando” na tela de
execução do compilador C++ esperando que o usuário digite a idade. O número digitado
será armazenado na variável “anos” declarada como “int”.
O operador >> pode apresentar-se diversas vezes numa instrução com a finalidade de
permitir a introdução de diversos valores ao mesmo tempo.
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
38
Quando se utiliza múltiplos valores de entrada, a primeira variável mencionada conterá o
valor digitado, e as outras serão sempre preenchidas na ordem em que aparecem.
Exemplo:
float p1, p2, p3, p4;
cout<<”\n Digite as notas das 4 provas: “;
cin>>p1>>p2>>p3>>p4;
Múltiplas entradas são digitadas separadas por um espaço em branco. O comando cin
entende um espaço em branco como término de uma entrada e o [ENTER] como
finalizador geral.
É recomendado sempre utilizar o comando cout antes do cin, para imprimir uma frase na
tela explicando qual a informação que o usuário deve fornecer.
 getche( ) e getch( )
Em algumas situações, o comando cin não se adapta perfeitamente, pois há a
necessidade de pressionar a tecla [ENTER] toda vez que se deseja terminar a leitura de
dados.
A biblioteca C++ oferece duas funções seguintes que lêem um caractere no instante que
é digitado, sem esperar [ENTER]:
getche()
e
getch()
A diferença entre as duas é que quando se utiliza a função getche() o caractere digitado
é impresso no vídeo, o que não acontece quando se utiliza a função getch().
A expressão:
ch = getche( );
atribui o valor da função getche à variável ch.
____________________________________________________________________________________
Algoritmos
Professor: Pa ulo Renato
39
Download