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

ndice

Linguagem Li d de programao C C.

http://computerinfodicas.blogspot.com.br

Linguagem de Programao C Traduo


CDIGO FONTE ...
SOMA = VAR1 + TOTAL ...

CDIGO OBJETO ... TRADUTOR


00010110111001011001011010 ...

(linguagem de programao)
`

(executvel) ( executvel )

MONTADOR (assembler): ` Tradutor para linguagens de 2 gerao. COMPILADOR: programa g de uma vez. ` Traduz todo o p INTERPRETADOR: ` Traduz o programa instruo por instruo.

Linguagem de Programao C
Compiladores e Interpretadores - Ciclo de desenvolvimento
Incio

Editar cdigo fonte

Erros de linkedio?

Si Sim

No Sim Compilar Executar programa

Erros de compilao?

No Linkeditar

Erros de tempo de Execuo?

Sim

No

Fim

Linguagem de Programao C Histrico da Linguagem de Programao C


Criada por Denis Ritchie Ritchie, na dcada de 1970 1970, para uso em um computador DEC PDP-11 em Unix. C++ uma extenso da linguagem C - h quem diga que no! Alguns Sistemas Operacionais foram escritos em C.

Linguagem de Programao C Estrutura bsica de um programa C


diretivas para o pr-processador declarao de variveis globais main i () { declarao de variveis locais da funo main comandos da funo main }

Linguagem de Programao C
Diretivas para o processador - Bibliotecas
Diretiva #include permite incluir uma biblioteca. Bibliotecas contm funes pr-definidas, utilizadas nos programas. Exemplos: #include <stdio.h> Funes de entrada e sada

#include <stdlib.h> Funes padro #include <math.h> Funes matemticas

#include <system.h> Funes do sistema #include <string.h> Funes de texto

Linguagem de Programao C O ambiente Bloodshed Dev-C++


O O Bloodshed Dev-C++ Dev C++ um ambiente integrado de desenvolvimento (Integrated Development Environment IDE) IDE) de programas em C/C++ com editor, compilador, bibliotecas e debugger. Pode Pode ser baixado de:
http://www.bloodshed.net/dev/devcpp.html

Linguagem de Programao C Usando o Dev-C++ (a)


Inicie Inicie o Dev-C++ Dev C++ pelo cone ou pelo menu. menu Crie um novo arquivo, com o comando File, New Source File. Edite o seguinte programa (exemplo-1.c).
#include <stdio.h> main() i () { printf ("Alo mundo!"); system("PAUSE"); (" S ") }

Linguagem de Programao C
Usando o Dev-C++ (b)
Salve o p programa g com o nome exemplo-1.c. p Para tanto, , selecione o menu File, Save unit as. Compile o programa com o comando Compilar & Executar, ou com a tecla Ctrl-F9. Se houver algum erro de sintaxe, aparece uma ou mais mensagens no rodap da janela. Neste caso, corrija o programa e repita. Se no houver erros, erros execute o programa com o comando Executar/Executar ou com a tecla Ctrl-F10.
#include <stdio.h> main() { printf ("Alo mundo!"); system("PAUSE"); }

Linguagem de Programao C Importante


Termine todas as linhas com <;> Sempre salve o programa antes de compilar. Sempre compile o programa antes de executar. Quando ocorrer um erro de compilao, d um duplo clique sobre a mensagem de erro para destacar o comando d errado d no programa. Verifique tambm a linha anterior, que pode ser a responsvel pelo erro, especialmente se faltar o <;>. Use comentrios, iniciados por <//>.

Linguagem de Programao C
Declaraes
Declaram as variveis e seus tipos. Os nomes das variveis ari eis devem de em conter apenas letras, letras dgitos e o smbolo <_>. At 32 caracteres. Os principais tipos so: char, int, float, double e void (caractere, inteiro, ponto flutuante, ponto flutuante de preciso dupla e sem valor). Diferena entre letras maisculas e minsculas! (exemplo-2.c) Exemplos: int n, N;
diferente t de d N! int n; n dif i int quantidade_valores; float x, x y, y somaValores; char sexo; [ ]; char nome[40];

Linguagem de Programao C
Declaraes

Real: n1, n2, n3, media

#include <stdio.h> main() { , n2, , n3, , media; ; double n1, ... system("PAUSE"); }

Linguagem de Programao C Comando de atribuio


