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

Introduo Linguagem C

http://web.archive.org/web/20100328011007/http://www....

http://www.ic.unicamp.br/~vanini/inf512/aula2_1.html 25 captures
24 Abr 05 - 28 Mar 10

Go

JAN MAR ABR Close

Help 2009 2010 2011

28

Introduo Linguagem C
A linguagem C, desenvolvida em paralelo com o UNIX atualmente uma das linguagens de programao mais utilizadas. Suas principais caractersticas so: Simples e de aprendizado fcil. Uso amplamente difundido. Baseada em construes simples, que usam os recursos da mquina de forma eciente. Oferece recursos de modularizao necessrios ao desenvolvimento de aplicaes de grande porte. Disponvel em vrias plataformas.

Um programa simples
O programa abaixo o clssico "Hello, world", usado na maioria dos textos introdutrios para descrever a "cara" de um programa em C:
#include <stdio.h> int main() { printf("Hello, world\n"); }

O que este programa faz basicamente escrever na sada padro o string "Hello, world". Alguns detalhes deve ser explicados:
#include <stdio.h> Indica que este programa deve utilizar as definies feitas no arquivo 'sdtio.h' para as funes bsicas de entrada e sada. Corresponde ao "corpo" do programa. a partir dele que se inicia a execuo do programa. Comando que indica "escreva o texto entre parntesis atravs de um dispositivo de sada (neste caso, a sada padro). Cadeia de caracteres (string). A seqncia de caracteres '\n' representa o caracter newline.

int main() { ...}

printf(...)

"Hello, world\n"

Outro exemplo: Variveis, constantes, expresses e atribuio


O exemplo a seguir ilustra alguns conceitos importantes em C:
#include <stdio.h>

1 de 10

04-11-2011 22:16

Introduo Linguagem C
int main() { int a,b,c,soma;

http://web.archive.org/web/20100328011007/http://www....

Go

JAN MAR ABR Close

25 captures
24 Abr 05 - 28 Mar 10

a = 1; b = 2; c = 3; soma = a + b + c; printf("soma = %d\n",soma); }

Help 2009 2010 2011

28

Nesse exemplo, o comando


int a, b, c, soma;

declara a, b, c e soma como variveis do tipo inteiro. Uma varivel do tipo inteiro pode receber qualquer valor inteiro permitido na mquina. Os comandos
a = 1; a = 2; c = 3;

