Sie sind auf Seite 1von 59

Curso de C: uma breve introduo

Italo Valcy <italo@dcc.ufba.br>

V Semana de Engenharia Eltrica - UFBA

Italo Valcy Curso de C: uma breve introduo

Licena de uso e distribuio

Todo o material aqui disponvel pode, posteriormente, ser utilizado sobre os termos da: Creative Commons License: Atribuio - Uso no comercial - Permanncia da Licena

http://creativecommons.org/licenses/by-nc-sa/3.0/

Italo Valcy Curso de C: uma breve introduo

Quem sou eu?


Graduando do DCC (Cincia da Computao) Administrador de Redes e Sistemas GNU/Linux (POP-BA/RNP e Graco) Contribuidor de Software Livre (Debian, Foswiki, HnTool) Programador C nas horas vagas... :-)

Italo Valcy Curso de C: uma breve introduo

Sobre o curso
Pr-requisito Lgica de programao Uma rpida introduo sobre C Estrutura bsica de um programa Declarao de variveis e tipos Estruturas de controle de fluxo Funes
4

Italo Valcy Curso de C: uma breve introduo

O que C?
uma linguagem de programao de propsito geral Criada por Dennis Ritchie Derivada da linguagem B Rpida e portvel (ANSI C) Vrias aplicaes... Kernel do Linux GNOME ...
5

Italo Valcy Curso de C: uma breve introduo

Primeiros passos

Italo Valcy Curso de C: uma breve introduo

Primeiros passos
O que voc precisa?
Compilador (DJGPP, etc.) Editor de texto (gedit/notepad, IDE)

C Case-Sensitive:
soma != Soma != SOMA != SoMa

Originalmente Programao Modular, mas... suporta:


POO Programao Concorrente
7

Italo Valcy Curso de C: uma breve introduo

Primeiros passos
Primeiro programa em C

Exerccio: fazer um super-programa que exiba a seguinte mensagem na tela: Ola Mundo!!!

Italo Valcy Curso de C: uma breve introduo

Primeiros passos
Primeiro programa em C

Exerccio: fazer um super-programa que exiba a seguinte mensagem na tela: Ola Mundo!!!
/*PrimeiroprogramaemC:olamundo.c*/ #include<stdio.h> intmain(){ printf(OlaMundo!!!\n); }

Italo Valcy Curso de C: uma breve introduo

Primeiros passos
Primeiro programa em C

Compilar e executar:
gcc -o ola-mundo ola-mundo.c ./ola-mundo

10

Italo Valcy Curso de C: uma breve introduo

Primeiros passos
Funes bsicas de I/O

Funo sada: printf


printf print + formato

Exemplo de utilizao:
printf(string-de-controle, lista-de-argumentos) printf ("%f",40.345) -> "40.345" printf("Ola mundo!\n");

11

Italo Valcy Curso de C: uma breve introduo

Primeiros passos
Funes bsicas de I/O

Funo entrada: scanf


scanf scan + formato

Exemplo de utilizao:
scanf(string-de-controle, lista-de-argumentos) scanf ("%d",&x); scanf("%f %f", &num1, &num2);

Cuidado com o buffer na leitura de string...


12

Italo Valcy Curso de C: uma breve introduo

Primeiros passos
Funes bsicas de I/O

Caracteres de controle: printf ou scanf


Cdigo %d %f %c %s Inteiro Float (real) Caractere String Significado

13

Italo Valcy Curso de C: uma breve introduo

Variveis e tipos de dados

14

Italo Valcy Curso de C: uma breve introduo

Variveis e tipos de dados


Variveis

Uma varivel uma poro de memria, utilizada para armazenar um determinado valor:
a =5 b=2 a=a+1 result = a b

15

Italo Valcy Curso de C: uma breve introduo

Variveis e tipos de dados


Identificadores

Cada varivel necessita de um Identificador que a distingue das outras:


Lestras (a-z, A-Z) + dgitos (0-9) + underscore (_)

No podem iniciar com dgitos Cuidado com as palavras reservadas:


for, while, and, do, int, float, break, case, etc.

Dica de boa prtica:


Uso de identificadores mnemnicos
16

Italo Valcy Curso de C: uma breve introduo

Variveis e tipos de dados


Tipos de dados fundamentais

Ok, iremos armazenar os dados na memria, mas o computador precisa saber que tipo de dado est armazenando... Tipos fundamentais:
char Armazenamento de caracteres int Armazenamento de inteiros float Ponto flutuante em preciso simples double Ponto flutuante em dupla preciso

17

