Apostila de C

Apostila de C

(Parte 1 de 3)

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

Produzido por: Túlio Ornelas ocultokx@gmail.com

Capítulo 13
Tipos de dados básicos:3
Identificadores:3
Tipos de variáveis:4
Int (Inteiros)4
char (Caracteres)4
float (Reais)4
double (Reais com dupla precisão)4
Void (vazio)4
Variáveis:5
FUNÇÃO main()5
DIRETIVA include:5
FUNÇÃO printf()6
Primeiro programa em C:7
Operadores Aritméticos:9
Operadores Relacionais:9
Operadores Lógicos:9
FUNÇÃO scanf()10
FUNÇÕES getch() e getche()12
Estruturas Condicionais13
IF - ELSE:13
IF - ELSE aninhados15
SWITCH ()16
Operador ternário (?)18
Comentários:19
Praticando Conhecimento20

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

Visite o grupo e participe!

Capítulo 223
Operadores Compostos23
Operadores de incremento e decremento23
Estruturas de Repetição24
For:24
While:26
Do-While:28
Praticando Conhecimento30
Solução:30

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

Produzido por: Túlio Ornelas ocultokx@gmail.com

Linguagem de programação C

Capítulo 1

A linguagem C é portável e não efetua nenhuma verificação em tempo de execução, é uma linguagem case sensitive, ou seja, diferencia maiúsculas de minúsculas, estruturada e utiliza o conceito de blocos de programação, mas essa teoria toda será aprendida na prática.

Existem algumas palavras reservadas da linguagem, são elas:

Auto Double int struct break else switch case enum * register typedef char extern return const * float short unsigned continue for signed * void * default goto volatile* do if static while sizeof long

TipoTamanho em bits Tamanho em bytes Faixa
char08 1 0 a 255
int16 2 -32768 a 32767
float32 4 3.4E-38 a 3.4E38

Tipos de dados básicos: seis dígitos de precisão

double64 8 1.7E-308 a 1.7E308

dez dígitos de precisão

void0 0 sem valor

A definição do tipo de dados permite que o computador aloque e mantenha livre um espaço exato de memória que vai ser utilizado pelo “programa”.

Identificadores:

São as “expressões” definidas pelo usuário como nomes de variáveis e funções.

Existem regras para declaração de variáveis, apenas letras, números e underscore (_) são permitidos com exceção apenas para o cifrão ($) que representa variáveis de ambiente, mas deixem essa declaração para o C avançado.

Devem começar sempre por letra, ou underscore (_), como foi dito antes a linguagem é case sensitive, ou seja, maiúsculas e minúsculas são diferentes e não pode ser igual a uma palavra reservada da linguagem.

Exemplos corretos: nome, casa, teste1,x, nome_completo Exemplos incorretos: 1teste,&numero,123,aniversário, numero! http://groups.google.com/group/aprendaC

Visite o grupo e participe!

Tipos de variáveis:

A linguagem C tem um sistema de tipos semelhante ao de alguns descendentes da linguagem Algol, tais como Pascal. Possui tipos para números inteiros de vários tamanhos com e sem sinal, números de ponto flutuante, caracteres e estruturas (structs), mas isso será explicado futuramente.

Int (Inteiros)

O tipo de dados int (inteiro) serve para armazenar valores numéricos inteiros. Existem vários 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 padrão 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 cláusula unsigned, o que faz com que só suporte números positivos. Isto faz com que, com o mesmo tamanho, uma variável suporte mais números positivos do que um signed (todos os inteiros são signed por omissão).

char (Caracteres)

O tipo char ocupa 1 byte, e serve para armazenar caracteres. Isso significa que o programa reserva um espaço de 8 bits na memória RAM do computador para armazenar um valor. Com o tipo char é também possível armazenar strings, que são cadeias de caracteres.

float (Reais)

O tipo de dados float serve para armazenar números de ponto flutuante, ou seja, com casas decimais.

double (Reais com dupla precisão)

O tipo de dados double serve para armazenar números de ponto flutuante de dupla precisão, tem o dobro do tamanho do float e portanto o dobro da capacidade.

Void (vazio)

Este tipo serve para indicar que um resultado não tem um tipo definido. Uma das aplicações deste tipo em C é criar um tipo vazio que pode posteriormente ser modificado para um dos tipos anteriores.

Vejam na seqüência as regras para declarar variáveis, como na imagem ao lado.

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

Produzido por: Túlio Ornelas ocultokx@gmail.com

Variáveis:

Posição nomeada de memória usada para guardar um valor que pode ser modificado pelo programa, todas variáveis em C devem ser declaradas antes de serem usadas

Forma geral da definição de variável <tipo de dado> <identificador>; onde <tipo de dado> é qualquer tipo válido mais qualquer modificador

<identificador> um ou mais nomes de identificadores separados por ‘,’

Exemplos: char letra; int x,y,z,numero;

