Algoritmia	  2	
Introdução à linguagem C++	  9	
Declaração de Variáveis	10	
Instrução de Afectação	11	
Declaração de Constantes	12	
Instrução de leitura	12	
Instrução de Escrita	13	
Array’s e String’s	13	
Exercícios	16	
Biblioteca de Funções	22	

1 - ALGORITMIA

Diariamente executamos uma série de acções com vista a alcançar um determinado objectivo. Intuitivamente, aquilo que estamos a executar é um algoritmo.

ALGORITMO
Conjunto de instruções ou acções que ao serem executadas, permitirão realizar uma determinada tarefa

Exemplos de algoritmos: Receita de um bolo, montagem de um KIT, guião de um filme, etc.

A resolução de um qualquer problema por processos informáticos, estrutura-se segundo três fases essenciais:
•	Análise do problema
•	Desenho do algoritmo
•	Codificação

Quando vamos apresentar um algoritmo temos de ter muito cuidado com a linguagem utilizada e qual o seu nível.

O mesmo se passa com os computadores. Eles entendem certo tipo de linguagem, à qual está associada uma dada semântica e uma dada sintaxe.

O algoritmo é uma simulação em abstracto do que a máquina vai realizar. Na execução de um algoritmo há três tipos de questões essenciais:
•	Leitura ou entrada de dados
•	Cálculos de variáveis
•	Escrita ou saída de dados

Estes são os três grandes passos da circulação de informação:

Saída

Tratamento

Entrada

Duas representações são possíveis para um algoritmo:
	•  Pseudo-código ou pseudo-linguagem
	•  Fluxograma

•	
Dados e seus Tipos
	Quando se guardam os dados num computador temos que saber que tipos de dados é possível guardar. Ele poderá guardar números, booleanos, letras, palavras, etc.

Tipos Primitivos 
•	Numéricos
–	Inteiros
–	Reais
•	Cadeia de caracteres (string)
•	Informação Lógica
–	True (qualquer coisa diferente de zero)
–	False (zero)
•	Apontadores (Pointer)

Tipos Compostos 
•	Arrays
–	Vectores (unidimensionais)
–	Matrizes (bidimensionais)
•	Listas
•	Ficheiros

•	Variáveis
	Num programa de computador, uma variável é uma entidade que em determinado instante possui um e um só valor. Valor esse que só poderá ser dos tipos atrás referidos.
	Se o dado armazenado na variável permanecer inalterado do princípio ao fim do programa, então temos uma constante.
	Num programa de computador podemos atribuir nomes às nossas variáveis; deste modo deveremos escolher nomes que sejam o mais próximo possível  dos dados armazenados. 
	Antes de usarmos uma variável há necessidade de a declarar e de dizer que tipos de dados essa variável vai manipular.

Operadores em linguagem C

Operadores Aritméticos	Operadores Relacionais	Operadores Lógicos	
/	Divisão	==	Igual	&&	(AND) - Conjunção	
*	Multiplicação	!=	Diferente	||	(OR) – Disjunção	
+	Adição	>	Maior que	!	(NOT) - Negação	
-	Subtracção	<	Menor que			
++	Incremento	>=	Maior ou igual			
--	Decremento	<=	Menor ou igual			
%	Resto da
 divisão inteira					

•	Operador de Atribuição
A operação de atribuição é utilizada para armazenar um dado valor numa determinada variável.
Em algoritmia representa-se por uma seta
	x  23	a variável x vai ficar com 23
	x  y		a variável x vai ficar com o conteúdo de y
	x  x+1	a variável x é incrementada de uma unidade

 = 	Operador de atribuição na linguagem C 
:=	Operador de atribuição em linguagem Pascal

1.1 - ESTRUTURAS DE PROGRAMAÇÃO

•	Estrutura  Sequencial

As diversas acções são executadas umas a seguir às outras pela ordem em que estão escritas

•	Estrutura de Decisão Binária (if ... else)

Se o resultado da condição for verdade, faz a acção1,
caso contrário faz a acção2.

De salientar que em C, verdade é qualquer valor diferente de zero;
falso é o valor zero.

•	Estrutura de Decisão Múltipla (switch)

switch (variável) {
	case valor 1: acção A;
			          break;
	case valor 2: acção B;
			          break;
			:
	default: mensagem de erro;
}

•	ESTRUTURAS REPETITIVAS