Italo Valcy Curso de C: uma breve introduo

Variveis e tipos de dados


Declarao de variveis

Para declarar variveis em C, digite o tipo da varivel seguido por um identificador vlido:
int a; int b; float mynumber;

possvel declarar variveis de mesmo tipo na mesma linha:


int a, b;

possvel inicializar variveis j na declarao:


int a = 10, b = 5; float mynumber = 23.45;
18

Italo Valcy Curso de C: uma breve introduo

Variveis e tipos de dados


Vetores

Conjunto de elementos consecutivos, do mesmo tipo, que podem ser acessados individualmente a partir de um nico nome.
Notas

4.8 5.0 4.5 5.6 6.7 3.2 2.9


(0) (1) (2) (3) (4) (5) (6)

Declarao:
tipo nome_variavel [quantidade]

19

Italo Valcy Curso de C: uma breve introduo

Variveis e tipos de dados


Vetores

Exemplo de declarao:
int numero_matricula[20]; float notas[20];

Os ndices do vetor de tamanho n variam de 0 n-1. Ex:


float notas[4]; notas[0] = 6.4; // primeiro elemento notas[3] = 5.3; // ultimo elemento

20

Italo Valcy Curso de C: uma breve introduo

Variveis e tipos de dados


Vetores

Dicas de inicializao de vetores:


int v[3] = {1,2,3}; int v[5] = {5,4}; // igual a {5,4,0,0,0} int v[] = {6,7,8,9};

Incorreto:
int v[];

21

Italo Valcy Curso de C: uma breve introduo

Operadores

22

Italo Valcy Curso de C: uma breve introduo

Operadores
Operadores Aritmticos

Operadores aritmticos
+, -, *, / e %

A diviso inteira trunca qualquer parte fracionria A seguinte expresso produz o resto da diviso de x por y (somente aplicado int):
x%y 5 % 3 resulta em 2

23

Italo Valcy Curso de C: uma breve introduo

Operadores
Operadores Relacionais e lgicos

Operadores relacionais
Maior: > Maior ou igual: >= Menor: < Menor ou igual: <= Igual: == Diferente: !=

Operadores lgicos:
AND: && OR: ||
24

Italo Valcy Curso de C: uma breve introduo

Exerccio
Programa um pouco mais trabalhado

Fazer um programa que leia um nmero natural, representando a quantidade de dias, e exiba o equivalente a quantidade de anos. Exemplo:
365 dias => ~1 ano 1461 dias => 4 anos

Dica: para ler um inteiro na varivel x, fazemos:


scanf(%d, &x);

Dica: para imprimir int e float (x e y, respec.):


printf(numero int: %d; numero float: %f\n, x, y);
Italo Valcy Curso de C: uma breve introduo
25

Exerccio
Programa um pouco mais trabalhado

Fazer um programa que leia um nmero natural, representando a quantidade de dias, e exiba o equivalente a quantidade de anos.
/*Conversaodiasparaanos:dias2anos.c*/ #include<stdio.h> intmain(){ intdias; floatanos; printf(Digiteonumerodedias:); scanf(%d,&dias); anos=dias/365.25; printf(\n%ddiasequivalea%fanos.\n,dias,anos); }
26

Italo Valcy Curso de C: uma breve introduo

Controle de fluxo

27

Italo Valcy Curso de C: uma breve introduo

Controle de fluxo
Condicionais

possvel controla o fluxo de execuo de um programa em C, baseado no valor de uma expresso lgica/relacional. Exemplo: imposto de renda
if(salario_mensal<=1499.15){ isento(); }else{ calcula_ir(salario_mensal); }

28

Italo Valcy Curso de C: uma breve introduo

Controle de fluxo
Condicionais