FUNÇÃO main()

A função main é obrigatória em um programa na linguagem C, e marca o ponto de início da execução do programa, se um programa consistir em apenas uma função esta será main(). Todas as instruções devem estar dentro das chaves que iniciam e terminam a função (bloco de instrução) e são executadas na ordem seqüencial de escrita no programa.

DIRETIVA include:

Provoca a inclusão 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 diretório padrão ou

#include “arq” arquivo no diretório atual arq - está representando o nome do arquivo a ser incluído

O símbolo de sustenido ‘#’, antes da diretiva include, é um sinal para o pré-processador, que têm a função de examinar o programa fonte em C e executar certas modificações, baseadas nas instruções das diretivas

O include “importa” as bibliotecas. A biblioteca padrão da linguagem C é stdio.h.

Ex: #include stdio.h

1) A linguagem C é baseada em blocos, como já foi explicado.

Ex: main{ }

As chaves representam o início({) e o final(}) do bloco de programação.

2) Em C o compilador vai interpretando a linha até encontrar (;) ponto e virgula, ele indica o final da instrução.

Ex: char nome; http://groups.google.com/group/aprendaC

Visite o grupo e participe!

Em linguagem C podemos utilizar recursos do sistema operacional, um exemplo disso é pausar a execução do programa (system (“”)) através do comando PAUSE, exemplo:

System (“PAUSE”);

FUNÇÃO printf()

Uma das funções de saída que pode ser usada em C, a <expressão controle> pode conter caracteres que serão exibidos na tela e códigos de formatação dos argumentos, a <lista de argumentos> é formada pelos argumentos que serão usados pela função, faz parte da biblioteca padrão da linguagem C (stdio.h) e pode receber um número variável de argumentos (separados por ‘,’) printf(“<expressão 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 não podem ser obtidos diretamente do teclado (como mudança de linha) por isso tem a sua representação feita por códigos especiais usando a ‘\’ com a combinação de outro caractere.

Código SignificadoCódigo Formato
\n nova linha%c caractere simples (char)

\r retorno do cursor %d decimal (int)

\t tab%e notação científica
\b retrocesso%f ponto flutuante (float)
\” aspas%g %e ou %f (o mais curto)
\\ barra%o octal

\f salta página de formulário %s cadeia de caracteres (string)

\0 nulo%u decimal sem sinal

\x caractere gráfico (este símbolo %x hexadecimal escreve códigos acima de 127 %ld decimal longo (long int) decimal) \xd onde d é hexad. %lf ponto flutuante longo (Double) %% Apresenta o símbolo de porcentagem (%)

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

Produzido por: Túlio Ornelas ocultokx@gmail.com

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 endereço http://www.bloodshed.net/devcpp.html

Figura 1 - Código 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 execução.

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

Visite o grupo e participe!

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

Figura 5 - Execução do programa. 3) --------------------------------------------------------------------------------------------------------------------------

Notem que o exemplo 3 está igual ao exemplo 2 diferenciando apenas o modo da atribuição, como foi visto no quadro à cima.

Atribuição de variáveis:

Em C valores podem ser atribuídos arbitrariamente, sendo necessário apenas que o valor que esteja sendo atribuído seja do mesmo tipo da variável declarada. Utilizamos o sinal de =, igual, para atribuir valores. Ex: numero = 10;

Podemos também atribuir valores na própria declaração da variável. Ex: int numero = 10;

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

Produzido por: Túlio Ornelas ocultokx@gmail.com

Operadores Aritméticos:

Os operadores em linguagem de programação são usados como na matemática, vejamos alguns deles.

+ (Adição) Soma números. Ex: numero = 15 + 5; Desta forma, numero estará recebendo o resultado do calculo 15 + 5, no caso 20.

- (Subtração) Subtrai números. Ex: numero = 15 - 5; Desta forma, numero estará recebendo o resultado do calculo 15 - 5, no caso 10.

* (Multiplicação) Multiplica números. Ex: numero = 15 * 10; Desta forma, numero estará recebendo o resultado do calculo 15 * 10, no caso 150.

/ (Divisão Real) Divide números. Ex: numero = 15 / 3; Desta forma, numero estará recebendo o resultado do calculo 15 / 3, no caso 5. No caso de dois números inteiros, a operação de divisão arredondará o resultado, por isso se você deseja um valor preciso utilize pelo menos 1 número float ou Double.

% (Resto) Recebe o resto da divisão. Ex: numero = 20 % 2; Desta forma, numero estará recebendo o resto do resultado do calculo 20%2 , no caso 0 pois 20 é divisível por 2 e possui resto 0.

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 variáveis enquanto == compara dois ‘valores’ verificando se são iguais.

> (Maior que) Verifica se um valor é maior do que outro.

>= (Maior ou igual) Verifica se é maior ou igual. < (Menor que) Verifica se um valor é menor do que outro.

