Você está na página 1de 6

Apostila Bsica de Linguagem C

Antes de comear:

A linguagem C "case sensitive". Isto significa que esta linguagem diferencia maisculas de minsculas. Por exemplo, uma varivel chamada NOME diferente de uma varivel chamada nome. Voc pode utilizar o compilador TURBOC tanto para escrever como para compilar e executar os seus programas. Com o TURBOC tambm possvel gerar um arquivo executvel de seus programas. Acostume-se a escrever seus programas em Linguagem C sempre em minsculas. Alguns programadores apreciam quase tudo escrito em minsculas e, somente as variveis em maisculas. Todas as palavras reservadas no C como while, if e else contm apenas letras minsculas. Programas escritos em C possuem extenso de arquivo ".C" O C++ corresponde a um superconjunto do C, fornece muitos recursos que tornam a linguagem C mais "atraente". Porm o mais importante que ela fornece recursos para a programao orientada a objetos. Esta apostila no aborda a POO. Esta apostila no aborda tambm a criao de funes (sub-rotinas). ANSI C a verso da linguagem de programao C padronizada em 1989 tanto nos EUA, atravs do American National Standard Institute (ANSI), como em todo o mundo, atravs da International Standards Organization (ISO). Para um programa em C ser executado, ele passa geralmente por seis fases: edio, pr-processamento, compilao, linking, carregamento e execuo. Resumindo, o compilador traduz o programa em C para linguagem de mquina. Um pr-processador obedece a diretivas que indicam normalmente que outros arquivos devem ser includos no arquivo a ser compilado e que smbolos especiais devem ser substitudos por texto de programa. Um linker liga o cdigo-objeto ao cdigo de funes que estejam faltando de modo a produzir uma imagem executvel (com todas as partes necessrias). Um loader apanha uma imagem executvel do disco e a transfere para a memria. Para se tornar um bom programador C, estude e use as funes da biblioteca padro do C.

Tipos de Dados e Declarao de Variveis Exemplos de declaraes de variveis: int x; declara uma varivel chamada x do tipo de dado inteiro char nome[40] declara uma varivel chamada nome do tipo de dado literal c/mximo de 40 posies float y; declara uma varivel chamada y do tipo de dado real int numeros[10] declara um vetor chamado numeros de nmeros inteiros de dez posies int mat[10][5] declara uma matriz chamada mat de nmeros inteiros com dez linhas por 5 colunas Notas: - Em C, um vetor inicia-se na posio 0 e vai at 9, para um vetor de 10 posies. - No faa comparaes de igualdade com valores de ponto flutuante. Definio de Tipos de Dados

Enumerao um tipo de construo existente na Linguagem C. Como esta linguagem no possui o tipo de dado booleano, podemos defini-lo utilizando este conceito. ENUM boolean { F, V } Onde: O primeiro elemento (F) tem o valor 0 (zero), enquanto o segundo elemento (V) tem o valor 1 (um) e assim por diante, a no ser que valores explcitos sejam declarados. Se nem todos os valores forem declarados, aqueles que no foram continuam a progresso a partir do ltimo valor especificado. Exemplo: main() { enum boolean { F, V }; enum boolean x; x = F; este comando atribui 0 (zero) varivel x }

Sequncias de Escape Sequncia de Escape \n \t \r \a \\ \" Descrio Nova linha. Posiciona o cursor no incio da nova linha Tabulao horizontal Posiciona o cursor no incio da linha atual. No avana para a prxima linha Faz soar a campainha do sistema Imprime um caractere de barra invertida Imprime um caractere de aspas duplas

