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

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso?

Referncias

Introduo Programao em C
Afrnio Melo Junior afrjr3@gmail.com
Grupo de Integrao de Processos Qumicos Departamento de Engenharia Qumica, Escola de Qumica Universidade Federal do Rio de Janeiro

2013/2

1 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias 1

Conceitos bsicos Programao A linguagem C Hello World! Variveis O que so variveis? Declarao X Denio Exemplos Estruturas de Controle Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for Funes O que uma funo? Exemplos E s isso? Referncias
2 / 33

5 6

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Programao A linguagem C Hello World!

O que programao?

Denies Computadores so mquinas projetadas para realizar operaes aritmticas e lgicas seguindo uma srie de instrues pr-denidas. Um conjunto de instrues destinadas a serem seguidas por um computador conhecido como programa. Portanto, a programao pode ser denida como a arte de se escrever cdigos que contm instrues para determinadas tarefas a serem realizadas por um computador.
Figura 1: Computador.

3 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Programao A linguagem C Hello World!

Programando
Comunicao com o computador Computadores s entendem linguagem binria. Ou seja, todas as instrues que desejarmos passar a um computador devem estar expressas em termos de 0 ou 1. Exemplo de uma instruo entendida por um computador: 000101010101. O problema que seres humanos (normais) no entendem binrio! Como efetuar a comunicao entre o homem e o computador? Com o objetivo de resolver este problema, foram criadas as linguagens de programao. Linguagens de programao As primeiras linguagens de programao que surgiram foram as de baixo nvel. Estas apresentam sintaxes relacionadas diretamente s instrues que devem ser seguidas por um processador (apresentando pouco comprometimento em relao legibilidade por humanos). Um exemplo a Assembly. Mais tarde, foram aparecendo linguagens de alto nvel, que tm mais relao com os objetivos gerais do programador do que com as tarefas especcas do processador (sendo muito mais prticas, porm menos ecientes). Exemplos so C, Fortran, Python ou Matlab.
4 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Programao A linguagem C Hello World!

Rodando o programa
Linguagens compiladas X Linguagens interpretadas Imagine que voc escreveu um programa em alguma linguagem de alto nvel. Como fazer para rod-lo? Em primeiro lugar, preciso traduzir o cdigo da linguagem de programao (que voc entende) para a linguagem binria (que a mquina entende). Isto pode ser feito de duas maneiras:
Compilao: neste caso, traduz-se todo o programa de uma s vez para o cdigo binrio, gerando um arquivo chamado executvel. Este executvel ento pode ser rodado. Exemplos de linguagens compiladas: C/C++, Fortran. Interpretao: aqui, o programa traduzido e executado linha por linha. O desempenho menor em relao aos programas compilados. Exemplos de linguagens interpretadas: Python, Matlab, Octave.

Figura 2: Ilustrao da necessidade da compilao ou interpretao.

5 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Programao A linguagem C Hello World!

A linguagem C

A Linguagem O C uma linguagem compilada, de mdio a alto nvel e de uso geral, inicialmente desenvolvida por Dennis Ritchie no AT&T Bell Labs no comeo da dcada de 70. uma das linguagens mais inuentes e bem sucedidas da histria da computao, tendo servido como base para o desenvolvimento de outras linguagens importantes, como C++ e C#.
Figura 3: Dennis Ritchie.

6 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Programao A linguagem C Hello World!

Hello World!

O programa Hello World!


# include < stdio .h > int main () { printf ( " Hello World !\ n " ) ; return 0; }

Nosso primeiro programa em C Vamos comear analisando linha por linha o exemplo clssico do programa Hello World! Compile o cdigo ao lado e o rode. Qual o efeito que ele produz?

7 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Programao A linguagem C Hello World!

Hello World!

#include <stdio.h> O programa Hello World!


# include < stdio .h > int main () { printf ( " Hello World !\ n " ) ; return 0; }

Linhas iniciadas com # so diretrizes para o pr-processador. Neste estgio preliminar, voc pode entender as diretrizes como tarefas preliminares que o compilador precisa cumprir antes da compilao em si. Neste caso, a diretriz #include inclui no nosso programa a biblioteca stdio.h, que contm as denies bsicas para realizar entrada e sada de dados em C.

