apostila c e c++

Upload: leandro-azevedo

Post on 15-Jul-2015

154 views

Category:

Documents


14 download

TRANSCRIPT

PROGRAMAO EM L I N G U A G E M C / C++

Por Marcos Romerowww.geocities.com/progjogos

SUMRIO

Parte I - Conhecendo a linguagem C Captulo 1 : Primeiros programas em C Captulo 2 : Variveis e Operadores Captulo 3 : Controle de fluxo Captulo 4 : Matrizes e Strings Programa exemplo da parte I : Criptografia Parte II - Se aprofundando na linguagem C

Captulo 5 : Estruturas Captulo 6 : Ponteiros Captulo 7 : Funes Captulo 8 : Arquivos Programa exemplo da parte II : Agenda Parte III - Programao orientada a objetos com C++ Captulo 9 : Primeiros programas em C++ Captulo 10 : Classes e Objetos Captulo 11 : Melhorando as classes Captulo 12 : Herana e Polimorfismo Programa exemplo da parte III : Contas de um Banco

pg. 3 / 58 Programao em linguagem C / C++ Autor : Marcos Romero

Parte I - Conhecendo a linguagem CCaptulo 1 : Primeiros programas em C - Programa 1: Comearemos nosso estudo da linguagem C examinando um programa bem simples que escreve na tela o texto "Alo Turma":

/* Nome do arquivo : cap1_1.c */ main() { printf("Alo Turma"); }

A primeira linha do programa apenas um comentrio indicando o nome do arquivo. Na linguagem C os comentrios so delimitados por /* e */. O arquivo que contm o cdigo deve ter a extenso ".C". Em seguida est a funo "main( )" que todo programa em C deve ter. nesta funo que o programa inicia sua execuo. O par de chaves { } delimitam um bloco de cdigo que, neste caso, o contedo da funo "main( )". A funo "printf( )" usada para escrever texto na tela. Ela recebe como argumento uma string (conjunto de caracteres) que est entre aspas duplas "...". Depois do printf h um ponto-e-vrgula que indica o fim de um comando em C. importante observar que a linguagem C diferencia as letras maisculas das minsculas, isto significa que se for escrito "Main( )" ou "MAIN( )" um erro ocorrer. - Programa 2:/* Nome do arquivo : cap1_2.c */ main() { int nota; nota = 8; printf("\nA nota da prova foi %d \n", nota); printf("FIM DE PROGRAMA"); }

Este programa introduz um conceito muito importante: as variveis. Elas so usadas para armazenar valores. No exemplo, o comando "int nota;" define uma varivel que guardar valores do tipo inteiro. A linha seguinte atribui o valor 8 varivel. No C o smbolo "=" o operador de atribuio e sua funo de pegar o valor que est a sua direita e armazenar na varivel que est a sua esquerda.

pg. 4 / 58 Programao em linguagem C / C++ Autor : Marcos Romero

A funo printf( ) usa o cdigo de formatao %d dentro da string para indicar que um inteiro em formato decimal ser escrito nesta posio. A varivel passada como segundo argumento, usada uma vrgula para separar os argumentos. O "\n" tambm um cdigo de formatao conhecido como quebra-de-linha e faz o cursor de insero do texto ir para a linha seguinte.

- Programa 3:

/* Nome do arquivo : cap1_3.c */ main() { int num1,num2,resultado; printf("\nDigite um numero de 1 a 9 e pressione ENTER : "); scanf("%d",&num1); printf("\nDigite outro numero de 1 a 9 e pressione ENTER : "); scanf("%d",&num2); resultado = num1 + num2; printf("\n %d + %d = %d", num1, num2, resultado); }