Estrutura Bsica de um Programa em C #include <stdio.h> main() { <declarao de variveis> <comandos> } Notas: - Coloque um espao depois de cada vrgula para tornar o programa mais legvel. - Todas as variveis devem ser declaradas com um nome e um tipo de dado imediatamente aps a chave esquerda do corpo de main. - "stdio.h" corresponde a um arquivo da biblioteca padro C para uso de comandos de entrada e sada. Para funes matemticas use "math.h". Para limpeza de tela (clrscr()) e outras funes relacionadas, use a biblioteca "conio.h". Arquivos de Cabealho da Biblioteca Padro Voc programador, pode criar arquivos de cabealho (chamados de headers) personalizados. Os arquivos de cabealho definidos pelo programador tambm podem terminar em .h. Um arquivo de cabealho pode ser includo no programa usando a diretiva de pr-processador #include. Veja no programa exemplo acima a incluso da diretiva #include <stdio.h>. A seguir, uma listagem dos arquivos que acho serem mais usados: <stdio.h> Contm prottipos de funes da biblioteca padro de entrada e sada de dados <time.h> Contm funes para manipular horrios e datas <math.h> Contm funes da biblioteca matemtica <strings.h> Contm funes para manipulao de strings <conio.h> Contm funes para manipulao de vdeo

<stdlib.h> Contm funes para converso de nmeros em texto e vice-versa, alocao de memria, nmeros aleatrios, etc. Veja o programa exemplo: #include <stdio.h> #include <stdlib.h> main() { int i; for (i=1; i<=20; i++) { printf("%10d", 1 + rand() % 6)); if (i%5 == 0) printf("\n"); } return 0; } Comentrios Use "/*" para iniciar e "*/" para terminar um comentrio. Em algoritmos utilizamos as chaves "{" e "}" para iniciar e terminar um comentrio, respectivamente. Veja o programa exemplo: #include <stdio.h> main() { char nomecli[50]; float saldo; ... } Comando de Atribuio Use o caractere "=" para executar uma atribuio a uma varivel. Em algoritmos utilizamos o sinal "". Exemplos: nome = "Joana Pereira\0"; x = 10; saldo = 1250.32; num = a % b; Coloca na varivel num o resto da diviso de Em algoritmos seria: num a mod b Voc pode tambm atribuir um valor uma varivel no mesmo comando da declarao. Veja os exemplos: int x = 23; float y = 123.456789; char nome[] = "Jos Ricardo Cosme Lrias Ribeiro"; Operadores de Incremento e Decremento So eles: += -= *= /= %=

/* varivel para leitura do nome do cliente */ /* conter o saldo atual do cliente */

a por b

x++ incremente x de 1 e depois usa o valor de x na expresso onde x se localiza (pr-incremento) ++x usa o valor de x na expresso onde x se localiza e depois incrementa x de 1 Notas: - O mesmo para --x, x-- e os outros. - Percebe-se uma melhoria muito grande quando um aperfeioamento supostamente insignificante colocado em um loop que pode se repetir muitas vezes.

Operadores Relacionais So eles: == Exemplos: if (x == 10) { printf("a varivel x possui o valor 10"); } if (x != 10) { printf("a varivel x possui um valor diferente de 10"); } Tabela de Converso de Tipos para uso com Funes de Entrada e Sada Tipo de Dado Long double Double Float Unsigned long int Long int Unsigned int Int Short Char Printf %lf %f %f %lu %ld %u %d %hd %c Scanf %lf %lf %f %lu %ld %u %d %hd %c != > < >= <=

Formatos para serem usados com a funo Printf() Formato %f %6f %.2f %6.2f %d %6d %ld %o %x %s Descrio Ponto flutuante Ponto flutuante com pelo menos seis caracteres Ponto flutuante com dois caracteres aps o ponto decimal Ponto flutuante com pelo menos seis caracteres e dois aps o ponto decimal Inteiro Inteiro com pelo menos seis caracteres Inteiro longo Octal Hexadecimal String (cadeia de caracteres)

