*** Programa em C/C++ Mnimo:
*****************************

#include <iostream>
using namespace std;
int main(void) {

	system("pause");  // Opcional, para o DevC++
}


*** Resumo de Vetores
*********************

Vetores: "tabelas" de nmeros de tipos iguais
declarao:

tipo nome[colunas];

Uso:

nome[coluna] = valor;
variavel = nome[coluna];
cout << nome[coluna];
cin >> nome[coluna];

Exemplos:

int v[4];
int x = 20;
cin >> v[0];
v[1] = 10;
v[2] = v[0]*v[1];
v[3] = x;
v[4] = x;	// Erro!
cout << v[0] << v[1] << v[2] << v[3] << endl;

Declarao com valores preenchidos

int v[4] = { 10, 20, 50, 100 };
cout << v[0] << v[1] << v[2] << v[3] << endl;


*** Exerccios com Vetores
**************************

1.  Dada uma sequncia de n nmeros, imprimi-la na ordem inversa  da leitura.
	Entrada: N e depois a sequencia.

2.  Deseja-se publicar o nmero de acertos dos alunos em uma prova em forma de testes. A prova consta de 5 questes, cada uma com cinco alternativas identificadas por A, B, C, D e E. 
	Entrada:	a resposta de cada questo (gabarito)
			o nmero de alunos da turma
			todas as respostas de cada aluno
	O programa responde o nmero de acertos de cada aluno assim que as respostas deste aluno forem digitadas.


3.  Tentando descobrir se um dado era viciado, um dono de cassino honesto (ha! ha! ha! ha!) o lanou n vezes. Dados os n resultados dos lanamentos, determinar o nmero de ocorrncias de cada face.
	Entrada:	Nmero de lanamentos
			O valor resultante em cada lanamento.


4.  (MAT 88) Dada uma seqncia de n nmeros reais, determinar os nmeros que compem a seqncia e o nmero de vezes que cada um deles ocorre na mesma.
        Exemplo: n = 8
        Seqncia: -1.7,  3.0,  0.0,  1.5,  0.0, -1.7,  2.3, -1,7
        Sada:       -1.7 ocorre 3 vezes
                      3.0 ocorre 1 vez
                      0.0 ocorre 2 vezes
                      1.5 ocorre 1 vez
                      2.3 ocorre 1 vez

	DICA: use 2 vetores: um (float) para armazenar os nmeros que j foram e outro (int) para armazenar a contagem





*** Resumo de Funes
*********************

Funo: um algoritmo que pode ser executado por outro algoritmo.

Declarao / Prottipo:
tipo_de_retorno nome([tipo1 parm1][, tipo2 parm2][, ...][, tipo4 parmn]);


Definio da Funo

tipo_de_retorno nome([tipo1 parm1][, tipo2 parm2][, ...][, tipo4 parmn]) {

	// cdigo da funo

	return valor;	// valor deve ser do mesmo tipo que tipo_de_retorno
}

Uso:

nome();		// Chamada de funo sem parmetro
nome(x);		// Chamada de funo com um parmetro
nome(1,7,x);	// Chamada de funo com 3 parmetros
x = nome();		// Chamada de funo com armazenamento do retorno


Exemplos:

// Retorna 1 se o VALOR for mpar; 0 caso contrrio
int ehImpar(int valor) {
	int i;
	i = valor%2;	// valor%2 resulta em 1 para nmeros mpares
	return i;
}

int main(void) {
	int res;
	res = ehImpar(3);		// O "3" ser copiado para o parmetro VALOR
	if (res == 1) cout << "Valor  mpar!";
	else cout << "Valor  par!";
}


*** Escopo das Variveis
************************

H trs lugares possveis em que uma varivel pode ser declarada:
a) Fora de qualquer funo, abaixo dos "includes"
b) Dentro de uma funo
c) Como parmetro de uma funo

No caso A, aquela varivel  vlida em qualquer parte do programa.
Nos casos B e C, a varivel s  vlida NA FUNO EM QUE FOI DECLARADA.

Mesmo no caso C (parmetro)? SIM!
Ento se uma funo modificar o valor de um parmetro essa mudana no vai valer no resto do programa? NO!
E se eu precisar que a mudana em um parmetro valha no resto do programa? Por exemplo:

// Multiplica o valor por 2
void atualiza(int valor) {
	valor = valor * 2;
}

int main(void) {
	int x;
	cin >> x;
	atualiza(x);
	cout << x;
}

Basta modificar a declarao da funo, acrescentando & na frente do nome da varivel que muda:

// Multiplica o valor por 2
void atualiza(int &valor) {
	valor = valor * 2;
}

Isso se chama "passagem por referncia". Sem o "&" chama-se "passagem por valor".
Quando um parmetro for passado por referncia, NO podemos indicar um nmero no lugar deste parmetro:

// Multiplica o valor por 2
void atualiza(int &valor) {
	valor = valor * 2;
}

int main(void) {
	atualiza(3);	// ERRO!
}

Vetores so SEMPRE passados por referncia, no se deve indicar o &.
Alm disso, no se indica, usualmente, o tamanho do vetor que  recebido como parmetro:

void atualiza(int vetor[]);	// Usual.
void atualiza(int vetor[5]);	// Incomum e, normalmente, "incorreto".



*** Exerccios com Funes
**************************

1. Crie uma funo que imprima o texto "Eu estou funcionando!"

2. Crie uma funo que some dois valores inteiros e retorne o resultado.

3. Crie uma funo que receba 3 parmetros: dividendo, divisor e quociente. Essa funo deve retornar 1 se a diviso ocorreu com sucesso, e 0 se a diviso no pode ser realizada (quando o divisor  zero).

4. Crie uma funo que preenche um vetor de n posies com o valor 1.

5. Crie uma funo que preenche um vetor de n posies com um valor fornecido pelo usurio.

6. Crie uma funo que imprima o valor de cada posio de um vetor de n posies. Os valores devem ser impressos um por linha.

7. Modifique o programa anterior para imprimir os valores do vetor em uma nica linha, separados por ",".