Atribui Atribui o valor da direita varivel da esquerda O valor pode ser uma constante, uma varivel ou uma expresso Exemplos x = 4; --> > lemos x recebe 4 y = x + 2; y = y + 4 4; valor = 2.5; sexo = 'F'

Linguagem de Programao C Entrada e Sada


Funo Funo scanf
scanf ("formatos", &var1, &var2,...) Exemplos:

int i, j; %d float x; %f char c; %lf char* nome; %c scanf("%d", &i); %s scanf("%d %f", &j, &x); scanf("%c", &c); scanf("%s" nome) scanf("%s", nome);

inteiro float double char palavra

Linguagem de Programao C Entrada e Sada


Funo Funo scanf
#include <stdio.h> main() { double n1, n2, n3, media; scanf ("%lf %lf %lf",&n1, &n2, &n3); scanf ("%lf",&n1); scanf ("%lf",&n2); scanf ("%lf",&n3); system("PAUSE"); }

Real: n1, n2, n3, media

ler n1, n2, n3 ler n1 ler n2 ler n3

Linguagem de Programao C Entrada e Sada


Funo printf printf ("formatos", var1, var2,...)
Exemplos:

int i, j; float x; char c; char* nome; printf("%d", i); printf("%d, %f", j, x); printf("%c", c); printf("%s" nome); printf("%s",

%d %f %lf %c %s

inteiro float double char palavra

Linguagem de Programao C Entrada e Sada


Funo printf
#include <stdio.h> main() { double n1, n2, n3, media; scanf ( ("%lf %lf %lf",&n1, &n2, &n3); ) media=(n1+n2+n3)/3; printf (%lf,media); system("PAUSE"); y ( ); }

Real: n1, n2, n3, media ler n1, n2, n3 media=(n1+n2+n3)/3 exibir media

Linguagem de Programao C Operadores Matemticos

Linguagem de Programao C Operadores Matemticos


#include <stdio.h> main() { double n1, n2, n3, media;

Real: n1, n2, n3, media

ler n1, n2, n3 media=(n1+n2+n3)/3

scanf ("%lf %lf %lf",&n1, &n2, &n3); media=(n1+n2+n3)/3;

system("PAUSE"); }

Linguagem de Programao C
Praticar!
Exemplo Exemplo-2 2.c c

#include <stdio.h> main() { double n1, n2, n3, media; printf("Digite i tf("Di it 3 notas: t ") "); scanf ("%lf %lf %lf",&n1, &n2, &n3); media=(n1+n2+n3)/3; printf ("A mdia %0.2lf",media); system("PAUSE"); y ( ); }

Linguagem de Programao C
Operadores de Atribuio

Linguagem de Programao C
Funes F Matemticas M t ti
#include <math.h>

Linguagem de Programao C
Operadores Relacionais

As expresses relacionais em C retornam um nmero negativo: 1 se verdadeiro e; 0 se falso.

Linguagem de Programao C
Operadores Lgicos (a)
&& (E lgico): retorna verdadeiro se ambos os operandos so verdadeiros e falso nos demais casos. Exemplo: if( a>2 && b<3). || (OU lgico): retorna verdadeiro se um ou ambos os operandos d so verdadeiros d d i ef falso l se ambos b so f falsos. l Exemplo: if( a>1 || b<2). ! (NO lgico): usada com apenas um operando. Retorna verdadeiro se o operando falso e vice-versa. Exemplo: if( !var ).

Linguagem de Programao C
Operadores Lgicos (b)

Linguagem de Programao C
Estrutura condicional simples Comando Comando if if (a<menor)
if (condio) comando;

menor=a;

if (a<menor) { if (condio) { menor=a; comando1; printf (%d, menor); comando2; } comando3; } em pseudo-cdigo: se (a<menor) (a menor) ento menor=a; menor a;

Linguagem de Programao C
Estrutura condicional composta
Comando if...else
if (condio) comando; else comando; if (condio) { comando1; comando2; } else { comando3; comando4; }
Executa o comando se a condio for qualquer coisa diferente de zero!

if (peso= =peso_ideal) printf p t ( (Voc oc est e em forma!); o a ); else printf (Necessrio fazer dieta!);

em pseudo-cdigo: se (peso= =peso_ideal) entao exibir Voc Voc est em forma! forma! senao exibir Necessrio fazer dieta!