While  - (Enquanto ... fazer)

while (condição)
	acção 1;

do ... while   (Fazer ... enquanto)

do {
	acção 1;
} while (condição);

for  (Para ... até ... inc)

For (início; condição; step)
	acção;

2 – INTRODUÇÃO À LINGUAGEM C++

Exemplo de um programa em Linguagem C++:

// Este programa escreve a linha de texto Olá. Este é o primeiro Programa no //ecran.

#include <iostream.h>

void main()
{
	cout << “Olá. Este é o primeiro Programa”;
}	

Um programa em Linguagem C++ é composto por directivas e por funções.

Directiva #include <iostream.h>
	Funções de entrada e saída de dados, fornecida pela biblioteca iostream.h. Inclui a biblioteca padrão da linguagem C stdio.h.

Introdução de comentários:
	// O que está a seguir às barras é ignorado pelo compilador
	/* Abre comentário
		Todo o texto que se encontra entre estes símbolos é ignorado pelo compilador (incluindo uma ou várias linhas de texto)
	*/ Fecha comentário

Todos os programas em linguagem C++ têm uma função main (função principal).
A execução de um programa em linguagem C++ corresponde a evocar esta função.
As funções são compostas por um cabeçalho e por um corpo.

No nosso caso o cabeçalho corresponde a:
		void main()

No cabeçalho indica-se:
•	nome da função – main
•	Os nomes e tipos de parâmetros entre parêntesis  - ()
•	E o tipo de resultado – void

No corpo da função temos as instruções.
O início do corpo da função é indicado por chavetas a abrir, {, e o fim é indicado por chavetas a fechar, }.

Todas as palavras chave da linguagem C são em letra minúscula.

3 - DECLARAÇÃO DE VARIÁVEIS 

Tipo nome_variável;

Sintaxe:

Exemplos:

int xpto;	
Esta declaração significa que a variável xpto é inteira. Poderá conter um número  inteiro dentro dos limites que o computador suporta
		
float x;
Esta declaração significa que a variável x é real
	
int y=0;
A variável y é inteira e é inicializada com zero

•	TIPOS DE DADOS 
•	int
–	Poderá conter um valor compreendido entre      -32.768 a 32.767
–	Se usarmos a palavra chave  unsigned a variável pode conter um valor compreendido entre 0 e 65.535
•	char
–	Permite guardar um caracter
–	Cada caracter ocupa um byte, logo permite guardar números de 0 a 255 ou de -128 a 127
•	float
–	Permite guardar um real
–	Possui 6 casas de precisão
•	double
–	Permite guardar um real
–	Possui 12 casas de precisão

4 - INSTRUÇÃO DE AFECTAÇÃO
Sintaxe:

nome_variável = expressão;

O resultado da expressão será armazenado na variável

O sinal = é o operador de afectação. 
Não confundir com ==

•	EXEMPLOS COM OS OPERADORES
	x = 5;
	x = a+3;
	x = a/5;
	w = x+1;
	w = ++x;		w = x++;

	w = 5%2 - 3;		w = (5%2)-3;

•	INICIALIZAÇÃO DE UMA VARIÁVEL

Tipo nome_variável = constante;

Sintaxe:

Exemplo:
		int xpto = 20;
		int z = max; 		/* max é uma constante */
		char car =‘a’;		// a variável car recebe o caracter a
		float raio = 12.2;

5 - DECLARAÇÃO DE CONSTANTES

const nome_da_constante = valor;

Sintaxe:

Exemplo:
		const float pi=3.1415;
		const  max=13;

6 – INSTRUÇÃO DE LEITURA

Sintaxe:
cin >> variável;

Esta função serve para ler os dados do teclado.
Exemplos:
	cin >> n1; 	// Lê um valor para a variável n1
	cin >> n1 >> n2; 	//Lê dois valores para as variáveis n1 e n2

7 – INSTRUÇÃO DE ESCRITA

	Sintaxe:

cout << cadeia de caracteres << variável;

Esta instrução serve para escrever texto e conteúdos de variáveis no écran.

Exemplos:
	cout << “Introduza um valor inteiro”;
	cout << “\n O resultado da soma é: “ << soma;
	cout << “\nMaior valor = “ << maior << “\nMenor valor = “ << menor;

\n (new line) – é um código usado no cout e que faz o cursor abrir uma nova linha.

8 - ARRAY´S E STRING´S

