Вы находитесь на странице: 1из 37

Linguagem C Aprenda aqui! - http://groups.google.

com/group/aprendaC

2007

Sumrio
Captulo 1 ............................................................................................................................................... 3 Tipos de dados bsicos: ...................................................................................................................... 3 Identificadores: .................................................................................................................................. 3 Tipos de variveis: .............................................................................................................................. 4 Int (Inteiros) ................................................................................................................................... 4

1
char (Caracteres) ............................................................................................................................ 4 float (Reais).................................................................................................................................... 4 double (Reais com dupla preciso) ................................................................................................. 4 Void (vazio) .................................................................................................................................... 4 Variveis: ........................................................................................................................................... 5 FUNO main() ................................................................................................................................. 5 DIRETIVA include: ............................................................................................................................... 5 FUNO printf() ................................................................................................................................. 6 Primeiro programa em C: ................................................................................................................... 7 Operadores Aritmticos: .................................................................................................................... 9 Operadores Relacionais: ..................................................................................................................... 9 Operadores Lgicos: ........................................................................................................................... 9 FUNO scanf()................................................................................................................................ 10 FUNES getch() e getche() ............................................................................................................. 12 Estruturas Condicionais .................................................................................................................... 13 IF - ELSE: ...................................................................................................................................... 13 IF - ELSE aninhados....................................................................................................................... 15 SWITCH ()..................................................................................................................................... 16 Operador ternrio (?) ................................................................................................................... 18 Comentrios:.................................................................................................................................... 19 Praticando Conhecimento ................................................................................................................ 20 Soluo: ....................................................................................................................................... 20

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC
Captulo 2 ............................................................................................................................................. 23 Operadores Compostos .................................................................................................................... 23 Operadores de incremento e decremento ........................................................................................ 23 Estruturas de Repetio ................................................................................................................... 24 For: .............................................................................................................................................. 24 While: .......................................................................................................................................... 26 Do-While:..................................................................................................................................... 28 Praticando Conhecimento ................................................................................................................ 30 Soluo: ....................................................................................................................................... 30 Bibliografia: .......................................................................................................................................... 32

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Linguagem de programao C
Captulo 1
A linguagem C portvel e no efetua nenhuma verificao em tempo de execuo, uma linguagem case sensitive, ou seja, diferencia maisculas de minsculas, estruturada e utiliza o conceito de blocos de programao, mas essa teoria toda ser aprendida na prtica. Existem algumas palavras reservadas da linguagem, so elas: Auto switch extern continue volatile* long Double case return for do int enum * const * signed * if struct register float void * static break typedef short default while else char unsigned goto sizeof

Tipos de dados bsicos:


Tipo char int float double void Tamanho em bits 08 16 32 64 0 Tamanho em bytes 1 2 4 8 0 Faixa 0 a 255 -32768 a 32767 3.4E-38 a 3.4E38
seis dgitos de preciso

1.7E-308 a 1.7E308
dez dgitos de preciso

sem valor

A definio do tipo de dados permite que o computador aloque e mantenha livre um espao exato de memria que vai ser utilizado pelo programa.

Identificadores:
So as expresses definidas pelo usurio como nomes de variveis e funes. Existem regras para declarao de variveis, apenas letras, nmeros e underscore (_) so permitidos com exceo apenas para o cifro ($) que representa variveis de ambiente, mas deixem essa declarao para o C avanado. Devem comear sempre por letra, ou underscore (_), como foi dito antes a linguagem case sensitive, ou seja, maisculas e minsculas so diferentes e no pode ser igual a uma palavra reservada da linguagem. Exemplos corretos: nome, casa, teste1,x, nome_completo Exemplos incorretos: 1teste,&numero,123,aniversrio, numero!

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC

Tipos de variveis:
A linguagem C tem um sistema de tipos semelhante ao de alguns descendentes da linguagem Algol, tais como Pascal. Possui tipos para nmeros inteiros de vrios tamanhos com e sem sinal, nmeros de ponto flutuante, caracteres e estruturas (structs), mas isso ser explicado futuramente. Int (Inteiros) O tipo de dados int (inteiro) serve para armazenar valores numricos inteiros. Existem vrios tipo de inteiros, cada um de um tamanho diferente (dependendo do SO): int, pode possuir 16, ou 32 bits, dependendo se o processador de 16 ou 32 bits. short int, possui tamanho de 16 bits long int, possui tamanho de 32 bits long long int (s em compiladores C99), possui tamanho de 64 bits Um int pode ser por padro um long int ou um short int dependendo da plataforma onde est a correr. Todos estes tipos de inteiros podem ainda ser declarados precedidos da clusula unsigned, o que faz com que s suporte nmeros positivos. Isto faz com que, com o mesmo tamanho, uma varivel suporte mais nmeros positivos do que um signed (todos os inteiros so signed por omisso). char (Caracteres) O tipo char ocupa 1 byte, e serve para armazenar caracteres. Isso significa que o programa reserva um espao de 8 bits na memria RAM do computador para armazenar um valor. Com o tipo char tambm possvel armazenar strings, que so cadeias de caracteres. float (Reais) O tipo de dados float serve para armazenar nmeros de ponto flutuante, ou seja, com casas decimais. double (Reais com dupla preciso) O tipo de dados double serve para armazenar nmeros de ponto flutuante de dupla preciso, tem o dobro do tamanho do float e portanto o dobro da capacidade. Void (vazio) Este tipo serve para indicar que um resultado no tem um tipo definido. Uma das aplicaes deste tipo em C criar um tipo vazio que pode posteriormente ser modificado para um dos tipos anteriores. Vejam na seqncia as regras para declarar variveis, como na imagem ao lado.

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Variveis:
Posio nomeada de memria usada para guardar um valor que pode ser modificado pelo programa, todas variveis em C devem ser declaradas antes de serem usadas Forma geral da definio de varivel <tipo de dado> <identificador>; onde <tipo de dado> qualquer tipo vlido mais qualquer modificador <identificador> um ou mais nomes de identificadores separados por , Exemplos: char letra; int x,y,z,numero;

FUNO main()
A funo main obrigatria em um programa na linguagem C, e marca o ponto de incio da execuo do programa, se um programa consistir em apenas uma funo esta ser main(). Todas as instrues devem estar dentro das chaves que iniciam e terminam a funo (bloco de instruo) e so executadas na ordem seqencial de escrita no programa.

DIRETIVA include:
Provoca a incluso de um programa fonte em outro, instruindo ao compilador a ler e agregar o arquivo no programa que tiver a diretiva include. #include <arq> arquivo no diretrio padro ou
Ex: main{ 1) A linguagem C baseada em blocos, como j foi explicado.

#include arq arquivo no diretrio atual arq - est representando o nome do arquivo a ser includo O smbolo de sustenido #, antes da diretiva include, um sinal para o pr-processador, que tm a funo de examinar o programa fonte em C e executar certas modificaes, baseadas nas instrues das diretivas O include importa as bibliotecas. A biblioteca padro da linguagem C stdio.h. Ex: #include stdio.h

} As chaves representam o incio({) e o final(}) do bloco de programao. 2) Em C o compilador vai interpretando a linha at encontrar (;) ponto e virgula, ele indica o final da instruo. Ex: char nome;

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC

FUNO printf()
Uma das funes de sada que pode ser usada em C, a <expresso controle> pode conter caracteres que sero exibidos na tela e cdigos de formatao dos argumentos, a <lista de argumentos> formada pelos argumentos que sero usados pela funo, faz parte da biblioteca padro da linguagem C (stdio.h) e pode receber um nmero varivel de argumentos (separados por ,) printf(<expresso controle>,<lista de argumentos>); Exemplo: printf(Escrevendo um programa);

printf(Esta a letra %c, C); printf(Escreva o valor %d \n %s,2, por extenso); Alguns caracteres no podem ser obtidos diretamente do teclado (como mudana de linha) por isso tem a sua representao feita por cdigos especiais usando a \ com a combinao de outro caractere. Cdigo Significado \n \r \t \b \ \\ \f \0 \x nova linha retorno do cursor tab retrocesso aspas barra salta pgina de formulrio nulo caractere grfico (este smbolo escreve cdigos acima de 127 decimal) \xdd onde dd hexad. %% Cdigo Formato %c %d %e %f %g %o %s %u %x %ld %lf caractere simples (char) decimal (int) notao cientfica ponto flutuante (float) %e ou %f (o mais curto) octal cadeia de caracteres (string) decimal sem sinal hexadecimal decimal longo (long int) ponto flutuante longo (Double)

Apresenta o smbolo de porcentagem (%)

Em linguagem C podemos utilizar recursos do sistema operacional, um exemplo disso pausar a execuo do programa (system ()) atravs do comando PAUSE, exemplo: System (PAUSE);

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Primeiro programa em C:
Agora j temos base para o nosso primeiro programa em C. Estarei utilizando o compilador Dev C/C++ nestas aulas, ele open source e pode-se fazer o download no seguinte endereo http://www.bloodshed.net/devcpp.html Vamos parar de conversa e ir logo aos exemplos: 1) --------------------------------------------------------------------------------------------------------------------------

Figura 1 - Cdigo do programa, feito em Dev C/C++.

Figura 2 - Executando o programa acima.

Para compilar e executar um programa em C utilizando o Dev C/C++ basta apertar a tecla F9 e salvar o arquivo como (*.c).

Figura 3 - Salvando arquivo .c para execuo.


Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC

Atribuio de variveis:
Em C valores podem ser atribudos arbitrariamente, sendo necessrio apenas que o valor que esteja sendo atribudo seja do mesmo tipo da varivel declarada. Utilizamos o sinal de =, igual, para atribuir valores. Ex: numero = 10; Podemos tambm atribuir valores na prpria declarao da varivel. Ex: int numero = 10;