Linguagem de Programao C
Estrutura de repetio
Comando for
for (var=valor inicial; condio; incremento) comando; for (var=valor inicial; condio; incremento) { comando1; Exemplo: for (cont=3; cont<=11; cont++) comando2 printf (%d,cont); comando3; }
Pseudo-cdigo: Para CONT = 3 at 11 repetir Mostrar CONT

Linguagem de Programao C
Estrutura de repetio
Comando while
while (condio) comando; while (condio) { comando1; comando2 comando3; }
Exemplo: while (N != 0) { scanf ( ("%d",&N); % , ); if (N > MAIOR) MAIOR = N; }

Pseudo-cdigo: MAIOR = 0 N=1 Enquanto (N <> 0) repetir Ler N Se (N > MAIOR) ento MAIOR = N Mostrar MAIOR

Linguagem de Programao C
Estrutura de repetio Comando Comando do...while do while
do { comando } while (condio); do { comando1; comando2 comando3; } while ( (condio); );
Exemplo:

cont 0; cont=0; do { cont = cont + 1; printf("%d\n",cont); } while hil ( (cont t < 10) 10);
Em pseudo-cdigo: CONTADOR = 0 Repetir CONTADOR = CONTADOR + 1 exibir CONTADOR q CONTADOR < 10 enquanto

Linguagem de Programao C
Vetores (array)
Trata-se de automatizar a declarao de um grande nmero de dados de um mesmo tipo simples. As variveis assim declaradas se acessam atravs de um ndice de tipo int.

Declarao: int v[100];


primeira posio =0; ltima posio=99;

Atribuio: v [9] = 87; Acessar um valor: a = v[9];

Linguagem de Programao C
Vetores (array) int int v[10];
0 1 2 3 4 5 6 7 8 9

V[5]=10; printf (%d,V[5]);


10

Linguagem de Programao C
Vetores (array) exemplo. Calcular a mdia da nota d 5 alunos de l e verificar ifi quantos conseguiram nota acima da mdia.
#include <stdio.h> main() { int i, contA=0; double soma=0, media; double v[5]; f (i=0;i<5;i++) for (i 0 i<5 i ) { scanf ("%lf", &v[i]); soma = soma + v[i]; } media = soma/i; for (i=0;i<5;i++) { if (v[i]>media) contA=contA+1; } printf ("%lf %d\n", media, contA); system("PAUSE"); }

Linguagem de Programao C
Strings
No existe um tipo String em C. C Strings em C so uma array do tipo char que termina com \0. Para literais String, o prprio compilador coloca \0.
#include <stdio.h> main() { char re[] = "lagarto"; printf ("%s", re); system("pause"); }

Linguagem de Programao C
Para ler uma String Comando Comando gets
#include <stdio.h> main(){ char re [80]; printf ("Digite o seu nome: "); gets(re); printf ("Oi ( Oi %s\n %s\n", re); system("pause"); }

Linguagem de Programao C
Para comparar duas strings
strcmp (s1, s2); strcmp retorna 0 se as duas strings so iguais.

Precisa do #include <string.h> #include <stdio.h> #include <string.h> main( i ( ){ char re[80]; printf ("Digite a senha: "); scanf ( ("%s", , &re); ); if (strcmp(re,"laranja")==0) { printf ("Senha correta\n"); } else { printf ("Senha invalida\n"); } system("pause"); y ( ) }

Pode utilizar scanf no lugar do gets, s que o scanf no l espaos em branco branco. Se o usurio digitar: >Alexandre Costa e Silva o scanf vai pegar apenas Alexandre. O gets pega tudo.

Linguagem de Programao C
Para saber o tamanho de uma string int int size = strlen(str);
Retorna um valor inteiro com o nmero de caracteres da String.

Precisa do #include <string.h> #include <stdio.h> #include <string.h> main(){ char re[80]; printf ("Digite a palavra: "); scanf ("%s", &re); int size=strlen(re); printf ("Esta palavra tem %d caracteres.\n", size); system("pause"); }

