Escolar Documentos
Profissional Documentos
Cultura Documentos
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/
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
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
Primeiros passos
Primeiros passos
O que voc precisa?
Compilador (DJGPP, etc.) Editor de texto (gedit/notepad, IDE)
C Case-Sensitive:
soma != Soma != SOMA != SoMa
Primeiros passos
Primeiro programa em C
Exerccio: fazer um super-programa que exiba a seguinte mensagem na tela: Ola Mundo!!!
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); }
Primeiros passos
Primeiro programa em C
Compilar e executar:
gcc -o ola-mundo ola-mundo.c ./ola-mundo
10
Primeiros passos
Funes bsicas de I/O
Exemplo de utilizao:
printf(string-de-controle, lista-de-argumentos) printf ("%f",40.345) -> "40.345" printf("Ola mundo!\n");
11
Primeiros passos
Funes bsicas de I/O
Exemplo de utilizao:
scanf(string-de-controle, lista-de-argumentos) scanf ("%d",&x); scanf("%f %f", &num1, &num2);
Primeiros passos
Funes bsicas de I/O
13
14
Uma varivel uma poro de memria, utilizada para armazenar um determinado valor:
a =5 b=2 a=a+1 result = a b
15
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
Para declarar variveis em C, digite o tipo da varivel seguido por um identificador vlido:
int a; int b; float mynumber;
Conjunto de elementos consecutivos, do mesmo tipo, que podem ser acessados individualmente a partir de um nico nome.
Notas
Declarao:
tipo nome_variavel [quantidade]
19
Exemplo de declarao:
int numero_matricula[20]; float notas[20];
20
Incorreto:
int v[];
21
Operadores
22
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
Operadores
Operadores Relacionais e lgicos
Operadores relacionais
Maior: > Maior ou igual: >= Menor: < Menor ou igual: <= Igual: == Diferente: !=
Operadores lgicos:
AND: && OR: ||
24
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
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
Controle de fluxo
27
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
Controle de fluxo
Condicionais
Forma geral:
if(<condicao>){ //Fluxoaexecutarcaso<condicao>sejaverdadeira }else{ //Fluxoaexecutarcaso<condicao>sejafalsa }
29
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
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
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... }
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
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
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
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
Controle de fluxo
Lao de repetio for
Exemplo: fahr2celsius-v2.c
39
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
Funes
41
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
Funes
Funes em C
43
Funes
Funes em C
44
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
Funes
Funes em C
46
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
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
Funes
Parmetros de funes
Parmetros de funes:
49
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
Funes
Valor de retorno: comando return
sada
imediata
da
funo
51
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
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
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
Tpicos avanados
55
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
Tpicos avanados
Bibliotecas para programao grfica
gtk, opengl, etc.
57
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
Dvidas
59