110
1 Programação Básica em C++ Estas notas de aula apresentam os conceitos básicos da Linguagem C++ e se propõe a abordar apenas o que é importante para a compreensão básica de programas de computadores. Assim, conceitos de C++ como objetos, classes, templates e outros conceitos relacionados à programação orientada a objetos não são abordados aqui. 1 Programas C++ Essencialmente, um programa C++ consiste de uma ou mais partes chamadas funções 1 . Além disso, um programa em C++ deve definir pelo menos uma função chamada main. Esta função marca o ponto de início de execução do programa. Programas C++ tem a seguinte estrutura geral: #include iostream using namespace std; definição de constantes funções int main() { declaração de variáveis ....

1 Programação Básica em C++

Embed Size (px)

DESCRIPTION

1 Programação Básica em C++

Citation preview

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