Estrutura de Seleo Composta (se...ento...seno...fim-se) Exemplos: if (x > 5) { printf("a varivel x possui um valor maior que 5"); } else { printf("a varivel x possui um valor menor que ou igual a 5"); } Notas: - Pode-se ter mais de um comando dentro do ento ou do seno. - Pode-se ter instrues if aninhadas, ou seja, umas dentro de outras. Estrutura de Seleo Mltipla (caso...fim-caso) Exemplos: switch (x) { case 1:

printf("a break; case 2: printf("a break; case 3: printf("a break; default; printf("a break; }

varivel x possui o valor 1"); varivel x possui o valor 2"); varivel x possui o valor 3"); varivel x possui outro valor...");

switch (letra) { case 'A': printf("a varivel letra possui a letra A"); break; case 'B' : 'C': printf("a varivel letra possui as letras B ou C"); break; default; printf("a varivel letra possui outra letra..."); break; } Estrutura de Repetio WHILE (enquanto...fim-enquanto) Exemplo: contador = 0; while (contador <= 100) { printf(contador); contador++; } Estrutura de Repetio FOR (para...fim-para) Exemplo: for (contador=1; contador <= 100; contador ++) { printf("%d", contador); } Notas: - Se a segunda expresso for omitida, o programa entra em loop infinito. - Ps-incremento e pr-incremento produzem aqui o mesmo efeito. - A primeira expresso pode ser omitida, caso a varivel j tenha sido iniciada antes. - A terceira expresso pode ser omitida, caso o lao no precise de incremento. - Pode-se interromper uma estrutura for com o comando break ou realizar nova iterao com continue. Estes dois comandos funcionam tambm na estrutura while. Comando de Sada de Dados Voc deve utilizar a funo printf(). Esta funo equivale ao comando escreva em algoritmo. Exemplos: printf("%9.3f", 123.456789); printf("%4d", 2); direita) printf("%4d", 12); direita) imprime 123.457 imprime 2 (alinhado pela imprime 12 (alinhado pela

printf("%4d", 123); imprime 123 (alinhado pela direita) printf("%4d", -20); imprime -20 (alinhado pela direita) printf("%.6d", 873); imprime 000873 printf("%.3f", 123.94536); imprime 123.945 printf("%.3g", 123.94536); imprime 124 printf("%.11s", 'Professor Jos Ricardp'); imprime "Professor J" printf("%+d", 345); imprime +345 printf("% d", 345); imprime 345 (com um espao antes do nmero) printf("%#g", 1427); imprime 1427.00 printf("%10s%10d%10c%10f", "Fach", 7, 'a',1.23); imprime " Fach 7 a 1.230000" (alinhando pela direita) printf("%-10s%-10d%-10c%-10f", "Fach", 7, 'a',1.23); imprime "Fach 7 a 1.230000 " (alinhando pela esquerda) Comando de Entrada de Dados Voc deve utilizar a funo scanf(). Esta funo equivale ao comando leia em algoritmo. Exemplos: scanf("%d", &x); l um inteiro decimal com sinal opcional scanf("%i", &x); l um inteiro decimal, octal ou hexadecimal com sinal opcional scanf("%u", &x); l um inteiro decimal sem sinal scanf("%f", &x); l um nmero de ponto flutuante (use tambm o especificador de converso "f") scanf("%c", &x); l um caractere sendo x declarado como: char x; scanf("%s", x); l uma string sendo x declarado como: char x[9]; scanf("%[aeiou]", x); l uma string aceitando apenas os caracteres aeiou sendo x: char x[9]; exemplo: digitando "ooeeooahah", ser colocado em x apenas "ooeeooaa" scanf("%[^aeiou]", x); l uma string aceitando o inverso do exemplo anterior exemplo: digitando "String", ser colocado em x apenas "Str" scanf("%2d", &x); l um inteiro decimal de apenas 2 dgitos exemplo: digitando 12345, ser colocado em x apenas 12 scanf("%d-%d-%d", &dia, &ms, &ano); travesses na entrada de os travesses na digitao, possvel que a data seja fornecida como 26/08/02 l trs inteiros ignorando os uma data. Embora esse comando elimine