8 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Programao A linguagem C Hello World!

Hello World!

int main () Esta linha o incio da funo main. Todo cdigo em C deve ter uma funo main; ela marca o ponto em que o programa comea sua execuo. Uma funo em C pode aceitar uma certa quantidade de parmetros e retornar um valor. Neste caso, a funo main retorna um valor (do tipo inteiro, int ) e no aceita nenhum parmetro (devido ao parnteses vazio). Dentro das chaves est o bloco que corresponde ao corpo da funo.

O programa Hello World!


# include < stdio .h > int main () { printf ( " Hello World !\ n " ) ; return 0; }

9 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Programao A linguagem C Hello World!

Hello World!

O programa Hello World!


# include < stdio .h > int main () { printf ( " Hello World !\ n " ) ; return 0; }

O corpo da funo main No corpo da main h dois comandos (ordens que passamos ao computador). Um comando uma expresso, simples ou composta, que pode produzir algum efeito. Todos os comandos em C necessariamente terminam em ponto-e-vrgula!

10 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Programao A linguagem C Hello World!

Hello World!

printf(Hello World!); O programa Hello World!


# include < stdio .h > int main () { printf ( " Hello World !\ n " ) ; return 0; }

O comando printf que est denido na biblioteca stdio.h, includa no incio do nosso programa serve para imprimir dados em tela. No nosso caso, o comando imprime na tela o conjunto de caracteres Hello World!, e pula uma linha (devido ao caractere de escape \n).

11 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Programao A linguagem C Hello World!

Hello World!

O programa Hello World!


# include < stdio .h > int main () { printf ( " Hello World !\ n " ) ; return 0; }

return 0; O comando return indica o m da funo (no caso da main, o m do programa) e nele especicado o valor que esta deve retornar. O valor 0, retornado pela funo main, avisa ao sistema operacional que o programa terminou normalmente.

12 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

O que so variveis? Declarao X Denio Exemplos

O que so variveis?

Variveis Variveis so pores da memria que armazenam algum valor. Toda varivel em C precisa ter um identicador (nome que a distingue das outras variveis) e um tipo (que indica sua natureza). Tipos de variveis Exemplos de alguns tipos: int (nmero inteiro), oat (nmero decimal), double (decimal com preciso dupla), char (caractere simples), etc. Cada tipo de varivel ocupa um determinado espao na memria. Por exemplo, uma varivel int ocupa 4 bytes, geralmente. A linguagem C tambm permite a criao de tipos denidos pelo usurio.

13 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

O que so variveis? Declarao X Denio Exemplos

Declarao X Denio
Declarao de variveis Antes da utilizao de uma varivel pelo programa, precisamos dizer ao compilador que ela existe. Isto feito atravs da declarao desta varivel. A sintaxe para se declarar uma varivel em C : tipo_da_variavel identicador; Exemplos: int a; oat nome; double minha_variavel; Denio de variveis Quando declaramos uma varivel, como se estivssemos apenas dizendo ao compilador: h uma varivel com este tipo, e que tem este nome . Mas ela no armazena nenhum valor til (apenas lixo de memria). Para atribuir um valor uma varivel, podemos deni-la. A denio feita atravs do operador de atribuio (=). Ex: a = 3; nome = 5.7; minha_variavel = 10.89; Podemos denir uma varivel ao mesmo tempo em que a declaramos: int a = 4; Erro comum: tentar denir uma varivel sem t-la declarado.
14 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

O que so variveis? Declarao X Denio Exemplos

Exemplo (certo)
# include < stdio .h > // este eh um c o m e n t a r i o . c o m e n t a r i o s sao i g n o r a d o s pelo c o m p i l a d o r int main () { // d e c l a r a n d o v a r i a v e i s int a ; double b ; int c ; double d , e ; // d e f i n i n d o v a r i a v e i s ao mesmo tempo em que d e c l a r a m o s double f = 1.5; float g = 0.5; // d e f i n i n d o as v a r i a v e i s d e c l a r a d a s no inicio do codigo c = 4; d = e = 2.5; // o perando com as v a r i a v e i s a = 3*( c +2) ; // " a " foi antes declarada , mas nao definida ! b = f *( g *( d + e ) ) ; // " b " foi antes declarada , mas nao definida ! c = c+a; // r e d e f i n i n d o " c " // m o s t r a n d o r e s u l t a d o s na tela printf ( " \ nOs resultados s o : %d , %f , % d \ n \ n " , a , b , c ) ; }
15 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