Os array´s podem armazenar conjuntos de elementos todos do mesmo tipo.
Cada elemento de um array pode ser referenciado, especificando o nome do array, seguido por um índice escrito entre parêntesis rectos. O índice é do tipo inteiro. O primeiro índice do array é o número zero.

-1	-2173	23	234	65	
	Índices:	      0            1           2            3            4

a	b	h	c	f	j	
	Índices:        0           1           2            3            4            5

•	Como declarar um array

Tipo nome_array [Dimensão_do_array];

Sintaxe:

Exemplos:
	float lista[100];
	int turma[20];

	lista[5] = 33;		//Guarda na quinta casa do array o valor 33
	cin >> lista[2];	//Lê um valor do teclado e coloca-o na casa oito

•	ORDENAÇÃO DE ARRAY’S
Algoritmo de Ordenação Bubble Sort

Decrescente

for(i=0; i<DIM-1; i++)
   for(j=i+1; j<DIM; j++)
if(num[i] < num[j]) {
      aux = num[j];
      num[j] = num[i];
      num[i] = aux;
}

Crescente

for(i=0; i<DIM-1; i++)
   for(j=i+1; j<DIM; j++)
if(num[i] > num[j]) {
      aux = num[j];
      num[j] = num[i];
      num[i] = aux;
}

Por cada ciclo de repetição consegue-se ordenar um só elemento. Trocando o sinal da comparação consegue-se ordenar o array por ordem crescente ou decrescente.

•	STRING´S
É um tipo de estrutura semelhante ao array mas só pode conter caracteres.
Para trabalhar com strings existem várias funções disponíveis no ficheiro string.h.
A leitura e a escrita de uma string pode ser feita à custa das funções gets e puts.
Vantagens da utilização de uma string:
•	É possível só com uma instrução ler a string do teclado.
•	É possível só com uma instrução escrever a string no écran.
•	É possível ter uma string, por exemplo, de 20 caracteres e só 5 estarem a ser utilizados. A função strlen devolve um inteiro que indica quantos caracteres estão efectivamente numa dada string. É necessário incluir o ficheiro string.h.

const MaxNome=30;
char nome[MaxNome];
int i,n;
	....
	cout << “Introduza um nome: “;
	gets(nome);
	n=strlen(nome);
	for(i=0; i<n; i++)
		nome[i] = toupper(nome[i]);
	cout << “\n String convertida para maiusculas: “ << str1;

EXERCÍCIOS:

Exercício1:
//Programa que lê um valor real do teclado e calcula a área e o perímetro //de uma circunferência. A Área = r2 e o Perímetro = 2r. 

#include <iostream.h>

void main()
{
	const PI=3.14159;
	float r, A, P;

	cout << “Introduza o valor do raio: “;
	cin >> r;
	A=PI*r*r;
	P=2*PI*r;
	Cout << “\nÁrea = “ << A << “\nPerímetro = “ << P;
}

Exercício2:
// Programa que lê dois números inteiros e mostra o maior dos dois.
 
#include <iostream.h>
void main()
{	
int n1, n2;	

cout << "\nIntroduza dois numeros inteiros: ";	
cin >> n1 >> n2;	
if (n1>n2)		
cout << n1 << " é o  maior";	
else		
cout << n2 << " é o maior";
}

Exercício3:
// Programa que lê três números inteiros e mostra o maior dos três 
//versão 1

#include <iostream.h>

void main()
{	
int n1, n2, n3;	
cout << "\nIntroduza três numeros inteiros: ";
cin >> n1 >> n2 >> n3;	
if (n1>n2)		
if (n1>n3)
			cout << n1 << " é o maior";
		else
			cout << n3 << " é o maior";
	else
		if (n2>n3)
			cout << n2 << " é o maior";
		else
			cout << n3 << " é o maior";
}

Exercício4:
// Programa que lê três números inteiros e mostra o maior dos três 
//versão 2

#include <iostream.h>
void main()
{
	int n1, n2, n3, maior;

	cout << "\nIntroduza três numeros inteiros: ";
	cin >> n1 >> n2 >> n3;
	if (n1==n2 && n2==n3)
		cout << "\n São iguais";
	else{
		maior=n1;
		if(n2 > maior)
			maior=n2;
		if (n3 > maior)
			maior=n3;
		cout << maior << " é o maior";
	}
}

