Introdução À Linguagem C PDF
Introdução À Linguagem C PDF
Introdução À Linguagem C PDF
Referncias
Introduo Programao em C
Afrnio Melo Junior [email protected]
Grupo de Integrao de Processos Qumicos Departamento de Engenharia Qumica, Escola de Qumica Universidade Federal do Rio de Janeiro
2013/2
1 / 33
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
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
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
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.
5 / 33
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
Hello World!
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
Hello World!
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
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.
9 / 33
Hello World!
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
Hello World!
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
Hello World!
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
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
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
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
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
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
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
Importncia Estruturas condicionais: expresses lgicas Estruturas condicionais: o bloco if Estruturas iterativas: o bloco while Estruturas iterativas: o bloco for
Estruturas Condicionais
19 / 33
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
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
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
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
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
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
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
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
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
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
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
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
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