2) --------------------------------------------------------------------------------------------------------------------------

Figura 4 - Cdigo do programa, feito em Dev C/C++.

Figura 5 - Execuo do programa.

3) --------------------------------------------------------------------------------------------------------------------------

Notem que o exemplo 3 est igual ao exemplo 2 diferenciando apenas o modo da atribuio, como foi visto no quadro cima.
Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Operadores Aritmticos:
Os operadores em linguagem de programao so usados como na matemtica, vejamos alguns deles. + (Adio) - (Subtrao) * (Multiplicao) / (Diviso Real)
Soma nmeros. Ex: numero = 15 + 5; Desta forma, numero estar recebendo o resultado do calculo 15 + 5, no caso 20. Subtrai nmeros. Ex: numero = 15 - 5; Desta forma, numero estar recebendo o resultado do calculo 15 - 5, no caso 10. Multiplica nmeros. Ex: numero = 15 * 10; Desta forma, numero estar recebendo o resultado do calculo 15 * 10, no caso 150. Divide nmeros. Ex: numero = 15 / 3; Desta forma, numero estar recebendo o resultado do calculo 15 / 3, no caso 5. No caso de dois nmeros inteiros, a operao de diviso arredondar o resultado, por isso se voc deseja um valor preciso utilize pelo menos 1 nmero float ou Double. Recebe o resto da diviso. Ex: numero = 20 % 2; Desta forma, numero estar recebendo o resto do resultado do calculo 20%2 , no caso 0 pois 20 divisvel por 2 e possui resto 0.

% (Resto)

Operadores Relacionais:
== (Igualdade)
Compara dois valores e retorna 1 (verdadeiro) se forem iguais ou 0 (se forem verdadeiros), lembrando que == diferente de =, este atribui valores as variveis enquanto == compara dois valores verificando se so iguais. Verifica se um valor maior do que outro. Verifica se maior ou igual. Verifica se um valor menor do que outro. Verifica se menor ou igual. Compara dois valores e retorna 1 (verdadeiro) se forem diferentes ou 0 (se forem iguais).

> (Maior que) >= (Maior ou igual) < (Menor que) <= (Menor ou igual) != (Diferente)

Operadores Lgicos:
Os operadores lgicos servem para interligar mais de uma operao relacional. E assim como os relacionais retornam zero para falso e um para verdadeiro. && (E lgico) || (OU lgico)
Retorna verdadeiro se ambos os operandos so verdadeiros e falso nos demais casos. Exemplo: if( val1<2 && val2<6). Retorna verdadeiro se um ou ambos os operandos so verdadeiros e falso se ambos so falsos. Exemplo: if( val1>3 || val2<4). Usada com apenas um operando. Retorna verdadeiro se este falso e vice-versa. Exemplo: if( !var ).

! (NO lgico)

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC

FUNO scanf()
Funo de entrada/sada que pode ser usada em C, permite ler dados formatados da entrada padro (teclado). Sua <expresso controle> deve conter os cdigos compatveis com a formatao dos argumentos, a <lista de argumentos> nesta funo deve conter os endereos das variveis (usando o operador de endereo & em C). O smbolo %* indica que ser lido um valor do tipo especificado, mas no ser atribudo a nenhuma varivel (no devendo ter parmetros na lista de argumentos) Faz parte da biblioteca padro da linguagem C (stdio.h) e pode receber um nmero varivel de argumentos (separados por ,)

10

scanf(<expresso controle>,<lista de argumentos>); Exemplo: scanf(%f , &valor);

Vejamos em uma programa o uso do scanf():

Um endereo o nome que o computador usa para identificar varivel, pois toda varivel ocupa uma localizao na memria e seu endereo o do primeiro byte ocupado por esta varivel.

Cdigo %c %d %e %f %o %s %u %x %l %lf

Formatao da Funo leia um nico caractere leia um inteiro decimal leia um nmero em notao cientfica leia um nmero em ponto flutuante leia um inteiro octal leia uma srie de caracteres leia um decimal sem sinal leia um nmero hexadecimal leia um inteiro longo leia um double

Note que no campo voc informar apenas o tipo do dado que voc quer ler, seguindo os padres apresentados ao lado, depois disso separamos com uma vrgula (,) e informamos o endereo da varivel na qual receberemos o dado, no caso, idade. O operador (&) retorna o endereo da varivel.

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Figura 6 - Execuo do programa.

Para explicar melhor o conceito de endereo faremos um exemplo:

11

Figura 7 Cdigo.

Figura 8 Execuo.

