1Programao Bsica em C++Estas notas de aula apresentam os
conceitos bsicos da Linguagem C++ e se prope a abordar apenas o que
importante para a compreenso bsica de programas de computadores.
Assim, conceitos de C++como objetos, classes, templates e outros
conceitos relacionados programao orientada a objetos no so
abordados aqui.1Programas C++Essencialmente, um programa
C++consiste de uma ou mais partes chamadas funes1. Alm disso, um
programa em C++ deve definir pelo menos uma funo chamadamain. Esta
funo marca o ponto de incio de execuo do programa.Programas C++tem
a seguinte estrutura geral:
#include iostream
using namespace std;
definio de constantes
funes
int main()
{
declarao de variveis
....
sentenas
....
}
1.1Sentenas: simples e compostasCada instruo em C++ chamada de
sentena.Sentenas simplesso terminadas com um ponto e vrgula. Usando
chaves, podemos agrupar sentenas em blocos, chamados desentenas
compostas.Exemplos de sentenas incluem: Simples: x = 3; Composta: {
i = 3; cout = 0)16. {17. if (arr[i] == chave)18. {19. return i;20.
}21. 22. i = i - 1;23. }24. return -1;25. }13.6Exemplo: somar os
elementos de dois arrays13.6.1O ProblemaEscrever uma funo que some
dois arrays defloats, do mesmo tamanho. Dar o resultado em um
terceiro array. O tamanho dos arrays tambm passado para a funo.1.
Prottipo:2. void soma_array( float [], float [], float [], int );3.
Definio desomaarray():4. void soma_array( float arr1[], float
arr2[], float arr3[], int tam )5. {6. int i;7. 8. i = 09. while ( i
< tam )10. {11. arr3[i] = arr1[i] + arr2[i];12. i = i + 1;13.
}14. }13.7Exemplo: Ordenao de um vetor - Verso 1Um outro programa
muito popular com arrays orden-lo de acordo com algum critrio. Por
exemplo, um array de inteiros pode ser ordenado em ordem crescente
ou decrescente. O apresentado a seguir um algortmo bsico e nem um
pouco eficiente, denominadoSelect sort.Ele usa o fato simples de
comparar cada elemento de umarraycom o restante deste. Quando se
acha o menor, ocorre uma troca de valores entre o elemento sob
anlise e o outro elemento doarrayque o menor.Por exemplo, se
comearmos com um array:9 5 2 7 3 8 1 4 6, (o primeiro elemento 9e o
ltimo elemento 6) isto o que acontece com os elementos do array
depois de cada passagem sobre ele (e consequente troca de
valores):passagem conteudo do array depois da passagem~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~0 --> 9 5 2 7 3 8 1 4 6
1 --> 1 5 2 7 3 8 9 4 6
2 --> 1 2 5 7 3 8 9 4 6
3 --> 1 2 3 7 5 8 9 4 6
4 --> 1 2 3 4 5 8 9 7 6
5 --> 1 2 3 4 5 8 9 7 6
6 --> 1 2 3 4 5 6 9 7 8
7 --> 1 2 3 4 5 6 7 9 8
8 --> 1 2 3 4 5 6 7 8 9Note que mesmo que se comessemos com
um array ordenado de 9 elementos, ainda assim o algoritmo dado faz
8 passagens sobre o array.13.7.1Prottipo da funo e definio1.
Prottipo2. void selectSort(int [], int);3. Definicao4.
/usr/local/lib/tex/inputs///Programas/ordena_array_02.cpp13.8Exemplo:
Ordenao de um vetor - Verso 2O algoritmo abaixo ligeiramente melhor
que o anterior e chamadoBubble sort. Ele bastante simples, porm
ainda no muito eficiente.Basicamente, o algoritmo funciona da
seguinte forma: na primeira passagem sobre o array: comeando do
ltimo elemento do array at o segundo elemento, compare o valor de
cada elemento com o valor do elemento anterior a ele. Se os
elementos comparados estiverem fora de ordem, trocar os seus
valores. Depois que esta primeira passada terminar, o que acontece
que o menor elemento do array torna-se o primeiro elemento do
array. na segunda passagem pelo array: comeando com o ltimo
elemento do array at o terceiro elemento, compare o valor de cada
elemento com o valor do elemento anterior a ele. Se os dois
elementos comparados estiverem fora de ordem, trocar os seus
valores. Depois que esta passagem sobre o array terminar, o segundo
menor elemento do array ser o segundo elemento do array. repetir a
passagem sobre o array de maneira similar at que a ltima passagem
ser simplesmente uma comparao dos valores do ltimo elemento com o
elemento anterior.Por exemplo, se comearmos com um array:9 5 2 7 3
8 1 4 6, (o primeiro elemento 9e o ltimo elemento 1) isto o que
acontece com os elementos do array depois de cada passagem sobre
ele (e troca de valores adjacentes):passagem conteudo do array
depois da passagem~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~0 -->
9 5 2 7 3 8 1 4 6
1 --> 1 9 5 2 7 3 8 4 6
2 --> 1 2 9 5 3 7 4 8 6
3 --> 1 2 3 9 5 4 7 6 8
4 --> 1 2 3 4 9 5 6 7 8
5 --> 1 2 3 4 5 9 6 7 8
6 --> 1 2 3 4 5 6 9 7 8
7 --> 1 2 3 4 5 6 7 9 8
8 --> 1 2 3 4 5 6 7 8 9Note que, tambm aqui, mesmo que se
comessemos com um array ordenado de 9 elementos, ainda assim o
algoritmo dado faz 8 passagens sobre o array.Isto pode ser
melhorado da seguinte forma: Antes de comear cada passagem,
inicializamos uma varivelordenadocom 1. Se durante a passagem uma
troca de valores ocorrer, trocamos o valor da varivel para 0.
Assim, se depois da passagem, o valor da varivel continuar sendo 1,
isso significa que nenhuma troca ocorreu e que o array est
ordenado.13.8.1AlgoritmoBubble SortotimizadoEnquanto o array nao
estiver ordenado1. inicializarordenadocom 12. comparar pares
adjacentes do arraytroque seus valores se estiver fora de
ordemordenado= 0.13.8.2Prottipo da funo e definio1. Prottipo2. void
bubbleSort(int [], int);3. Definicao4.
/usr/local/lib/tex/inputs///Programas/ordena_array_01.cpp13.9Comentrios
FinaisNeste curso, um dos nicos lugares que veremos o nome do array
sem estar indexado quando passamos o array (como um todo) para uma
funo. Para outras finalidades, veremos sempre o array indexado. Por
exemplo, o seguinte trecho de programa est errado: int main(){ int
arr1[4] = {10, 20, 30, 40}; int arr2[4];
arr2 = arr1; // ERRADO: NO copia arr1 em arr2 // tem que copiar
elemento por elemento
if( arr1 == arr2 ) // ERRADO: NO podemos comparar arrays
inteiros cout