Pode-se definir vrias variveis do mesmo tipo em uma nica linha como ivsto neste exemplo. usado a funo scanf( ) para ler um valor digitado pelo usurio. O cdigo %d indica que ser lido um inteiro e armazenado na varivel "num1". O "&" que precede o "num1" sempre necessrio para que um valor possa ser guardado em uma varivel, mais adiante no curso entenderemos melhor o motivo. Depois da leitura do segundo nmero h uma expresso que soma os dois nmeros lidos e armazena o valor resultante na varivel "resultado". Finalmente, usado um printf( ) para ilustrar a expresso. Cada "%d" corresponde a um argumento na ordem em que aparecem.

Dica : O esquecimento do "&" na funo scanf( ) uma fonte muito comum de erros, principalmente porque o compilador no ir lhe avisar quando isto ocorrer.

pg. 5 / 58 Programao em linguagem C / C++ Autor : Marcos Romero

Captulo 2 : Variveis e Operadores - Variveis: H algumas regras bsicas para a criao de nomes de variveis : - O primeiro caractere deve ser uma letra ou um sublinhado, mas no um nmero. - Os caracteres seguintes podem ser nmeros, letras ou sublinhados. - No podem ser usados nenhum dos operadores da linguagem C. - No podem ser usados caracteres acentuados. Exemplos: corretos aluno1 calculo endereco nome_aluno 1aluno clculo endereo nome-aluno incorretos

Dica: Lembre-se que a linguagem C distingue os caracteres maisculos dos minsculos, ento se for definida uma varivel de nome "NOTA" e depois houver uma referncia como "nota", o compilador no associar as duas e ocorrer um erro. A tabela seguinte contm os tipos de dados bsicos do C.

Tipo char int float double 8 16 32 64 -128 a 127 -32768 a 32767 3.4 E-38 a 3.4 E+38 1.7 E-308 a 1.7 E+308

Bits

Faixa

O tipo char usado para guardar caracteres do padro ASCII de 8 bits que contm letras, dgitos e smbolos. As variveis do tipo int podem conter valores inteiros. O tipo float necessrio para armazenar nmeros fracionrios que tambm so chamados de ponto flutuante. O tipo double eqivale ao float s que tem uma capacidade bem maior de armazenamento.

pg. 6 / 58 Programao em linguagem C / C++ Autor : Marcos Romero

Pode-se aplicar o modificador de tipo unsigned antes de char e int, fazendo com que as variveis s aceitem valores positivos. O tipo char passa a aceitar valores entre 0 e 255 e o tipo int entre 0 e 65535. O tipo char pode ser usado tambm como se fosse um inteiro pequeno. Os modificadores long e short so usados com o tipo int. O long faz com que a varivel tenha 32 bits para armazenamento enquanto o short tem apenas 16 bits. Nos compiladores para sistemas operacionais de 32 bits (como o Windows 95) o tamanho padro do tipo int de 32 bits. O programa a seguir ilustra o uso das variveis:/* cap2_1.c */ main() { char letra = 'm'; int num_inteiro; float num_real; unsigned int sem_sinal; short int num_16b; long int num_32b; printf("\n *** ESTUDO DAS VARIAVEIS *** \n"); printf("\n Digite um valor inteiro e um valor fracionario :\n"); scanf("%d %f", &num_inteiro, &num_real); printf("\n O no. inteiro digitado foi : %d", num_inteiro); printf("\n O no. fracionario digitado foi : %f", num_real); printf("\n No. fracionario com formatacao : %.3f", num_real); printf("\n\n A letra \'%c\' tem o codigo ASCII de %d",letra,letra); sem_sinal = -10; /* esta variavel nao suporta no. negativos*/ printf("\n\n Valor da variavel sem_sinal : %u", sem_sinal); num_16b = 35000; /*este valor excede o limite maximo da variavel*/ num_32b = 35000;/* sem problemas*/ printf("\n Valor do num_16b : %d", num_16b); printf("\n Valor do num_32b (long): %ld", num_32b); }

Logo no comeo do programa definida uma varivel do tipo char que recebe uma letra inicial. Um nico caractere deve ter aspas simples (ex: 'a') enquanto que uma string tem aspas duplas (ex: "a"). Em seguida so definidas outras variveis de diversos tipos. usado outros cdigos de formatao do printf( ) no programa. Na lista a seguir h comentrios sobre os cdigos mais comuns.