Exercício5:
//Programa que pede para introduzir uma série de números (a série termina com o nº zero) e calcula o maior, o menor a soma e a média de todos os números

#include <iostream.h>

void main()
{
	int n, maior, menor, cont=0;
	float soma=0, media;

	cout << "\n Introduza uma serie de numeros (termine com zero): ";
	cin >> n;
	maior=menor=n;
	while(n != 0){
		if(n > maior)
			maior=n;
		if(n<menor)
			menor=n;
		soma=soma+n;
		cont++;
		cin >> n;
	}
	media=soma/cont;
	cout << "\nMaior: " << maior << "\nMenor: " << menor;
	cout << "\nSoma: " << soma << "\nMedia: " << media;
}

Exercício6:
//Programa que lê uma sequência de caracteres a terminar com ENTER //(‘\n’) e conta o número de maiúsculas, o número de minúsculas e o //número total de caracteres.

#include <iostream.h>
#include <ctype.h>
#include <stdio.h>

void main()
{
	cout << "Escreva uma sequencia de caracteres (acaba com ENTER): ";
	char car;
	int mai=0, min=0, total=0;

	do {
		cin >> car;
		if(isupper(car))
			mai++;
		if(islower(car))
			min++;
		total++;
	}while(car != '0');
	total--;
	cout << "\nTotal de caracteres: " << total;
	cout << "\nNum maiusculas: " << mai << "\nNum minusculas: " << min << "\n";
}

Exercício7:
//Programa que lê as notas de IP2 da turma e calcula a média da turma, a //nota mais alta e a nota mais baixa.

#include <iostream.h>

void main()
{
	int nota,maior=0, menor=20, cont;
	float soma=0, media=0;
	const nalunos = 12;

	cout << "Introduza as notas dos alunos: ";
	for(cont=0;cont < nalunos; cont++){
		cin >> nota;
		soma=soma+nota;
		if(nota>maior)
			maior=nota;
		if(nota<menor)
			menor=nota;
	}
	media=soma/cont;
	cout << "\nMedia da turma: " << media;
	cout << "\nNota mais alta: " << maior << "\nNota mais baixa: " << menor;
}

Exercício8:
//Programa que realiza uma máquina de calcular com dois operandos e uma //operação aritmética básica.
//versão 1 (Realiza só uma operação)

#include <iostream.h>

void main()
{
	float op1, op2, Res;
	char oper;

	cout << "\n Introduza a operação a realizar (ex: x+y): ";
	cin >> op1 >> oper >> op2;
	switch(oper) {
		case '+': Res = op1+op2;
			    break;
		case '-': Res = op1-op2;
			    break;
		case '*': Res = op1*op2;
			    break;
		case '/': if (op2 != 0)
			   	Res = op1/op2;
			    else
				cout << "\n ERRO!!! Divisão Impossível";
			    break;
		default:  cout << "\n ERRO!!!! Operação Inválida!";
	}
	if( oper=='+' || oper=='-' || oper=='*' || (oper=='/' && op2!=0))
		cout << "\n resultado: " << Res;
}
Exercício9:
//Programa que realiza uma máquina de calcular com dois operandos e uma //operação aritmética básica.
//versão 2 (Realiza só uma operação)

#include <iostream.h>

void main()
{
	float op1,op2; 
	char op;
	cout << "Introduza uma operacao (x+y): ";
	cin >> op1 >> op >> op2;
	switch(op) {
	   case '+': cout << op1 << "+" << op2 << "=" << op1+op2 << "\n";
			 break;
	   case '-': cout << op1 << "-" << op2 << "=" << op1-op2 << "\n";
			 break;
	   case '*': cout << op1 << "*" << op2 << "=" << op1*op2 << "\n";
			 break;
	   case '/': if(op2!=0)
			   cout << op1 << "/" << op2 << "=" << op1/op2 << "\n";
			 else
			   cout << "\nERRO!!! Divisao impossivel";
			 break;
	    default: cout << "\nOPERACAO DESCONHECIDA";
	
	}
}

Exercício10:
//Programa que realiza uma máquina de calcular com dois operandos e uma //operação aritmética básica.
//versão 3 (Realiza varias operacoes).

#include <iostream.h>