System (cls); Esta funo efetua a limpeza de toda a tela (ou janela). Esta limpeza consiste em apagar todos os smbolos (ou caracteres) que estavam sendo apresentados em instrues anteriores. Com a limpeza de toda a tela o cursor fica posicionado na primeira posio dela, ou seja, no canto superior esquerdo. Existe a funo clrscr(); mas ela pertence a biblioteca conio.h, estudaremos sobre esta biblioteca mais a frente.

Utilizando o exemplo sobre scanf():

Notem que o comando system (cls); foi inserido depois da leitura do dado, apenas para apresentar o resultado, confiram a execuo do programa.

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC Execuo: Em um primeiro momento, esperando que o usurio pressione ENTER para confirmar a idade informada, no caso 19:

Depois de limpar a tela, apresentando o resultado:

FUNES getch() e getche()


O tipo char como visto antes armazena apenas 1 caractere, uma letra. Podemos ler um char atravs da funo scanf() utilizando %c,( scanf (%c,&letra);) porm existem funes mais usadas para esse tipo de trabalho, as funes getch() e getche() que no so definidas pelo padro ANSI. Porm, elas geralmente so includas em compiladores baseados no DOS, ambas retornam o caractere pressionado . getche() imprime o caractere na tela antes de retorn-lo e getch() apenas retorna o caractere pressionado sem imprimi-lo na tela. Ambas as funes so encontradas na biblioteca conio.h, porm no Dev C/C++ esta biblioteca no possui todas as caractersticas, mas foi desenvolvida uma biblioteca genrica com a maioria das funcionalidades da conio.h, se chama conio.c (j presente no compilador). Geralmente essas funes no esto disponveis em ambiente Unix (compiladores cc e gcc), pois no fazem parte do padro ANSI.

12

Execuo:

Depois de informada a idade, o programa limpa a tela.

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Estruturas Condicionais
Com as estruturas condicionais podemos estabelecer condies para que comandos sejam executados ou no.

IF - ELSE:
Pode-se utilizar uma ou mais instrues verdadeiras e falsas no if. Caso seja mais de uma deve-se colocar entre chaves. Se a condio verdadeira sero executadas apenas as instrues localizadas aps a instruo if. Caso contrario somente as instrues aps o else sero executadas. O else opcional conforme mostra o exemplo abaixo que efetua a soma de dois nmeros e avisa ao usurio quando o resultado obtido for um nmero par.

13

Figura 9 Cdigo.

Figura 10 - Informou os nmeros.

Figura 11 - Pressionou-se ENTER e o resultado foi calculado.

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC Utilizando o mesmo exemplo para demonstrar o ELSE:

14

Figura 12 - Cdigo, utilizando else.

Utilizando soma par:

Utilizando soma mpar:

Explicando a expresso: soma % 2 == 0 Como foi visto o operador (%) mod, ou resto, retorna o resto da diviso inteira, portanto se queremos descobrir se um nmero par ou mpar devemos apenas dividi-lo por 2, se o resto da diviso for zero (0) por que o nmero par seno mpar. Se o resultado for zero (0) significa que a expresso verdadeira entrando assim no bloco de comando do if, caso a expresso seja falsa entrar no bloco de comando do else.

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

IF - ELSE aninhados
A linguagem C padro tambm permite o uso de ifs alinhados, obedecendo forma: If(condio) Instruo; Else If(condio) Instruo; Else If(condio) Instruo; . . . Else Instruo; Exemplo:

15

Figura 13 - Cdigo

Figura 14 Execuo

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC

SWITCH ()
O switch realiza uma funo semelhante ao if-else aninhado, ele possui uma srie de condies para varivel em teste. O comando switch prprio para se testar uma varivel em relao a diversos valores pr-estabelecidos. Quando falamos de switch devemos explicar tambm o comando break, muitos programadores iniciantes acreditam que o break utilizado apenas no switch, e isso no verdade. O comando break realiza uma quebra de ciclo, ou seja, ele interrompe a execuo de determinada rotina no momento em que executado, no caso do switch ns possumos diversos comandos (cases) agrupados necessitando de uma quebra entre eles, para que quando um comando (case) for executado ele no execute os demais quando terminar, vejamos a sintaxe do switch. Switch (condio){ case (): Break; Case(): Break; . . . } Exemplos: 1)

16

Figura 15 - Cdigo

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Figura 16 - Execuo, escolhendo a opo *

17
Figura 17 - Execuo, escolhendo opo +

Notem que os cases podem ser testados com qualquer tipo, no caso do exemplo, utilizei char para realizar meus testes. Podemos inserir no switch um case programado para receber apenas as opes que no se adequarem aos cases propostos, se chama default. Este opcional. 2) Neste exemplo estou utilizando um inteiro (int) para receber o valor a ser testado pelo meu switch. Percebam tambm que depois de colocar todas as possibilidades do meu switch eu adicionei o default que ira receber todas as opes que no se adequarem aos cases anteriores, no caso 1,2,3,4. switch muito usado na criao de menus. O

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC Execuo:

18