<= (Menor ou igual) Verifica se é menor ou igual.

!= (Diferente) Compara dois ‘valores’ e retorna 1 (verdadeiro) se forem diferentes ou 0 (se forem iguais).

Operadores Lógicos:

Os operadores lógicos servem para interligar mais de uma operação relacional. E assim como os relacionais retornam zero para falso e um para verdadeiro.

&& (E lógico) Retorna verdadeiro se ambos os operandos são verdadeiros e

falso nos demais casos. Exemplo: if( val1<2 && val2<6).

|| (OU lógico) Retorna verdadeiro se um ou ambos os operandos são verdadeiros e falso se ambos são falsos. Exemplo: if( val1>3 || val2<4).

! (NÃO lógico) Usada com apenas um operando. Retorna verdadeiro se este é falso e vice-versa. Exemplo: if( !var ).

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

Visite o grupo e participe!

FUNÇÃO scanf()

Função de entrada/saída que pode ser usada em C, permite ler dados formatados da entrada padrão (teclado). Sua <expressão controle> deve conter os códigos compatíveis com a formatação dos argumentos, a <lista de argumentos> nesta função deve conter os endereços das variáveis (usando o operador de endereço ‘&’ em C).

• O símbolo %* indica que será lido um valor do tipo especificado, mas não será atribuído a nenhuma variável (não devendo ter parâmetros na lista de argumentos)

• Faz parte da biblioteca padrão da linguagem C (stdio.h) e pode receber um número variável de argumentos (separados por ‘,’) scanf(“<expressão controle>”,<lista de argumentos>); Exemplo: scanf(“%f ”, &valor); Vejamos em uma programa o uso do scanf():

Um endereço é o nome que o computador usa para identificar à variável, pois toda variável ocupa uma localização na memória e seu endereço é o do primeiro byte ocupado por esta variável.

Note que no campo “ ” você informará apenas o tipo do dado que você quer ler, seguindo os padrões apresentados ao lado, depois disso separamos com uma vírgula (,) e informamos o endereço da variável na qual receberemos o dado, no caso, idade. O operador (&) retorna o endereço da variável.

CódigoFormatação da Função

%c leia um único caractere

%d leia um inteiro decimal

%e leia um número em notação científica

%f leia um número em ponto flutuante

%o leia um inteiro octal

%s leia uma série de caracteres

%u leia um decimal sem sinal

%x leia um número hexadecimal

%l leia um inteiro longo

%lf leia um double

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

Produzido por: Túlio Ornelas ocultokx@gmail.com

Figura 6 - Execução do programa. Para explicar melhor o conceito de endereço faremos um exemplo:

Figura 7 – Código. Figura 8 – Execução.

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 execução do programa.

System (“cls”);

Esta função efetua a limpeza de toda a tela (ou janela). Esta limpeza consiste em apagar todos os símbolos (ou caracteres) que estavam sendo apresentados em instruções anteriores. Com a limpeza de toda a tela o cursor fica posicionado na primeira posição dela, ou seja, no canto superior esquerdo.

Existe a função clrscr(); mas ela pertence a biblioteca conio.h, estudaremos sobre esta biblioteca mais a frente.

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

Visite o grupo e participe!

Execução:

Em um primeiro momento, esperando que o usuário pressione ENTER para confirmar a idade informada, no caso 19:

Depois de limpar a tela, apresentando o resultado:

FUNÇÕES getch() e getche()

O tipo char como visto antes armazena apenas 1 caractere, uma letra. Podemos ler um char através da função scanf() utilizando %c,( scanf (“%c”,&letra);) porém existem funções mais usadas para esse tipo de trabalho, as funções getch() e getche() que não são definidas pelo padrão ANSI. Porém, elas geralmente são incluídas 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 funções são encontradas na biblioteca conio.h, porém no Dev C/C++ esta biblioteca não possui todas as características, mas foi desenvolvida uma biblioteca genérica com a maioria das funcionalidades da conio.h, se chama conio.c (já presente no compilador). Geralmente essas funções não estão disponíveis em ambiente Unix (compiladores c e gc), pois não fazem parte do padrão ANSI.

Execução: Depois de informada a idade, o programa limpa a tela.

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

Produzido por: Túlio Ornelas ocultokx@gmail.com

Estruturas Condicionais

Com as estruturas condicionais podemos estabelecer condições para que comandos sejam executados ou não.

Pode-se utilizar uma ou mais instruções verdadeiras e falsas no if. Caso seja mais de uma deve-se colocar entre chaves. Se a condição é verdadeira serão executadas apenas as instruções localizadas após a instrução if. Caso contrario somente as instruções após o else serão executadas. O else é opcional conforme mostra o exemplo abaixo que efetua a soma de dois números e avisa ao usuário quando o resultado obtido for um número par.

(Parte 1 de 3)

Comentários