Forma geral:
if(<condicao>){ //Fluxoaexecutarcaso<condicao>sejaverdadeira }else{ //Fluxoaexecutarcaso<condicao>sejafalsa }

<condicao> pode ser expresso complexa:


a > b+3 && (c % 5 != 0 || c == 25)

29

Italo Valcy Curso de C: uma breve introduo

Exerccio
Programa clssico do ano bissexto

Um ano bissexto se for divisvel por 4 mas no por 100, exceto quando for divisvel por 400. Faa um programa que leia o ano e diga se ele bissexto ou no. Exemplo:
2000 => Ano bissexto 2200 => Ano nao e bissexto

30

Italo Valcy Curso de C: uma breve introduo

Exerccio
Programa clssico do ano bissexto

Um ano bissexto se for divisvel por 4 mas no por 100, exceto quando for divisvel por 400. Faa um programa que leia o ano e diga se ele bissexto ou no.
/*Verificaanobissexto:bissexto.c*/ #include<stdio.h> intmain(){ intano; printf(Digiteoano:); scanf(%d,&ano); if(ano%4==0&&ano%100!=0||ano%400==0){ printf(Anobissexto\n); }else{ printf(Anonaoebissexto\n); } } Italo Valcy Curso de C: uma breve introduo
31

Controle de fluxo
Lao de repetio while O lao while usado quando queremos que um bloco de instrues seja executado ENQUANTO uma condio for verdadeira (true). Ex.: imprimir nmeros naturais pares menores que 10:
#include<stdio.h> intmain(){ intx=0; printf(%d\n,x); x=x+2; printf(%d\n,x); x=x+2; printf(%d\n,x); x=x+2; printf(%d\n,x); x=x+2; printf(%d\n,x);
32

Italo Valcy Curso de C: uma breve introduo

Controle de fluxo
Lao de repetio while

E se fosse at 1000? E se o clculo intermedirio fosse mais complexo? Forma mais elegante:
#include<stdio.h> intmain(){ intx=0; while(x<10){ printf(%d\n,x); x=x+2; } }
Italo Valcy Curso de C: uma breve introduo
33

Controle de fluxo
Lao de repetio while

Forma geral:
while(<condicao>){ //declaracoes... }

Parecido com o comando if:


if(<condicao>){ //declaracoes... //volteparaocomandoif(goto) }

Dica de boa prtica:


Nunca use goto...
34

Italo Valcy Curso de C: uma breve introduo

Controle de fluxo
Exemplo: fatorial
#include<stdio.h> intmain(){ intn,contador,fat=1; printf("Digiteumnumero:"); scanf("%d",&n); contador=n; while(contador>0){ fat=fat*contador; contador=contador1; } printf("Ofatorialde%de'%d\n",n,fat); }
35

Italo Valcy Curso de C: uma breve introduo

Controle de fluxo
Exerccio: Fazer um programa para imprimir uma tabela com os primeiros 300 graus Fahrenheit e seus correspondentes graus Celsius (de 20 em 20), usando a frmula:
C=(5/9)(F-32)

Sada: 0 F => -17.8 C 20 F => -6.7 C 40 F => 4.4 C 60 F => 15.6 C 260 F => 126.7 C 280 F => 137.8 C 300 F => 148.9 C
36

Italo Valcy Curso de C: uma breve introduo

Controle de fluxo
/*ProgramaparaconversaodeFahrenheit *paraCelsius:fahr2celsius.c */ #include<stdio.h> intmain(){ intinicio,fim,incr; floatfahr,celsius; inicio=0; fim=300; incr=20; fahr=inicio; while(fahr<=fim){ celsius=(5.0/9.0)*(fahr32.0); printf(%4.0f=>%6.1f\n,fahr,celsius); fahr=fahr+incr; } }
37

Italo Valcy Curso de C: uma breve introduo

Controle de fluxo
Lao de repetio for

Forma geral:
for(<inicializacao>;<condicao>;<incremento>){ //comandos... }

<inicializacao>: responsvel pela seo de inicializao das variveis de iterao do lao <condicao>: deve conter a condio de parada, que deve ser verdadeira em algum momento. <incremento>: comandos para incremento das variveis de iterao do lao
38

Italo Valcy Curso de C: uma breve introduo

Controle de fluxo
Lao de repetio for

Exemplo: fahr2celsius-v2.c

39

Italo Valcy Curso de C: uma breve introduo

Controle de fluxo
Lao de repetio for

Exemplo: fahr2celsius-v2.c
/*ProgramaparaconversaodeFahrenheit *paraCelsius:fahr2celsiusv2.c */ #include<stdio.h> intmain(){ floatfahr,celsius; for(fahr=0.0;fahr<=300.0;fahr=fahr+20.0){ celsius=(5.0/9.0)*(fahr32.0); printf(%4.0f=>%6.1f\n,fahr,celsius); } }

40

Italo Valcy Curso de C: uma breve introduo

Funes

41

Italo Valcy Curso de C: uma breve introduo

Funes
Funes em C

Funes so blocos de cdigo que agrupam sequncias de operaes que, atrelados a um nome, podem ser invocados em todo o programa, de forma que tal sequncia possa ser executada

42

Italo Valcy Curso de C: uma breve introduo

Funes
Funes em C

A ideia de funes est em encapsular uma ideia ou operao Benefcios:


Modularizao Clareza do cdigo Reutilizao

43

Italo Valcy Curso de C: uma breve introduo

Funes
Funes em C

Funes da biblioteca padro do C:


printf() scanf() getchar() gets() putchar() ...

44

Italo Valcy Curso de C: uma breve introduo

Funes
Funes em C

Forma geral:
tipo_de_retornonome_da_funcao(tipo_paramnome_param,...){ //comandos }

Funes que no retornam nenhum valor, devem ser do tipo void. No possvel definir uma funo dentro de outra

45

Italo Valcy Curso de C: uma breve introduo

Funes
Funes em C

Exemplo de funo para calcular o quadrado de um inteiro:


#include<stdio.h> intquadrado(intx){ returnx*x; } intmain(){ intnumero; printf(Digiteumnumero:); scanf(%d,&numero); printf(Oquadradode%de'%d,numero,quadrado(numero));

46

Italo Valcy Curso de C: uma breve introduo

Funes
Funes em C

Em C, todas as funes devem ser definidas antes da funo main(). O nome da funo DEVE ser NICO (dentre as outras funes e variveis) A mesma regra de nomenclatura de variveis aplicada nomenclatura de funes.

47

Italo Valcy Curso de C: uma breve introduo

Funes
Parmetros de funes

Na chamada de uma funo, o tipo e quantidade de parmetros devem acordar com sua definio A comunicao com a funo feita atravs dos argumentos e parmetros Na funo, os parmetros so como variveis locais

48

Italo Valcy Curso de C: uma breve introduo

Funes
Parmetros de funes

Parmetros de funes:

49

Italo Valcy Curso de C: uma breve introduo

Funes
Valor de retorno

Aps fazer seu processamento, as funes podem necessitar retornar um valor ou resultado. Exemplo:
quadrado(4) => 16

Tipos de retorno:
int, float, double, char, void

O tipo void usado quando a funo no deve retornar nada. Ex: printf()
50

Italo Valcy Curso de C: uma breve introduo

Funes
Valor de retorno: comando return

O retorno de uma funo definido pelo comando return. Ex.:


... intquadrado(intx){ returnx*x; } ...

Provoca uma chamador

sada

imediata

da

funo

51

Italo Valcy Curso de C: uma breve introduo

Funes
Exerccios

Exerccio 1: converter o programa de fatorial anterior para usar uma funo no calculo do fatorial propriamente dito Exerccio 2: fazer uma funo, pot(x,y), para calculo da potncia de um nmero x por y (xy ) Exerccio 3: fazer uma funo println() que recebe uma string s (vetor de char) e imprime s seguida pelo caractere de nova linha (\n).

52

Italo Valcy Curso de C: uma breve introduo

Funes
A funo main

Todo programa em C, deve SEMPRE possuir a funo main() em seu cdigo, independente das outras funes.
#include<stdio.h> intmain(intargc,char**argv){ //comandos... } return0;

53

Italo Valcy Curso de C: uma breve introduo

Funes
A funo main

argc um inteiro que indica a quantidade de argumentos passados na linha de comando argv um vetor de strings que contm os argumentos da linha de comando (o primeiro o nome do programa).
#include<stdio.h> intmain(intargc,char**argv){ if(argc<2){ printf("Usage:%s<NOME>\n",argv[0]); return1; } printf("Ola,%s\n",argv[1]); return0; }
54

Italo Valcy Curso de C: uma breve introduo

Tpicos avanados

55

Italo Valcy Curso de C: uma breve introduo

Tpicos avanados
Matrizes e strings Outras funes de controle de fluxo Alocao dinmica de memria (ponteiros) Estruturas, Unies, Enumeraes E/S com Arquivos, Console, pr-processador ...

56

Italo Valcy Curso de C: uma breve introduo

Tpicos avanados
Bibliotecas para programao grfica
gtk, opengl, etc.

Biblioteca para programao em rede


sockets

Bibliotecas para programao paralela


OpenMP, MPI, etc.

Bibliotecas para programao de circuitos

57

Italo Valcy Curso de C: uma breve introduo

Referncias
KERNIGHAN, B.W. C and RITCHIE, D.M.: A linguagem de programao. Traduo de: The C Programming Language. Edisa, 1986. Curso de C, UFMG. Disponvel http://www.mtm.ufsc.br/~azeredo/cursoC/ C Library Reference. Disponvel http://www.cplusplus.com/reference/clibrary/ em: em:

58

Italo Valcy Curso de C: uma breve introduo

Dvidas

59

Italo Valcy Curso de C: uma breve introduo

Das könnte Ihnen auch gefallen