C++   apostila c++ nivel basico
Prochain SlideShare
Loading in...5
×

Vous aimez ? Partagez donc ce contenu avec votre réseau

Partager
  • Full Name Full Name Comment goes here.
    Êtes-vous sûr de vouloir
    Votre message apparaîtra ici
    Be the first to comment
    Be the first to like this
No Downloads

Vues

Total des vues
6,204
Sur Slideshare
6,204
From Embeds
0
Nombre d'ajouts
0

Actions

Partages
Téléchargements
292
Commentaires
0
J'aime
0

Ajouts 0

No embeds

Signaler un contenu

Signalé comme inapproprié Signaler comme inapproprié
Signaler comme inapproprié

Indiquez la raison pour laquelle vous avez signalé cette présentation comme n'étant pas appropriée.

Annuler
    No notes for slide

Transcript

  • 1. C++ – Programação Básica1 IntroduçãoOs programas de computador, ou softwares – processadores de texto, planilhas,navegadores Internet, e até mesmo o sistema operacional Windows – são arquivoscujas instruções dizem ao computador como realizar determinadas tarefas.No ambiente Windows, os arquivos com as extensões EXE e COM contêm comandosque o computador pode executar. Em outras palavras, esses arquivos de programasdão ao computador, normalmente uma após a outra, instruções específicas para queele realize determinada tarefa.Para criar programas, usa-se uma linguagem de programação, dita de alto nível, comoo C++, e especifica-se as instruções que o computador deve executar. Em seguida,por meio de um programa especial chamado compilador, converte-se as instruções deprogramação na linguagem de máquina (binária) que o computador compreende.Nas seções a seguir, serão apresentados os elementos constituintes da linguagem deprogramação C++ e a sua sintaxe básica.2 Tipos de Dados2.1 Definição de DadosSão informações, que podem ser números ou caracteres, com os quais o programaopera.2.2 Definição de VariáveisRepresentam localizações de memória onde são armazenados valores que podem sermodificados pelo programa.2.3 Variáveis em C++2.3.1 Nome das variáveisPode conter letras, números e caractere de sublinhado. Porém : • 1º caractere NÃO pode ser número ex.: br_01 _br01 01_br (NÃO é permitido) • letras maiúsculas é diferente de letras minúsculas (convenção : minúsculas) ex.: A1 é diferente de a1 • não podemos usar palavras reservadas ex.: int, float, if, else, etc...Francisco Adell Péricas 1
  • 2. 2.3.2 Tipos Básicoschar apenas 1 caractere alfanumérico (ex.: ´f´) 1 byteshort nºs inteiros (ex.: 123) 2 bytesint nºs inteiros (ex.: 1245234) 4 byteslong nºs inteiros (ex.: 1245234) 4 bytesfloat nºs fracionários com precisão simples (ex.: 7.5) 4 bytesdouble nºs fracionários com precisão dupla (ex.: 3.4E100) 8 bytes2.3.3 Declaração de VariáveisSintaxe: tipo nome_variável;Ex.: int x, y; float f;2.3.4 Inicialização de VariáveisSintaxe: nome_variável = valor;Ex.: x = y = 10; f = 3.5;2.3.5 Declaração e Inicialização de VariáveisSintaxe: tipo nome_variável = valor;Ex.: int x =10, y =10; float f = 3.5;2.4 Definição de ConstantesRepresentam localizações na memória, de dados que não podem ser alteradosdurante a execução do programa.2.5 Constantes em C++2.5.1 Nome das variáveisPor convenção sempre MAIÚSCULASFrancisco Adell Péricas 2
  • 3. 2.5.2 Declaração e Inicialização de ConstantesSintaxe: #define NOME_CONSTANTE valorEx.: #define PI 3.14159 #define MAX 5003 Operadores3.1 Operador de Atribuição ( = )Sintaxe: nome_variável = expressão;Ex.: y = 2; // atribui o valor 2 a y x = 4 * y + 3; // atribui o valor da expressão a xCUIDADO: Conversão de Tipos em AtribuiçõesRegra: O valor do lado direito de uma atribuição é convertido no tipo do ladoesquerdo.ex.: int x; float f; x = f = 3.5; // resulta em f = 3.5 e x = 3 f = x = 3.5; // resulta em f = 3.0 e x = 33.2 Operadores Aritméticos3.2.1 Operadores Unários (atuam sobre apenas um operando) - (menos unário) multiplica o operando por (-1) ++ (incremento) incrementa o operando em uma unidade -- (decremento) decrementa o operando em uma unidadeEx.: x = 2; y = 4*(x) + 3;Ao substituirmos (x) pela expressão, teremos:++x incrementa o valor de x antes de usá-lo (portanto usaremos x = 3 e teremos y = 15)x++ incrementa o valor de x depois de usá-lo (portanto usaremos x = 2 e teremos y = 11)--x decrementa o valor de x antes de usá-lo (portanto usaremos x = 1 e teremos y = 7)x-- decrementa o valor de .x depois de usá-lo (portanto usaremos x = 2 e teremos y = 11)Francisco Adell Péricas 3
  • 4. 3.2.2 Operadores Binários (atuam sobre dois operandos) + adição - subtração * multiplicação / divisão % mod - fornece o resto da divisão de 2 nºs inteiros & E binário | OU binário ! NÃO binárioEx.: 10 % 2 = 0 11 % 2 = 13.2.3 Precedência 1. ++, -- 2. *, /, % 3. +, -Para alterar a precedência basta colocar a expressão entre parênteses. Quando doisoperandos têm o mesmo nível de precedência, eles são avaliados da esquerda para adireita.Ex.: (x + y) / 2 // será feito 1º a soma e depois a divisão x/y* 2 // será feito 1º a divisão e depois a multiplicação3.3 Operadores de Atribuição CompostosSintaxe: expressão_1 operador = expressão_2é equivalente a expressão_1 = expressão_1 operador expressão_2Ex.: x=x*5 x *= 5 a =a +1 a += 1 ou a++ x=x/b x /= b y=y–1 y -= 1 ou --y3.4 Operadores Relacionais3.4.1 OperadoresSão usados para comparar expressões. Resultam em falso ou verdadeiro. == igual – comparação: compara se 2 valores são iguais > maior que < menor que >= maior ou igualFrancisco Adell Péricas 4
  • 5. <= menor ou igual != diferenteEx.: 4 == 3 // resulta em falso 3>2 // resulta em verdadeiro3.4.2 Precedência 1. <, <=, >, >= 2. != , ==3.5 Operadores LógicosPermitem relacionar duas ou mais expressões. && e - resulta em verdadeiro se ambas expressões forem verdadeiras || ou - resulta em verdadeiro se pelo menos uma expressão for verdadeira ! não - resulta em verdadeiro se a expressão for falsaEx.: (5 > 2) && (3 != 2) // resulta em verdadeiro – ambos verdadeiros (5 < 2) && (3 != 2) // resulta em falso – apenas 1 verdadeiro (5 < 2) && (3 == 2) // resulta em falso – ambos falsos (3 >= 2) | | (4 != 2) // resulta em verdadeiro – ambos verdadeiros (3 >= 2) | | (4 == 2) // resulta em verdadeiro – pelo menos 1 verdadeiro (3 <= 2) | | (4 == 2) // resulta em falso – ambos falsos !(4 == 2) // resulta em verdadeiro – pois a expressão é falsa !(4 != 2) // resulta em falso – pois a expressão é verdadeira4 Controle de Fluxo4.1 Instrução if...elseExecuta condicionalmente um grupo de instruções, dependendo do valor de umaexpressão.Fluxograma: condição? condição? V F V F comando 1 comando 1 comando 1 comando 2 comando 2 comando 2 ... ... ...Francisco Adell Péricas 5
  • 6. Sintaxes: if (condição) { [comandos] } if (condição) { [comandos] } else { [comandos] }Comentários: • Executando um bloco if, a condição é testada. Se a condição for verdadeira, as instruções seguintes são executadas. Se a condição for falsa, a condição else (se houver) será executada.5 Estruturas de Repetição5.1 Instrução forRepete um grupo de instruções um número específico de vezes.Fluxograma: inic. condição? incr. F V comando 1 comando 2 ...Sintaxe: for ([inicialização]; [condição]; [incremento]) { [comandos] [break;] [comandos] }Comentários: • Qualquer número de instruções break pode ser posicionado em qualquer lugar do loop como meio alternativo de sair.Francisco Adell Péricas 6
  • 7. • Você pode aninhar loops for posicionando um dentro do outro. Dê um nome de variável exclusivo como seu contador a cada loop. A construção a seguir é correta: for (I = 1; I <= 10; I++) { for (J = 1; J <= 10; J++) { for (K = 1; K <= 10; K++) { ... } } }5.2 Instrução whileExecuta uma série de instruções desde que uma determinada condição sejaverdadeira.Fluxograma: condição? V F comando 1 comando 2 ...Sintaxe: while (condição) { [comandos] }Comentários: • Se a condição for verdadeira, todos os comandos serão executados. Então o controle retorna para a instrução while e a condição é novamente verificada. Se a condição ainda for verdadeira, o processo é repetido. Se não for verdadeira, a execução continua com a instrução seguinte ao bloco de comandos. • Os loops while podem ser aninhados a qualquer nível.Dica: A instrução while fornece um meio mais estruturado e flexível para executar umloop.5.3 Instrução do...whileFrancisco Adell Péricas 7
  • 8. Repete um bloco de instruções enquanto uma condição é verdadeira ou até que elase torne verdadeira.Fluxograma: comando 1 comando 2 ... V condição? FSintaxe: do { [comandos] [break;] [comandos] } while (condição)Comentários: • Qualquer número de instruções break pode ser posicionado em qualquer lugar em do…while como alternativa para sair de um do…while. • Quando usada dentro de instruções do…while aninhadas, break transfere o controle para o loop que está aninhado em um nível acima do loop onde ocorre break.6 Funções6.1 Funções da BibliotecaHá uma lista imensa de funções que estão disponíveis a partir das bibliotecas doscompiladores. Para utilizar-se delas é preciso acessar a ajuda destas bibliotecas ouguias de referência de C++ para se ter a forma de utilização das funções e classesdisponíveis.A seguir será apresentado as principais funções de entrada e saída de dadosutilizadas no C++.6.1.1 coutEsta função imprime dados na tela e o arquivo de cabeçalho a ser incluído: iostream.hEx.: float x = 1.25; int y = 1;Francisco Adell Péricas 8
  • 9. char z = ‘a’; cout << “FLOAT = “ << x << “ INT = ” << y << “ CHAR = “ << z << endl;Saída na tela: FLOAT = 1.25 INT = 1 CHAR = aO manipulador endl é utilizado para passar o cursor para a próxima linha. O manipulador flushé utilizado para esvaziar o buffer de saída, apresentando o seu conteúdo imediatamente. Omanipulador setprecision(n) define um determinado número de dígitos de precisão para pontoflutuante.Para formatar as saídas, utilizam-se alguns métodos adicionais, os quais estão disponíveis noarquivo de cabeçalho iomanip.h cout.width(10); // define uma largura de 10 caracteres cout.width(0); // retorna a saída para largura padrão cout.fill(‘0’); // preenche os campos de uma largura de impressão com 0s6.1.2 cinEsta função lê dados do teclado e o arquivo de cabeçalho a ser incluído: iostream.hEx.: float x; int y; char z; cin >> x >> y >> z;Entrada de dados da tela: 1.25 1 aPara ler linhas inteiras pelo teclado, utiliza-se o método adiciona cin.getline( buff, len, delim),o qual está disponível no arquivo de cabeçalho iomanip.h cin.getline(buffer, 25); // lê uma linha de até 25 caracteres do teclado até ENTER cin.getline(buffer, 20, ‘x’); // lê uma linha de até 20 caracteres do teclado até ‘x’6.1.3 ofstreamEsta classe abre um arquivo para escrita e o arquivo de cabeçalho a ser incluído: fstream.hEx.: float x = 1.25; int y = 1; ofstream tfile(“arq.txt”); tfile << “FLOAT = “ << x << “ INT = ” << y << endl;Cria o arquivo arq.txt no diretório corrente com o seguinte conteúdo: FLOAT = 1.25 INT = 1Francisco Adell Péricas 9
  • 10. 6.1.4 ifstreamEsta classe abre um arquivo para leitura e o arquivo de cabeçalho a ser incluído: fstream.hEx.: char buff[250]; istream tfile(“arq.txt”); while (!tfile.eof()) { tfile.getline(buff, 250); cout << buff << endl; }Lê o arquivo arq.txt do diretório corrente e apresenta-o na tela. FLOAT = 1.25 INT = 16.2 Funções definidas pelo usuárioÉ uma seção de código independente e autônoma, escrita para desempenhar uma tarefaespecífica. Deve conter protótipo e definição da função.6.2.1 Protótipo da funçãoSintaxe: tipo_retorno nome_função(tipo_arg nome1, ...., tipo_arg nomen); • tipo_retorno – tipo de variável que a função retornará. Pode ser char, int, float, double e void (se não retornar nada). • nome_função – descreve o que a função faz. • tipo_arg – tipo e nome das variáveis que serão passados para a função. Pode ser char, int, float. • nomen – double, void.Sempre termina com; (ponto e vírgula) e vem nas componentes iniciais.6.2.2 Definição da funçãoSintaxe: tipo_retorno nome_função(tipo_arg nome1, ...., tipo_arg nomen) { comandos; } • tipo_retorno – tipo de variável que a função retornará. Pode ser char, int, float, double e void (se não retornar nada). • nome_função – descreve o que a função faz. • tipo_arg – tipo e nome das variáveis que serão passados para a função. Pode ser char, int, float.Francisco Adell Péricas 10
  • 11. • nomen – double, void.É a função propriamente dita. A 1ª linha é idêntica ao protótipo com exceção do ;(ponto e vírgula). O corpo da função deve estar entre { } (chaves).7 Matrizes7.1 VetoresVetores nada mais são que matrizes unidimensionais. Vetores são uma estrutura dedados muito utilizada. É importante notar que vetores, matrizes bidimensionais ematrizes de qualquer dimensão são caracterizadas por terem todos os elementospertencentes ao mesmo tipo de dado. Para se declarar um vetor pode-se utilizar aseguinte forma geral: tipo_da_variável nome_da_variável [tamanho];Quando o C++ vê uma declaração como esta ele reserva um espaço na memóriasuficientemente grande para armazenar o número de células especificadas emtamanho. Por exemplo, declarando: float exemplo [20];O C++ irá reservar 4x20=80 bytes. Estes bytes são reservados de maneira contígua.Na linguagem C a numeração começa sempre em zero. Isto significa que, no exemploacima, os dados serão indexados de 0 a 19. Para acessá-los escreve-se: exemplo[0] exemplo[1] . . . exemplo[19]Mas ninguém o impede de escrever: exemplo[30] exemplo[103]Por quê? Porque o C++ não verifica se o índice utilizado está dentro dos limitesválidos. Este é um cuidado que deve-se tomar. Se o programador não tiver atençãocom os limites de validade para os índices ele corre o risco de ter variáveis sobre-escritas ou de ver o computador travar.7.2 Matrizes bidimensionaisA forma geral da declaração de uma matriz bidimensional é muito parecida com adeclaração de um vetor: tipo_da_variável nome_da_variável [altura][largura];Francisco Adell Péricas 11
  • 12. É muito importante ressaltar que, nesta estrutura, o índice da esquerda indexa aslinhas e o da direita indexa as colunas. Quando vamos preencher ou ler uma matriz noC++ o índice mais à direita varia mais rapidamente que o índice à esquerda. Mais umavez é bom lembrar que, na linguagem C++, os índices variam de zero ao valordeclarado, menos um; mas o C++ não verifica isto para o usuário. Manter os índicesna faixa permitida é tarefa do programador.7.3 Matrizes multidimensionaisO uso de matrizes multidimensionais na linguagem C++ é simples. Sua forma geral é: tipo_da_variável nome_da_variável [tam1][tam2] ... [tamN];Uma matriz N-dimensional funciona basicamente como outros tipos de matrizes. Bastalembrar que o índice que varia mais rapidamente é o índice mais à direita.7.4 Inicialização de MatrizesPodemos inicializar matrizes, assim como podemos inicializar variáveis. A forma geralde uma matriz como inicialização é: tipo_da_variável nome_da_variável [tam1][tam2] ... [tamN] = {lista_de_valores};A lista de valores é composta por valores (do mesmo tipo da variável) separados porvírgula. Os valores devem ser dados na ordem em que serão colocados na matriz.Abaixo vemos alguns exemplos de inicializações de matrizes: float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 }; int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };O primeiro demonstra inicialização de vetores. O segundo exemplo demonstra ainicialização de matrizes multidimensionais, onde matrx está sendo inicializada com 1,2, 3 e 4 em sua primeira linha, 5, 6, 7 e 8 na segunda linha e 9, 10, 11 e 12 na últimalinha. Repare que devemos incluir o ; no final da inicialização.7.5 Inicialização sem especificação de tamanhoPodemos, em alguns casos, inicializar matrizes das quais não sabemos o tamanho apriori. O compilador C++ vai, neste caso verificar o tamanho do que você declarou econsiderar como sendo o tamanho da matriz. Isto ocorre na hora da compilação e nãopoderá mais ser mudado durante o programa, sendo muito útil, por exemplo, quandovamos inicializar uma matriz e não queremos contar quantos elementos serãonecessários. Por exemplo: int matrx [][2] = { 1,2,2,4,3,6,4,8,5,10 };Repare que o artifício para realizar a inicialização sem especificação de tamanho énão especificar o tamanho! No exemplo o valor não especificado será 5.Francisco Adell Péricas 12
  • 13. 8 StringsStrings são vetores de caracteres (chars). As strings são o uso mais comum para osvetores. Devemos apenas ficar atentos para o fato de que as strings têm o seu últimoelemento como um 0. A declaração geral para uma string é: char nome_da_string [tamanho];Devemos lembrar que o tamanho da string deve incluir o 0 final. A biblioteca padrãodo C++ possui diversas funções que manipulam strings. Estas funções são úteis poisnão se pode, por exemplo, igualar duas strings desta forma: string1=string2; // NÃO faça istoFazer isto é um desastre. As strings devem ser igualadas elemento a elemento.A seguir serão apresentadas algumas funções básicas para manipulação de strings.As funções apresentadas nestas seções estão no arquivo cabeçalho string.h.8.1 Funções de Manipulação de Strings8.1.1 strcpySua forma geral é: strcpy (string_destino,string_origem);A função strcpy() copia a string-origem para a string- destino.8.1.2 strcatA função strcat() tem a seguinte forma geral: strcat (string_destino,string_origem);A string de origem permanecerá inalterada e será anexada ao fim da string de destino.8.1.3 strlenSua forma geral é: strlen (string);A função strlen() retorna o comprimento da string fornecida. O terminador nulo não écontado. Isto quer dizer que, de fato, o comprimento do vetor da string deve ser um amais que o inteiro retornado por strlen().8.1.4 strcmpFrancisco Adell Péricas 13
  • 14. Sua forma geral é: strcmp (string1,string2);A função strcmp() compara a string 1 com a string 2. Se as duas forem idênticas afunção retorna zero. Se elas forem diferentes a função retorna não-zero.8.2 Matrizes de stringsMatrizes de strings são matrizes bidimensionais. Uma string é na realidade um vetor.Portanto um vetor de strings será uma lista de vetores. Esta estrutura é uma matrizbidimensional de caracteres. Podemos ver a forma geral de uma matriz de stringscomo sendo: char nome_da_variável [num_de_strings][compr_das_strings];Para acessar uma string individual é só usar apenas o primeiro índice: nome_da_variável [índice]8.3 Inicialização de StringsPodemos inicializar strings, assim como podemos inicializar matrizes. Abaixo vemosalguns exemplos de inicializações de strings: char str [10] = { J, o, a, o, 0 }; char str [10] = "Joao"; char str_vect [3][10] = { "Joao", "Maria", "Jose" };No primeiro exemplo vê-se como inicializar uma string e, no segundo exemplo, ummodo mais compacto de inicializar uma string. O terceiro exemplo combina as duastécnicas para inicializar um vetor de strings. Repare que devemos incluir o ; no final dainicialização.8.4 Inicialização sem especificação de tamanhoDa mesma forma que ocorre com matrizes, podemos, em alguns casos, inicializarstrings das quais não sabemos o tamanho a priori. O compilador C++ vai, neste casoverificar o tamanho do que você declarou e considerar como sendo o tamanho damatriz. Isto ocorre na hora da compilação e não poderá mais ser mudado durante oprograma, sendo muito útil, por exemplo, quando vamos inicializar uma string e nãoqueremos contar quantos caracteres serão necessários. Por exemplo: char mess [] = "Linguagem C: flexibilidade e poder.";No exemplo, a string mess terá tamanho 36. Repare que o artifício para realizar ainicialização sem especificação de tamanho é não especificar o tamanho!Francisco Adell Péricas 14
  • 15. 9 Estrutura de um Programa em C++Um programa em C++ é composto pelos seguintes elementos: • Cabeçalho: contém arquivos de cabeçalho, declaração de constantes, protótipos de funções e de classes e variáveis globais • Funções: contém variáveis locais e definições das funções • Função main( ): contém variáveis locais e instruções do programaFrancisco Adell Péricas 15