Executando o programa vrias vezes utilizando opes diferentes, notem que no ltimo exemplo a opo escolhida 9 no est definida em um case, por isso o default chamado exibindo a frase opo invlida.

Operador ternrio (?)


Este operador no atende a uma gama grande de casos, mas pode ser usado para simplificar expresses complicadas, sua sintaxe: <condio> ? <expresso 1> : <expresso 2>;

Vejam a diferena entre o condicional if-else e o operador ternrio, valor receber 5 se nmero for menor que 50 ou 3 se for maior.

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Comentrios:
Como na maioria das linguagens, C permite a insero de comentrios no cdigo do programa, isso facilita o entendimento. Nesta linguagem podemos comentar de duas formas nosso cdigo: 1) Comentrio de linha (//) 2) Comentrio em bloco (/**/) Para comentarmos em linha basta digitar os caracteres // que a linha em que voc esta ser convertida em comentrio. J em bloco utilize os caracteres /* para abrir o bloco e */ para fechar. Vejamos alguns exemplos:

19

Notem que neste exemplo utilizei os dois tipos de comentrio, em linha e em bloco, eles no afetam a execuo do seu programa por isso so fortemente recomendados a todos os programadores, lembrem-se programa bem comentado um programa de fcil compreenso. Em qualquer compilador o usurio pode definir as cores do seu cdigo, por isso no se assuste se o seu comentrio estiver com outra cor, neste caso eu que troquei a cor para rosa, visando facilitar a visualizao pois a cor default, padro, do meu compilador era pouco visvel.

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC

Praticando Conhecimento
Exerccio final do captulo, usaremos grande parte do conhecimento aprendido neste captulo, ento vamos ao exerccio: Desenvolva uma calculadora simples que permita soma, subtrao, multiplicao e diviso de dois nmeros reais (float). Faa de forma a no ocorrer diviso por zero, e verifique se operador informado existe na sua calculadora.

Soluo:
Primeira parte da soluo: Declarando variveis e lendo valores.

20

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Segunda parte da soluo: Operando valores lidos e apresentando resultado.

21

Forma de apresentao de nmeros usando printf()


Um float possui muitas casas decimais, e nem sempre precisamos visualizar todas elas, por isso a funo printf permite que esses nmeros seja formatados, ou seja, apresentados de outra forma. O que foi feito no exerccio final ser explicado agora: %<quantidade de casas inteiras>.<quantidade de casas decimais>.f Esta a sintaxe da operao, devemos colocar depois da porcentagem (%) o nmero de casas inteiras que desejamos depois devemos colocar o ponto (.) e em seguida o nmero de casas decimais. No exerccio a cima foi feito: %.2f Isso significa que no nos importamos com o nmero de casas inteiras mas queremos apenas duas casas decimais.

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC Execues do exerccio:

22

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Captulo 2
A linguagem C foi criada na dcada de 1970 por Dennis Ritchie e Ken Thompson para ser usada no sistema operacional UNIX. Desde ento espalhou-se por muitos outros sistemas operativos, e tornou-se uma das linguagens de programao mais usadas. A linguagem tem como ponto-forte a sua eficincia tem preferncia para o desenvolvimento de software de sistemas, apesar de tambm ser usada para desenvolver aplicaes. muito usada no ensino de cincias da computao, mesmo no tendo sido projetada para estudantes e apresentando algumas dificuldades no seu uso.

23

Operadores Compostos
Os operadores compostos so usados para simplificar expresses. A = A + B; A = A B; A += B; A -= B; Operador composto da adio Operador composto da subtrao

A operao composta pode ser aplicada com a maioria dos operadores, o sinal do operador antes da igualdade idntica a composio, ele garante que a varivel que est recebendo aquele calculo ainda seja operada no final da conta seja somando, dividindo, subtraindo etc. X = X*(A+B); X = X/Y; X *= (A+B); X /= Y; Operando com a multiplicao Operando com a diviso

Operadores de incremento e decremento


Estes operadores acrescem ou decrescem em 1 a varivel, so muito utilizados como contadores. Podem ser colocados antes ou depois da varivel a modificar, se colocados antes, modificam o valor antes da expresso ser usada e, se colocados depois, modificam depois do uso, vejamos na prtica.

Notem que quando fizemos x++ o valor de x foi aumentado em um (1), e quando realizamos x- seu valor decresceu em 1 unidade, vejamos outro exemplo.

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC

24

Notem que o IF (x++ > 0) no apresentou seu resultado pois o x foi incrementado apenas depois de verificado.

Estruturas de Repetio
A linguagem C possuir trs estruturas de repetio que so o for, while e do-while. Cada uma dessas estruturas possui caractersticas diferentes, vejamos essas estruturas:

For:
Obedece seguinte sintaxe for (<inicializao>; <condio>; <incremento>) <instruo>; O loop for utilizado quando sabemos exatamente a quantidade de vezes que o ciclo ser executado, por exemplo, quando queremos somar dez (10) nmeros, a quantidade conhecida, no caso 10. Vejamos o funcionamento do for. <inicializao> Este parmetro indica como devemos comear, o nosso ponto de partida. Ele recebe uma varivel e a inicializa. Como exemplo, utilizaremos x = 1. <condio> Como o prprio nome diz, este parmetro indica a nossa condio de parada, o momento em que nosso loop ser finalizado. Seguindo o nosso exemplo, teremos x <= 10. <incremento> Aqui ns vamos mover o nosso loop, a varivel utilizada para contagem ser acrescida neste parmetro utilizando a lgica de incremento explicada anteriormente, no caso x++. Com isso teremos: for (x = 1; x <= 10; x++) <instruo>; Como em qualquer estrutura em C o for pode ser colocado em bloco, permitindo assim a execuo de mais de uma instruo, ficando da seguinte forma:

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

for (x = 1; x <= 10; x++){ <instruo>; } Vejamos nosso exemplo: Criar um programa que some de 1 a 10.

25

Execuo:

Neste exemplo utilizei algumas estruturas aprendidas anteriormente, vamos revisar: resposta = 0; Neste comando eu declarei a varivel resposta e a inicializei com zero (0), pois se esta varivel ir armazenar a soma dos nmeros ela deve comear com zero. resposta += x; Aqui eu utilizei o operador composto += para somar resposta com x, reduzindo a expresso resposta = resposta + x; int main (void){ A funo main est diferente da utilizada anteriormente, por que? Como j foi explicado no primeiro captulo, a linguagem possui alguns tipos de dados e isto inclui as funes, toda funo possui um tipo de dado de retorno e um tipo de entrada, neste caso a funo main do tipo inteiro, int, e no est recebendo nada como parmetro, por isso, ela recebe void, que vazio, como entrada. Mas no se preocupem isso ser explicado mais para frente, estou apenas apresentando para vocs o molde de uma funo, para quando estudarmos funes vocs j tenham se acostumado com a sintaxe. Algumas perguntas muito comuns sobre o uso do loop for: Eu posso inicializar o meu x com qualquer valor? R: Sim, o x pode receber qualquer valor. Posso utilizar outra varivel no for ou apenas x? R: Pode-se utilizar qualquer varivel INTEIRA no for, desde que voc a declare antes. Na condio do loop eu posso utilizar outro operador condicional? R: Sim, a condio montada pelo programador, podendo ser >,>=,<,<= etc. O meu for pode ser executado subtraindo? R: Sim, a sua sintaxe pode ser: for (x=10; x>=1; x--) <instruo>
Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC

Observaes importantes:
A inicializao executada uma nica vez antes do loop ser iniciado. A seqncia de comandos ser repetida enquanto a condio for verdadeira. Quando ela for falsa os comandos aps o loop so executados. O incremento define como ser alterada a varivel de controle do lao, cada vez que ele for repetido, sendo executado logo aps o fim do corpo do loop.
Professor Vandor Rissoli, Universidade Catlica de Braslia. Com alteraes.

26

While:
Obedece seguinte sintaxe while ( <condio> ) <instruo>; Esta estrutura utilizada quando queremos que a nossa condio seja verificada antes da execuo do loop. Vejamos o funcionamento do while: <condio> Como no for, aqui temos a nossa condio de parada. Vejam que no while a inicializao e incrementao fica por conta do programador, deste modo o loop ser executado eternamente at que a condio de parada ocorra ou o encerramento do loop seja forado por algum comando, veremos isso a seguir. Se tivssemos que somar 10 nmeros, a while ficaria desta forma: while (x <= 10) <instruo>; O while pode ser escrito na forma de bloco: While (x <= 10){ <instrues>; } Vejamos a soma de 10 nmeros como ficaria utilizando o while:

Execuo:
Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Vejamos as diferenas do cdigo utilizando o while: Notem que a varivel de controle do loop, x, teve que ser inicializada x = 1. A nossa condio manteve-se igual, x <= 10. E tivemos que adicionar o nosso prprio operador de incremento, x++; No loop while as instrues so executadas enquanto a condio for verdadeira, ou seja diferente de zero (0), a condio verificada no incio de cada ciclo de repetio, ou seja, ela verifica se a condio estiver verdadeira o loop executado, assim que as instrues forem executadas volta-se para o incio do loop e verifica novamente se a condio de parada est verdadeira, se estiver o loop continua. Existem outras formas de terminar o loop while, se utilizarmos o comando break, estudado no captulo sobre switch(), poderemos encerrar o loop e continuar com o programa. Esta tcnica no recomendada, mas vejamos um exemplo:

27

Execuo:

Notem que o loop foi encerrado quando x era igual a 4, realizando apenas a conta: 1 + 2 + 3 + 4 = 10 O comando break encerrou o loop while antes que sua condio fosse falsa.

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC Algumas perguntas sobre o while: Se eu colocar no parmetro de condio o nmero 1 o que acontece? R: Em C o nmero 1 representa verdadeiro, portanto o seu loop while ser infinito, parando apenas com um comando break. Posso utilizar um operador de decremento no while? R: Sim, pode at mesmo utilizar um operador composto, se assim desejar.

Se eu utilizar o 1 na condio e no parar com o break o que acontece? R: O seu while simplesmente no vai parar, seu programa ficar preso no while.

28

Do-While:
Segue a seguinte sintaxe: do{ <instrues>; }while ( <condio> ); Esta estrutura utilizada quando queremos que a nossa condio seja verificada depois da execuo do cdigo. Vejamos o funcionamento do do-while: No do-while assim como no while a inicializao e incrementao ficam por conta do programador, o loop ser chamado at que a condio seja falsa, de modo que no do-while as instrues so executadas pelo menos uma vez. O do-while pode ser utilizado sem as chaves de bloco, porm estas favorecem a legibilidade do cdigo e so altamente recomendadas. Vejamos um exemplo de do-while: Construa um programa que apresente um menu de opes e saia apenas quando o usurio utilizar a opo de sair do menu. O programa deve obedecer ao seguinte layout:

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

29

Execues:

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC

Praticando Conhecimento
Um fazendeiro deseja descobrir qual a vaca com o maior peso e a com o menor peso de sua criao, faa um programa que leia 200 nmeros de identificao e 200 pesos e ao final da execuo apresente o maior e o menor peso, juntamente com suas respectivas matrculas.

30

Soluo:

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Execues:

31

Explicando:

Nesta linha eu atribui as variveis que receberiam o maior e o menor peso. Mas porque esses valores -999999 e 99999? A resposta simples, neste exerccio utilizamos um mtodo chamado estouro de varivel, o que seria isso? Este mtodo consiste em atribuir valores mximos e contrrios as variveis, neste caso, peso_maior deveria armazenar o maior peso por isso recebeu o menor valor possvel na sua inicializao, de forma que o primeiro peso informado seria automaticamente o maior peso. O mesmo aconteceu com o menor peso, com isso o primeiro peso seria o maior e o menor, e conforme os demais pesos fossem sendo informados o maior e o menor seriam alterados pela nossa condio, vejamos a condio utilizada: A condio criada foi a seguinte, se o peso que informamos na varivel peso for maior que o maior_peso, no caso da primeira execuo -999999, a varivel mair_peso recebe o peso informado e a matricula do maior peso recebe a matrcula informada, o mesmo ocorre com o menor_peso, conforme formos informando os pesos os valores em maior e menor peso sero alterados. Alguns de vocs devem estar se perguntando o porqu de -999999 j que no existe peso negativo. O valor negativo poderia ser substitudo sem prejuzo por 0 (zero), porm preferi utilizar o valor -999999 pra mostrar que este mtodo tambm funciona com valores negativos. O nmero de vacas propostas, 200, apenas para dificultar o processo, pode-se usar um nmero menor para testar o programa, como o que eu fiz, utilizei apenas 6 vacas.

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC

Captulo 3
A seqncia em que esta apostila foi preparada capacita o estudante a desenvolver pequenos problemas utilizando a linguagem estudada, cumprindo com a proposta da apostila, que ensina a linguagem de maneira prtica e descomplicada, porm algumas estruturas necessitam de maiores detalhes, e neste captulo estudaremos estes tipos de estruturas.

String
Uma string um conjunto de caracteres agrupados, uma palavra. No captulo 1 estudamos o tipo de dado char, que armazena um caractere, as strings so um conjunto de caracteres, logo um conjunto de chars. Podemos dizer que as strings so um tipo de dado homogneo, pois todos os dados pertencentes a esse conjunto so do mesmo tipo, char. So sempre terminadas pelo caractere nulo (\o), por isso so acrescidas de 1 em seu tamanho real, o compilador ir ler o conjunto de caracteres at encontrar o elemento nulo, est a nica maneira de identificar a string. Cada char ocupa um byte na memria, como foi visto antes, por isso, cada caractere da string ocupa 1 byte, no caso da palavra casa teramos 4 bytes. Sintaxe de declarao da string: char <nome da varivel> [Tamanho] ; Vamos declarar uma varivel string que ir armazenar um nome: char nome[50]; Esta varivel possui um espao em memria para armazenar 49 caracteres. O nmero dentro dos colchetes chamado de ndice da string, no caso da varivel nome temos do ndice 0 ao 48 para armazenarmos as letras do nome e o ndice 49 para armazenar o caractere nulo (\0). O caractere nulo no adicionado pelo compilador, ou seja, o programador deve programar a sua insero ou utilizar funes que j faam a insero do \0.

32

Scanf lendo string


Podemos utilizar o scanf para ler strings, utilizando a mesma sintaxe vista anteriormente. Ao falarmos de strings estamos falando tambm de endereos, uma string um conjunto serial de endereos que armazenam o mesmo tipo de dado. Cada ndice da string representa um endereo na memria, e cada endereo representa um char, desta forma o endereo, por exemplo, nome[0] representaria o primeiro endereo da string, seu comeo, este endereo especial, por onde a maioria das funes de escrita e leitura de strings se baseiam para suas operaes, por isso, podemos utilizar o primeiro endereo apenas escrevendo o nome da varivel, nome = nome[0] ambas as formas apontam para o mesmo endereo. Desta forma ao utilizarmos o scanf para lermos uma string devemos utilizar o identificador de string %s e indicar o primeiro endereo da string, no caso nome. Vejamos a sintaxe completa:

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Notem que no utilizamos o operador de endereo & para recebermos o endereo da string, utilizamos apenas seu nome como foi explicado agora a pouco. Vejamos um exemplo completo da utilizao do scanf na leitura de strings:

33

Execuo:

Vejamos agora outro exemplo:

Queremos que o usurio informe seu nome completo, vejamos a execuo do programa:

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC Notem que na apresentao do nome no foi impresso nome completo, por qu? A funo scanf no mais apropriada para a leitura de strings, pois ela atribui (\0) aos espaos em branco da string, finalizando-a no primeiro espao. No exemplo dado Tulio nome completo ficaria Tulio\0nome\0completo e a string seria finalizada no primeiro (\0) encontrado pelo compilador.

Funo gets()
A funo gets() seria get string que significa receber string. Esta uma funo mais apropriada a leitura de strings, sua sintaxe seria:

34
gets ( <primeiro endereo da string, seu nome> ); Vejamos o exemplo anterior utilizando a funo gets():

Execuo:

Notem que o nome foi apresentado corretamente, porm como em todas as funes de leitura de string na linguagem C, a funo gets() tambm possui alguns problemas ela no verifica o tamanho da string, o que seria isso, se o usurio digitasse 200 caracteres na nossa varivel nome[50] de 48 caracteres ele causaria uma invaso de memria, podendo invadir a memria do prprio sistema operacional. Voc deve estar se perguntando, como resolver esse problema? Sua pergunta ser respondida em breve.

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Funo puts()
puts = put string = colocar string. A funo puts tem a funo de apresentar uma string, nada que um printf no resolva, porm fica a cargo do programador decidir o que ir usar. O puts imprime apenas uma string por vez e sempre salta um linha no final, vejamos um exemplo:

35

Execuo:

Como a funo puts() apresenta um string inteira de uma vez podemos utilizar o seguinte recurso:

Imprimimos nossa string a partir da posio 3 (nome[2], 0,1,2 terceira letra).

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

http://groups.google.com/group/aprendaC

Funes de manipulao de strings


Atravs da biblioteca String.h podemos adicionar ao nosso programa uma variedade de funes que operam utilizando string, vejamos algumas destas funes: Funes strlen ( <nome da string> ); Explicaes Retorna o nmero de caracteres da string, descontando o (\0).

strcat( <string1> , <string2> ); strcmp( <string1> , <string2> );

Concatena, cola, a string 2 no final da string 1 e retorna a string 1. Compara as duas strings, retorna zero (0) se ambas forem iguais. Retorna a diferena em ASCII entre os dois primeiros caracteres diferentes. Copia o contedo da string2 para string1, isso apaga a string 1. Encontra a primeira ocorrncia da string2 na string1, retorna nulo se no encontrar. Converte a string para um nmero inteiro. Caso a string contenha letras ela retorna zero (0). Funciona da mesma forma que o atoi() para nmeros reais (float). Converte a string para caracteres maisculos. Converte a string para caracteres minsculos. Compara duas strings ignorando letras maisculas e minsculas. Retorna zero (0) se forem iguais.

36

strcpy( <string1> , <string2> ); strstr ( <string1> , <string2> );

atoi ( <string> );

atof ( <string> ); strupr ( <string> ); strlwr ( <string> ); Strcasecmp ( <string1> , <string2> );

Visite o grupo e participe!

Linguagem C Aprenda aqui! - http://groups.google.com/group/aprendaC

2007

Bibliografia:
SCHILDT, H., C Completo e Total, Editora Makron Books do Brasil Editora Ltda, 1996. EVARISTO, J., Aprendendo a programar programando em linguagem C, Book Express, 2001. MIZRAHI, V. V., Treinamento em Linguagem C, Curso Completo, Mdulos 1 e 2, Makron Books do Brasil Editora Ltda,1990. DEITEL, H. M. e Deitel, P. J., C++ Como Programar, 2001.

37
pt.wikipedia.org/wiki/Linguagem_de_programao_C Universidade Catlica de Braslia - site http://www.ucb.br/programar (opo Linguagens)

Produzido por: Tlio Ornelas (ocultokx@gmail.com)

Вам также может понравиться