void main()
{
   float op1,op2; 
   char op,t;
   do {
	cout << "Introduza uma operacao (x+y): ";
	cin >> op1 >> op >> op2;
	switch(op) {
	   case '+': cout << op1 << "+" << op2 << "=" << op1+op2 << "\n";
			 break;
	   case '-': cout << op1 << "-" << op2 << "=" << op1-op2 << "\n";
			 break;
	   case '*': cout << op1 << "*" << op2 << "=" << op1*op2 << "\n";
			 break;
	   case '/': if(op2!=0)
			   cout << op1 << "/" << op2 << "=" << op1/op2 << "\n";
			 else
			   cout << "\nERRO!!! Divisao impossivel";
			 break;
	   default: cout << "\nOPERACAO DESCONHECIDA";
	}
	cout << "\nContinuar? (s/n)";
	cin >> t;
   }while(t!='n');
}

Exercício11:
//Programa que lê e guarda as notas de IP2 da turma e calcula a média da //turma, a nota mais alta e a nota mais baixa.

#include <iostream.h>

void main()
{
	int maior=0, menor=20, cont;
	float soma=0, media=0;
	const nalunos = 13;
	int turma[nalunos];

	cout << "Introduza as notas dos alunos: ";
	for(cont=0;cont < nalunos; cont++){
		cin >> turma[cont];
		soma=soma+turma[cont];
		if(turma[cont]>maior)
			maior=turma[cont];
		if(turma[cont]<menor)
			menor=turma[cont];
	} 
	media=soma/nalunos;
	cout << "\nMedia da turma: " << media;
	cout << "\nNota mais alta: " << maior << "\nNota mais baixa: " << menor;
}

Exercício12:
//Programa que le 10 numeros inteiros e os mostra ordenados por ordem crescente
#include <iostream.h>

void main()
{
	const DIM = 10;
	int num[DIM], i, j, aux;

	cout << "Introduza 10 numeros inteiros: ";
	for(i=0; i<DIM; i++)	// leitura dos 10 numeros
		cin >> num[i];		
	for(i=0; i<DIM-1; i++)	// ordenacao do array
		for(j=i+1; j<DIM; j++)
			if(num[i] > num[j]) {
				aux = num[j];
				num[j] = num[i];
				num[i] = aux;
			}
	cout << "\n Numeros ordenados crescentemente: \n\n";
	for(i=0; i<DIM; i++)	// Apresentacao do array depois de ordenado
		cout << num[i] << " ";
}

Exercício13:
// Programa que le uma frase, a converte para maiusculas  e a mostra no //ecran

#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>

void main()
{
   char str1[20];
   int i,n;

   cout << "\nEscreva uma frase: ";
   gets(str1);
   n=strlen(str1);
   cout << "\nA frase que escreveu foi: \n\n" << str1 << "\n";
   for (i=0; i<n; i++)
	str1[i]=toupper(str1[i]);
   cout << "\nA frase convertida para maiusculas: \n\n" << str1 << "\n";
}

Algumas BIBLIOTECAS DE FUNÇÕES

iostream.h
cin – lê os valores introduzidos pelo teclado
cout – escreve cadeias de caracteres ou o conteúdo de variáveis no écran

stdio.h
getchar() – devolve o caracter lido do teclado.
putchar() – escreve o caracter, passado como parâmetro, no écran.
gets(str) – lê uma string do teclado
puts(str) - escreve a string, passada como parâmetro, no écran.

ctype.h
tolower(c) – devolve o caracter, passado como parâmetro, convertido em minúsculas
toupper(c) – devolve o caracter, passado como parâmetro, convertido em maiúsculas
isupper(c) – devolve verdadeiro se o parâmetro passado for letra maiúscula.
islower(c) – devolve verdadeiro se o parâmetro passado for letra minúscula.
isspace(c) – devolve verdadeiro se o parâmetro passado for espaço, tab ou return.
isdigit(c) – devolve verdadeiro se o parâmetro passado for digito.

math.h
abs(x) – devolve o valor absoluto de x.
cos(x) – devolve o cosseno de x.
sin(x) – devolve o seno de x.
tan(x) –devolve a tangente de x.
pow(b,e) – devolve be.
sqrt(x) – devolve a raiz quadrada de x.
string.h
strlen(s) – devolve o número de caracteres existentes na string.
strcpy(dst,scr) – copia a string scr para a string dst.
strcmp(s1,s2) – compara as strings s1 e s2 e devolve:
			um valor negativo se s1 < s2.
			zero se as strings forem iguais.
			Um valor positivo se s1 > s2.