O que so variveis? Declarao X Denio Exemplos

Exemplo (errado)

# include < stdio .h > /* este eh um bloco de c o m e n t a r i o s q u a i s q u e r linhas que sejam escritas aqui serao c o n s i d e r a d a s c o m e n t a r i o s */ int main () { // d e c l a r a n d o v a r i a v e i s float a , b ; // c a l c u l a n d o a = 2; c = a/b; // m o s t r a n d o r e s u l t a d o na tela printf ( " \ nO resultado : %f \n\n", c); }

16 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for

Estruturas de controle

Importncia O corao da arte de se programar encontra-se nas estruturas de controle. Digitar uma linha para cada operao feita ou deciso tomada pelo computador seria cansativo, concorda? Atravs das estruturas de controle, podemos com poucas linhas de cdigo ordenar ao computador o que ele realmente foi designado para fazer, ou seja, tarefas repetitivas e automticas. Dividem-se em dois tipos.
Estruturas condicionais; Estruturas iterativas. Figura 4: Exemplo de um algoritmo que utiliza estruturas condicionais e iterativas.

17 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for

Estruturas Condicionais

Expresses lgicas As estruturas condicionais avaliam expresses lgicas para decidir se executam ou no algum comando ou conjunto de comandos. Expresses lgicas s podem resultar em dois valores: verdadeiro ou falso. A ideia simples: se o resultado da expresso for verdadeiro, o(s) comando(s) so executado(s). Se for falso, no so executado(s). As expresses lgicas so construdas de acordo com a lgebra booleana.

18 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for

Estruturas Condicionais

Figura 5: Operadores condicionais usados em expresses lgicas

19 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for

Estruturas Condicionais
if Executa um ou mais comandos sob determinada condio, representada por uma expresso lgica. A sintaxe : if (condicao) { lista de comandos; } else if (outra condicao) { outra lista de comandos; } else { ultima lista de comandos; } Exemplo Escreva um programa que pea ao usurio um valor de temperatura, em C, e indique em qual estado fsico, ao nvel do mar, se encontra a gua.

20 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for

Exemplo - if

# include < stdio .h > int main () { double T ; printf ( " Insira a temperatura , em graus Celsius \ n " ) ; scanf ( " % lf " , & T ) ; if (T < -273.15) { printf ( " Temperatura abaixo do zero absoluto ! \ n " ) ; } else if (T > -273.15 & T <0) { printf ( " Agua no estado solido \ n " ) ; } else if ( T ==0) { printf ( " Agua no equilibrio S - L \ n " ) ; }

21 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for

Exemplo - if (cont.)

else if (T >0 & T <100) { printf ( " Agua no estado liquido \ n " ) ; } else if ( T ==100) { printf ( " Agua no equilibrio L - V \ n " ) ; } else { printf ( " Agua no estado vapor \ n " ) ; } }

22 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for

Estruturas Iterativas

while Executa, enquanto uma dada condio permanece satisfeita, um ou mais comandos. A sintaxe : while (condicao) { lista de comandos; } Exemplo Mostre a lista dos nmeros naturais em tela, desde o 5000, em ordem decrescente.

23 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for

Exemplo - while

# include < stdio .h > int main () { int i = 1000; while (i >0) { printf ( " % d " ,i ) ; i = i -1; } printf ( " acabou ! " ) ; }

24 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for

Estruturas Iterativas
for Executa, enquanto uma dada condio permanece satisfeita, um ou mais comandos enquanto um contador percorre valores em passos denidos. A sintaxe : for (inicializacao; condicao; passo) { lista de comandos; } Exemplo Calcule a soma:
6

3i+1
i=1

25 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for

Exemplo - for

# include < stdio .h > # include < math .h > int main () { int i ; int soma = 0; // contador // valor da soma