so comandos de atribuio. Um comando de atribuio indica que uma varivel assume passa a assumir o valor de uma expresso. Nos comandos acima, as expresses so denidas pelas constantes inteiras 1, 2 e 3. Esses comandos so executados na ordem em que aparecem. Ao atribuir um valor a uma varivel, o valor anterior da mesma simplesmente perdido (uma varivel sempre tem um nico valor. Considere-se por exemplo a sequncia de comandos abaixo:
a = 1; a = 2; a = 3;

Aps a execuo dessa sequncia de comandos, o valor de a ser igual a 3 (a cada atribuio, o "valor anterior" da varivel a destrudo). O valor de uma varivel pode ser utilizado numa expresso ( soma=a+b+c ). Isso vale tambm para a varivel esquerda do sinal de atribuio ("="). Exemplo:
a = 1; a = a + 2; a = a + 3;

Em C, todo comando encerra com um ";". A separao de linhas tem a mesma funo que um espao em branco. A sequncia de comandos acima equivalente a
a = 1; a = a + 2; a = a + 3;

O comando printf
O comando printf utilizado para escrever dados em forma de texto na sada padro ou num arquivo. Por enquanto, estamos utilizando a forma mais simples desse comando:
printf(< sequncia de caracteres entre aspas > , varivel1, varivel2, ...);

2 de 10

04-11-2011 22:16

Introduo Linguagem C

http://web.archive.org/web/20100328011007/http://www....

Nessa forma, os caracteres da sequncia so escritos na sada padro. Ao serem MAR escritos, Close alguns JAN ABR Go caracteres tm um signicado especial. Por exemplo o caracter '%' usado para indicar que o 28 25 um caracter seguintecaptures especicador de formato, e ambos devem ser substitudos pelo valor de Help 24 Abr 05 - 28 Mar 10 2009 2010 2011 uma varivel da lista de variveis. Por exemplo, no comando
printf("o valor de a : %d", a)

o par de caracteres '%d' ser substitudo pelo valor da varivel a. O caracter 'd' indica que esse valor deve ser escrito como um nmero inteiro decimal. Outro exemplo(completo):
#include <stdio.h> int main() { int a,b,c; a = 1; b = 2; c = 3; printf("valor de a:%d valor de b: %d valor de c:%d \n ",a,b,c); }

Neste exemplo, a primeira ocorrncia de "%d" se refere primeira varivel da lista (a), a segunda segunda varivel (b) e assim sucessivamente. O par "\n" est sendo utilizado para representar o caracter new line que causa a mudana de linha na sada padro. O resultado da execuo desse programa dever ser:
valor de a:1 valorde b:2 valor de c:3

Entrada de Dados
No exemplo abaixo, o comando scanf est sendo usado para entrada de dados. Seu uso semelhante ao uso do printf: o primeiro argumento uma cadeia de caracteres na qual o par "%d" indica um valor inteiro decimal. Os valores lidos so associados s variveis que aparecem a seguir. Os nomes das variveis aparecem precedidos de '&'.
#include int main() { int a,b,c; scanf("%d %d %d", &a,&b,&c); printf("a:%d b:%d c:%d \n",a,b,c); }

Os 'comandos' scanf e printf na verdade so funes denidas na biblioteca stdio que internamente chamam funes da biblioteca padro que por sua vez se utilizam dos servios oferecidos pelo sistema operacional para realizar as operaes de leitura e escrita. As funes scanf e printf trabalham basicamente com sequncias de caracteres. Elas tm a capacidade de converter caracteres para outros tipos de dados e vice-versa. Essa converso indicada na sequncia de caracteres atravs de "especicadores de formato", sempre precedidos de '%'. Nos exemplos apresentados at aqui, utilizamos apenas "%d" para indicar a converso de caracteres para inteiros (no caso de scanf) ou de inteiros para caracteres (no caso de printf). O caracter '&' antes do nome de cada varivel a ser lida indica referncia ou endereo da

3 de 10

04-11-2011 22:16

Introduo Linguagem C

http://web.archive.org/web/20100328011007/http://www....

varivel. atravs dessa referncia ou endereo que o valor da mesma ser JAN aualizadoABR aps a MAR Close Go leitura do dado correspondente.
25 captures

Um pouco mais sobre expresses

24 Abr 05 - 28 Mar 10

Help 2009 2010 2011

28

Nos exemplos anteriores, foram utilizadas expresses aritmticas simples como "a+1", "a+b+c". Expresses so formadas por operandos ou operadores. Operandos so valores (at o momento, inteiros), que aparecem na expresso como constantes, variveis ou expresses. A linguagem dispe de um grande nmero de operadores, mas temporariamente vamos nos restringir aos operadores aritmticos:
+ * / % soma subtrao multiplicao diviso resto da diviso

Parentesis podem ser utilizados para forar o clculo de uma expresso numa determinada ordem. Exemplos:
a + (b / 2) (a * 2) + 1 ((((a*2) + 1)*2)+1)*2+1)

Uma expresso como a + b * c ser calculada como a + ( b * c ) porque o clculo da mesma leva em conta a precedncia entre os operadores. Em C essa precedncia denida da seguinte forma (para os operadores aritmticos):
+, *, /,% menor precedncia maior precedncia

Os "operadores combinados"
Em programao, so frequentes comandos como:
a = a + b; x = x - y; p = p * 2;

Nesses comandos, o valor a ser atribuido varivel esquerda o resultado de uma operao na qual o valor dessa mesma varivel utlilizado. Em C possvel escrever esse comando de forma mais compacta atravs da "combinao" da operao\ com a atribuio (+=, -=, *=, etc.). Os comandos mostrados acima, por exemplo, poderiam ser reescritos como:
a += b; x -= y; p *= 2;

Os operadores ++ e -4 de 10 04-11-2011 22:16

Introduo Linguagem C

http://web.archive.org/web/20100328011007/http://www....