pg. 7 / 58 Programao em linguagem C / C++ Autor : Marcos Romero

cdigo %c %d %f %u %ld %% \n \t \" \' \\

significado caractere inteiro decimal nmero fracionrio inteiro sem sinal inteiro longo imprime o sinal % mudana de linha tabulao imprime aspas duplas imprime aspas simples imprime a barra invertida

No programa a funo scanf( ) est lendo dois valores de uma nica vez. Para separar os valores na digitao pode-se usar um espao, um tab ou uma quebra-de-linha (tecla ENTER). Mais adiante visto em um printf o cdigo "%.3f" que especifica um nmero fracionrio de 3 casas decimais. A linha seguinte demonstra que a varivel do tipo char pode ser usada como caractere ou como um valor decimal. Depois disso feito um teste com os limites das variveis. - Operadores: Um operador um smbolo que instrui o compilador a executar certas manipulaes matemticas ou lgicas. A lista a seguir mostra os operadores aritmticos. Operador + * / % Ao adio subtrao multiplicao diviso resto da diviso

Estes operadores executam as operaes bsicas da matemtica. Deve-se ter cuidado com o operador de diviso, se ele for usado com nmeros inteiros, seu resultado tambm ser inteiro (Ex: 9 / 4 ser igual a 2). O operador % retorna o resto de uma diviso entre inteiros (Ex: 9 % 4 ser igual a 1). H tambm os operadores de relao e os operadores lgicos, que retornam sempre falso (0) ou verdadeiro (1). Em C, o verdadeiro representado por qualquer valor diferente de zero, enquanto que o falso zero.

pg. 8 / 58 Programao em linguagem C / C++ Autor : Marcos Romero

Operadores de Relao Operador > >= < > < >= = = != & ^ | && || ?: = += -= *= /= Menor Use sempre parnteses para deixar clara a ordem de execuo de uma expresso. Por exemplo, compare as seguintes expresses : x = m*2 + 3*j / f - 5; x = ( m*2 ) + ( (3 * j / f ) - 5 );

pg. 10 / 58 Programao em linguagem C / C++ Autor : Marcos Romero

/* cap2_2.c Autor: Marcos Romero */ main() { int x,y; int resto1, resto2; printf("\n *** ESTUDO DOS OPERADORES *** \n"); printf("\n Digite dois numeros inteiros:\n"); scanf("%d %d", &x, &y); printf("\n\n Operadores Aritmeticos "); printf("\n %d + %d = %d ", x, y, x+y); printf("\n %d - %d = %d ", x, y, x-y); printf("\n %d * %d = %d ", x, y, x*y); printf("\n %d / %d = %d (divisao inteira)", x, y, x/y); printf("\n %d / %d = %.2f (divisao fracionaria)", x, y,(float) x/y); printf("\n %d %% %d = %d (resto da divisao)", x, y, x%y); printf("\n\n Operadores de Relacao "); printf("\n %d == %d retorna %d", x, y, printf("\n %d != %d retorna %d", x, y, printf("\n %d < %d retorna %d", x, y, printf("\n %d > %d retorna %d", x, y,

x==y); x!=y); xy);

resto1 = x % 2; /* o resultado sera 0 ou 1 */ resto2 = y % 2; printf("\n\n printf("\n%d printf("\n%d printf("\n ! Operadores Logicos "); && %d retorna %d -(AND)",resto1,resto2,resto1&&resto2); || %d retorna %d -(OR)",resto1,resto2,resto1 ||resto2); %d retorna %d -(NOT)", resto1, !resto1);

printf("\n\n Uso de Parenteses "); printf("\n %d + %d * 4 = %d", x, y, x + y * 4); printf("\n(%d + %d)* 4 = %d", x, y, (x + y) * 4); printf("\n\n Resultado da expressao: %d