for ( i =1; i <=6; i ++) // novo operador (++) : i ++ s i g n i f i c a i = i +1 { soma = soma + pow (3 ,( i +1) ) ; } printf ( " \ nO resultado eh : % d \ n \ n " , soma ) ; }

26 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

O que uma funo? Exemplos

Funes
O que uma funo? Uma funo um grupo de comandos que executado quando chamado de algum ponto do programa. A sintaxe : tipo_retornado nome_da_funcao (parametro1, parametro2,...) { lista de comandos; } Funes so extremamente teis no sentido em que podemos organizar nosso programa de uma maneira modular, aproveitando-nos assim de todo o potencial que o paradigma de programao estruturada do C pode nos oferecer. Exemplos Escreva um programa que contenha uma funo que compute a soma de dois nmeros inteiros. Demonstre o uso da funo. Escreva um programa que resolva a equao x cos(x) = 0 pelo mtodo da bisseo.
27 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

O que uma funo? Exemplos

Exemplo 1 - funes

# include < stdio .h > int adicao ( int a , int b ) { int r ; r = a+b; return r ; } int main () { int z = adicao (2 ,3) ; printf ( " \ nO resultado eh : % d \ n \ n " , z ) ; }

28 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

O que uma funo? Exemplos

Exemplo 2 - funes

# include < stdio .h > # include < stdlib .h > # include < math .h > double f ( double x ) ; // equacao a ser r e s o l v i d a double bissecao ( double a , double b , double tol , int it_max ) ; int main () { double z = bissecao (0 , 10 , 1e -4 , 50) ; printf ( " \ nO resultado eh : % e \ n \ n " , z ) ; } double f ( double x ) { double y = x - cos ( x ) ; return y ; }

// metodo

29 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

O que uma funo? Exemplos

Exemplo 2 - funes (cont.)

double bissecao ( double a , double b , double tol , int it_max ) { double c ; // usado na iteracao int it ; // contador printf ( " \ nResolvendo equacao transcedental pelo metodo da Bissecao :\ n \ n " ) ; if ( f ( a ) * f ( b ) >0) { printf ( " \ nAtencao ! A raiz nao encontra - se no intervalo dado .\ n \ n FATAL **** INTERROMPENDO **** " ) ; exit ( -1) ; } else { printf ( " it \ t a \ t b \ t c \ t f ( c ) \ t \ n " ) ;

**** ERRO

30 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

O que uma funo? Exemplos

Exemplo 2 - funes (cont.)


for ( it =1; it <= it_max ; it ++) { c =0.5*( a + b ) ; if ( f ( a ) * f ( c ) <0) b=c; else a=c; printf ( " % d \ t % e \ t % e \ t % e \ t % e \ n \ n " , it , a , b ,c , f ( c ) ) ; if ( fabs ( f ( c ) ) <= tol ) { return c ; break ; } if ( it >= it_max ) { printf ( " \ n METODO DIVERGIU \ n \ n ***** ERRO FATAL ***** INTERROMPENDO ***** " ) ; exit ( -1) ; } } } }
31 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

O que no vimos

O C possui muitos outros recursos que infelizmente no pudemos explorar aqui! Dentre eles, destaco:
Arrays : so sries de elementos do mesmo tipo locados em blocos contguos da memria. So os anlogos computacionais aos vetores (array 1-D) e matrizes (array multi-D) da matemtica; Ponteiros : so uma das mais poderosas ferramentas da linguagem C; permitem manipular as variveis do programa diretamente pelo seu endereo da memria, o que pode aumentar bastante a exibilidade na programao; Tipos denidos pelo usurio : no precisamos nos restringir aos tipos denidos no padro da linguagem. Podemos criar tipos customizados (casa, carro, cachorros, reatores) que possuem seus prprios atributos. Ver structs, typedefs, unions e enumerations.

32 / 33

Contedo Conceitos bsicos Variveis Estruturas de Controle Funes E s isso? Referncias

Referncias

Stephen G. Kochan - Programming in C - Sams Pulishing, Third Edition, 2005; Herbert Schildt - C Completo e Total - Makron Books - Terceira Edio, 1997; Julian Souli - C++ Language Tutorial, 2007 - Disponvel em www.cplusplus.com; www.cprogramming.com

33 / 33