Outro tipo de comando comum em programao aquele no qual apenas se JAN incrementa ou MAR ABR Close Go decrementa o valor de uma varivel de 1. Em C possvel escrever esse tipo de comando atravs 28 dos operadores 25 captures "--". Exemplos: "++" e Help
24 Abr 05 - 28 Mar 10

2009 2010 2011

++i; ++i;

equivalente a i = i + 1; equivalente a i = i - 1;

Esses operadores podem ser utilizados de duas formas: antes ou depois do operando (p. ex. ++i ou i++). No primeiro a operao feita antes do uso do valor do operando. No segundo caso, a operao feita depois do uso do valor. Exemplos:
i = 10; v = ++i; /* o valor atribudo a v 11 */ i = 10; v = i++; /* o valor atribuido a v 10 */ /* nos 2 casos, o valor final de i 11 */

Comentrios
Um comentrio em C tem a seguinte forma:
/* texto qualquer */

Comentrios podem aparecer em qualquer lugar do programa onde caberia um espao (' '). Seu signicado exatamente o mesmo de um espao em branco. Comentrios delimitados por "/*" e "*/" podem ocupar vrias linhas.

Um exemplo: Clculo do peso ideal


O programa abaixo calcula o "peso ideal" de uma pessoa a partir da sua altura, segundo uma frmula. Note que se trata apenas de um exemplo de programao e no deve ser utilizado para orientar uma dieta.

#include <stdio.h> /* Determina o "peso ideal" de uma pessoa a partir da sua altura. Trata-se apenas de um exemplo de programao - no segue nenhuma orientao mdica. */ int main() { int a; /* altura */ int p; /* peso */ printf("Altura em centmetros(entre 120 e 200):"); scanf("%d",&a); p = (a-119)*5/8+45; printf("Peso ideal: %d \n",p); }

O Comando Condicional
5 de 10 04-11-2011 22:16

Introduo Linguagem C

http://web.archive.org/web/20100328011007/http://www....

O comando condicional permite alterar a sequncia de execuo dos comandos com base numa JAN MAR ABR Close Go condio. O comando condicional em C tem duas formas bsicas:
25 captures
24 Abr 05 - 28 Mar 10

if( condio ) comando if( condio ) comando1 else comando2

Help 2009 2010 2011

28

A condio uma expresso qualquer, cujo valor calculado ao se executar o comando condicional. Um valor diferente de zero para condio indica verdadeiro e um valor igual a zero indica falso. Na primeira forma a execuo do comando condicional implica em: 1. Clculo da expresso que dene a condio. 2. comando ser executado somente se o valor dessa expresso indicar verdadeiro. A execuo do comando condicional na segunda forma implica em: 1. Clculo da expresso que dene a condio. 2. Se a expresso indicar verdadeiro, comando1 ser executado. 3. Se a expresso indicar falso, comando2 ser executado. Exemplos:

... if(a - 10) b = 0; ... if(a) b = 1; else b = 2; ...

Operadores Relacionais
Os operadores relacionais permitem a comparao de valores. So os seguintes:
< <= == != >= > "menor que" "menor ou igual a" "igual a" "diferente de" "maior ou igual a" "maior que"

Exemplos:
... a < (h+5) ... a <= h ... x == 10 ... if ( a > 200) printf("altura acima do limite\n"); ... if ( a < 40) printf("altura abaixo do limite\n"); ...

6 de 10

04-11-2011 22:16

Introduo Linguagem C

http://web.archive.org/web/20100328011007/http://www....

Esses operadorescaptures tm todos a mesma precedncia, que menor que a precedncia dos 28 25 Help operadores aritmticos. O resultado de uma comparao ser um valor igual a zero de a condio 24 Abr 05 - 28 Mar 10 2009 2010 2011 testada resultar em falso ou um valor diferente de zero se a condio testada resultar em verdadeiro. O valor diferente de zero indicando verdadeiro no especicado na denio da linguagem.

Go

JAN MAR ABR Close

Mais exemplos
... if(a ... if(a ... if(x else ...

!= b) a = a-b; else b = b - a; != b) a -= b; else b -= a; == 10) y = 1; if (x == 11) y = 2; else y = 0;

Comando Composto
Em algumas situaes necessrio tratar uma sequncia de comandos como um nico comando. Isso possvel atravs de '{' e '}', que delimitam um comando composto. Exemplo:
... if(a < b) { t = a; a = b; b = t; } else i = i+1; ...