Linguagem de Programao C
Para copiar o contedo de uma string para outra strcpy(para, strcpy(para, de);
Precisa do #include <string.h>

#include <stdio.h> #i l d <string.h> #include i h main() { char str[80]; strcpy (str, "Alo"); printf ( ("%s" %s , str); system("pause"); }

Linguagem de Programao C
Funes
So estruturas q que p permitem ao p programador g separar p o cdigo do seu programa em blocos. Uma funo tem a seguinte forma :
tipo_de_retorno nome_da_funcao (parmetros){ /*corpo da funo */ }

Linguagem de Programao C
Funes que no retornam valor
#include <stdio.h> void ehPar (int x){ if (x % 2) { printf ("O numero nao eh par!\n"); } else { printf ("O numero eh par!\n"); } } int main(){ [ ]; char re[80]; ehPar (3); system("pause"); return (0); }

Linguagem de Programao C
Funes que retornam valor
#include <stdio.h> int ehPar (int x){ int z = 0; /* o operador % retorna o resultado da diviso por 2 */ if (x % 2) return 1; } int main(){ char re[80]; int i = ehPar (3); if (i!=0){ printf ( p ("O numero eh p par!"); ); } system("pause"); return (0); }

Linguagem de Programao C
Ponteiros
Ponteiros, como o prprio nome diz, um tipo de varivel que aponta para outra (de um tipo qualquer). Na verdade um ponteiro guarda o endereo de memria (local onde se encontra na memria) de uma varivel.

Linguagem de Programao C
Ponteiros
Para declarar um ponteiro temos a seguinte forma geral:
tipo_do_ponteiro *nome_da_varivel;
o asterisco (*) que faz o compilador saber que a varivel no vai guardar um valor mas sim um endereo para aquele tipo especificado.

Exemplo: int *TOC2; /* declara um ponteiro para um inteiro (16bits) */

Linguagem de Programao C
Ponteiros
int teste=20; i *p; int * p=&teste;
p ir armazenar o endereo de memria (0) da varivel teste (20). Ou seja, p no armazena o valor 20, mas sim o endereo (0) da varivel teste. como chegar ao valor 20 usando a varivel p?

0 1 2 3 4 5 6 7 8 9

20

int teste=20; int *p; p=&teste; printf("%d\n" printf( %d\n ,*p); p);

Linguagem de Programao C
Ponteiros

Exemplo 1:
char algo[5] g [ ] = { 5, , 4, , 3, , 2, , 1 }; char *c; c=&algo[2]; c &algo[2];
Colocamos em c o endereo do terceiro elemento de algo: c[0]=3, c[1]=2 e c[2]=1. Se tivssemos feito c=&algo[3], ento: c[0]=2 [0] 2 e c[1]=1. [1] 1

Linguagem de Programao C
`

Ponteiros Exemplo 2:
int vet_notas[50]; int *pont pont_notas; notas; pont_notas=vet_notas;
Para imprimir a primeira e a dcima nota de nosso vetor, t temos d duas opes: print ("A primeira nota : %d", vet_notas[0]); print ("A primeira nota : %d", *pont_notas); p print ("A dcima nota : %d", vet_notas[9]); ( _ [ ]) print ("A dcima nota : %d", *(pont_notas+9));

Linguagem de Programao C

Ponteiros Exemplo Exemplo 3:


Consideremos o trecho de cdigo abaixo:
char linha[80], *p; *p1; p = &linha[0]; p1 1 = li linha; h /* p1 1 e p possuem o mesmo endereo, d i., */ (p p ) if (p==p1) puts(iguais!); /* apontam para o 1 elemento da matriz! */

Linguagem de Programao C

Equivalncia entre vetores e ponteiros


vet_notas[0]==*(pont_notas); t t [0] *( t t ) vet_notas[1]==*(pont_notas+1); vet_notas[2]==*(pont_notas+2);

Linguagem de Programao C
. Inverter os elementos de uma string, usando ponteiros. Soluo: Pela maneira convencional teramos: main() () { char str[80]; int i; printf(Digite uma palavra: ); gets(str); for (i=strlen(str)-1;i>=0;i--) printf(%c,str[i]); } Resolvendo com ponteiro: com ponteiros teramos: main() { char str[80],*p; int i; printf(Digite uma palavra: ); gets(str); p = str; for(i = strlen(str) - 1;i>=0;i--) printf(%c,*(p+i)); }

Anexos

Anexo 1- Todos os tipos de dados definidos no padro ANSI [SCHILDT, Herbert. C Completo e Total, 3 Edio, Revista e Atualizada. So Paulo, Makron Books 1996.] Books. 1996 ]

Retornar

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