O Comando while
O comando while tem a forma
while( condio ) comando

e indica que comando deve ser executado repetidamente enquanto condio tiver tiver um valor diferente de zero (verdadeiro). A condio calculada antes da execuo de comando e recalculada antes de cada repetio.

Exemplo
#include <stdio.h> /* calculo da soma dos nmeros de 1 a 10 */ int main() { int s,i; s = 0; i = 1;

7 de 10

04-11-2011 22:16

Introduo Linguagem C
while(i <= 10) { s = s + i; i = i+1; }

http://web.archive.org/web/20100328011007/http://www....

Go

JAN MAR ABR Close

printf("A soma dos inteiros de 1 a %d %d\n",i,s); }


25 captures
24 Abr 05 - 28 Mar 10

Help 2009 2010 2011

28

O comando while do exemplo acima poderia ser escrito de forma mais compacta:
while(i <= 10) s += i++;

Neste exemplo, o comando que se repete um comando composto. Qualquer comando da linguagem poderia ser utilizado nesse contexto (at mesmo um comando while).

Outro exemplo: mximo divisor comum


#include <stdio.h> /* clculo do mximo divisor comum de dois valores lidos */ int main() { int A,B, a,b; /* leitura dos dois valores A e B */ scanf("%d %d",A,B); a = B; b = B; while(a!=b) if(a > b) a -= b; else b -= a; printf("O mdc entre %d e %d : %d\n",A,B,a); }

Neste exemplo, os nomes 'A' e 'a' representam nomes diferentes, j que em C, os caracteres maisculos so diferentes dos minsculos ("Nome" e "nome" so identicadores diferentes). Ao executar while(a!=b)..., se a condio testada for falsa na primeira vez, o comando if(a>b) a -= b; else b -= a; no ser executado nenhuma vez. Isso vai acontecer se os valores lidos para 'A' e 'B' forem iguais.

O comando for
O comando for outro tipo de comando repetitivo, com uma estrutura um pouco mais elaborada. Sua forma geral a seguinte:
for(expresso1; expresso2; expresso3) comando

onde expresso1 calculada uma vez antes do incio da execuo expresso2 indica a condio de repetio expresso3 executada a cada passo, depois de comando O comando for, como mostrado acima equivalente a um comando while da forma:

8 de 10

04-11-2011 22:16

Introduo Linguagem C
expresso1; while( expresso2 ) { comando 25 captures 24 Abr 05 - 28 Mar 10 expresso3; }

http://web.archive.org/web/20100328011007/http://www....

Go

JAN MAR ABR Close

Help 2009 2010 2011

28

O termo expresso1 est sendo utilizado acima em lugar de comando. A rigor um comando em C uma expresso, que devolve um valor. Essa caracterstica ainda no est sendo utilizada neste texto.

Exemplo
#include <stdio.h> /* calculo da soma dos nmeros de 1 a 10 */ int main() { int s,i; s = 0; for(i=1; i <= 10; ++i) s+=i; printf("A soma dos inteiros de 1 a 10 %d\n",i,s); }

Esta forma de uso do comando for, na qual uma varivel usada como contador do nmero de vezes que o comando repetido ocorre com frequncia na prtica.

Constantes simblicas
Em C possvel denir constantes usadas com frequncia num programa atravs da diretiva dene. Sua forma geral
#define nome valor

Aps a sua denio, a constante pode ser usada no programa atravs do seu nome. Esse recurso torna os programas mais legveis e se bem utilizado, facilita a sua manuteno. Exemplo:

#include <stdio.h> /* calculo da soma dos nmeros de 1 a N */ # define N 10 int main() { int s,i; s = 0; for(i=1; i <= N; ++i) s+=i; printf("A soma dos inteiros de 1 a %d %d\n",N,s); }

9 de 10

04-11-2011 22:16

Introduo Linguagem C

http://web.archive.org/web/20100328011007/http://www....

Go 25 captures

JAN MAR ABR Close

[proxima]

24 Abr 05 - 28 Mar 10

Help 2009 2010 2011

28

10 de 10

04-11-2011 22:16

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