treinamento - obi linguagem c wladimir araújo tavares

Post on 07-Apr-2016

244 Views

Category:

Documents

13 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Treinamento - OBILinguagem C

Wladimir Araújo Tavares

Histórico:

1970: Denis Ritchie desenha uma linguagem apartir do BCPL nos laboratórios da BellTelephones, Inc. Chama a linguagem de B. 1978:  Brian Kerningham junta-se a Ritchie paraaprimorar a linguagem. A nova versão chama-seC. Pelas suas características de portabilidade eestruturação já se torna popular entre osprogramadores.

Continuação...

1980: A linguagem é padronizada peloAmerican National Standard Institute: surge o ANSI C.

1992: O C se torna ponto de concordância entreteóricos do desenvolvimento da teoria deObject  Oriented Programming (programaçãoorientada a objetos): surge o C++.

Características : • Compilada• Case Sensitive• Médio Nível• Sistema de tipo fraca• Permite o controle total• Estruturada

//Isso eh um comentário/*Os comentários são ignorados pelo compilador*/#include <stdio.h>/* Diz ao compilador que ele deve incluir o arquivo stdio.hstd=standard io = Input/Output*/#include <stdlib.h>/*Diz ao compilador que ele deve incluir o arquivo stdlib.h std=standard lib=library*/int main(){ puts("Hello World!!!!");//Escreve na tela puts("Uma funcao de saida"); system("PAUSE"); return 0;}

Observações:

main ( ) primeira função a ser executada

{ início da função } fim da função puts(string) escreve a string na tela

Caracteres de Controle:• \n nova linha• \r “enter”• \t tabulação (tab)• \b retrocesso• \“ aspas• \ \ barra• \a beep• \0 Nulo

#include <stdio.h>#include <stdlib.h>int main(){

printf("\tEscreva issa\bo entre \"Hello\"\n\a");

system("PAUSE");}

Código de Formatação:

• %c caracter• %d decimal• %f ponto flutuante• %s cadeia de caracteres(string)

#include <stdio.h>#include <stdlib.h>int main(){ printf ("Caracteres: %c %c \n", 'a', 65); printf ("Decimals: %d \n", 1977); printf ("Antecedido com brancos: %10d \n", 1977);

printf ("Antecedido com zeros : %010d \n", 1977);

printf (“Reais: %.2f %.4f\n", 3.1416, 3.1416);

printf ("%s \n", "Uma palavra"); system("PAUSE");}

Variáveis:

Espaço de memória de um certo tipo dedado associado a um nome para referenciarseu conteúdo.

#include <stdio.h>#include <stdlib.h>

int main(){ int idade; idade = 12;printf (" A minha idade é : %d", idade);

system("PAUSE"); return 0;}

Tipos Básicos:Tipo Bytes Intervalochar 1 -128 a 127

int 4 -32.768 a 32.767

float 4 3.4e-38 a 3.4e+38

double 8 1.7e-308 a 1.7e+308

#include <stdio.h>#include <stdlib.h>int main(){ char c; int x; float f; double d; printf("O tamanho do caracter eh %d\n",sizeof(c)); printf("O tamanho do inteiro eh %d\n",sizeof(x)); printf("O tamanho do ponto flutuante %d\n",sizeof(f)); printf("O tamanho do double eh %d\n",sizeof(d)); system("PAUSE");}

Nome de variáveis:

Não pode começar com números.

Devem começar com letra ou sublinhados.

Não pode-se definir o nome das variáveiscom o mesmo nome das palavras chaves.

Não possuem acentuação e nem cedilha.

Palavras Chaves

auto   double  int   struct  break   else   long   switch  case   enum   register typedef  char   extern  return   union  const   float   short   unsigned  continue  for   signed   void  default   goto   sizeof   volatile  do   if   static   while  

Comando if

if <condição> <comando> | <lista_de_comandos>

<condição>São expressões que admitem um valorVerdade.

#include <stdio.h>#include <stdlib.h>int main(){ int idade = 12; if ( idade > 10 ) printf("Idade maior que 10\n"); system("PAUSE");}

OPERADORES ARITMÉTICOS

• + Soma• - Subtração• * Multiplicação• / Divisão• % RestoEx:7 % 2 = 18 % 3 = 2

Exercícios: Qual é o valor de x : x = 2 * 3 + 3 ; x = 2*( 3 + 3); x = 3 + 4 * 2; x = 4 % 2 + 2; x = 4 %(2 + 2); x = 2 – 2 – 3; x = 4 / 2 / 2 ; X = 4 * 2 * 2;

OPERADORES DE INCREMENTO E DECREMENTO

• ++ incrementa a variável• -- decrementa a variável

Ex:i++; i = i + 1;i--; i = i - 1;

Exercício:

x = 22; y = x++; x = ? y = ? x = 22; y = ++x; x = ? y = ?

OPERADORES RELACIONAIS

• > maior• >= maior ou igual• < menor• <= menor ou igual• == igualdade• != diferença

OPERADORES LÓGICOS

&& e || or ! não Ex: (10 > 5) V ( (10 > 5) && ( 2 > 3 ) ) F ( (10 > 5) || ( 2 > 3 ) ) V ( (10 > 5) && ! ( 2 > 3 ) ) V

#include <stdio.h>#include <stdlib.h>int main(){ char nome[ 20 ]; int idade; printf("Entre com o seu nome:"); scanf("%s",nome); printf("Entre com a sua idade:"); scanf("%d",&idade); printf("Boa Noite , Sr. %s\n",nome); if(idade <= 18 ) printf("Não vai para a escola!!!\n"); if( (idade > 18) && (idade <= 65 ) ) printf("Não vai trabalhar hj!!!\n"); if( idade > 65 ) printf("Como está a aposentadoria"); system("PAUSE"); return 0;}

If-else

If <condição> <comando> | <lista_de_comandos>else <comando> | <lista_de_comandos>

#include <stdio.h>#include <stdlib.h>int main(){ char nome[ 20 ]; int idade; printf("Entre com o seu nome:"); scanf("%s",nome); printf("Entre com a sua idade:"); scanf("%d",&idade); printf("Boa Noite , Sr. %s\n",nome); if(idade <= 18 ) printf("Não vai para a escola!!!\n"); else{ if ( idade <= 65 ) printf("Não vai trabalhar hj!!!\n"); else printf("Como está a aposentadoria"); } system("PAUSE"); return 0;}

#include <stdio.h>#include <stdlib.h>int main(){ int a,b,c; printf("Entre com tres numeros:"); scanf("%d %d %d",&a,&b,&c); if (a > b)

if (a > c)printf("\nO Maior é %d\n",a);

else printf("\nO Maior é %d\n",c);

else if (b > c)

printf("\nO Maior é %d\n",b); else

printf("\nO Maior é %d\n",c); system("PAUSE");}

Comando for

for ( <início> ; <condição> ; <incremento> ) <comando>| <lista_comando>

Ex:for(i=0;i < 10 ;i++) printf(“%d”,i);

#include <stdio.h>#include <stdlib.h>int main(){ int i; //Imprime os pares de 0 ate 10 for(i =0;i<=10;i=i+2){ printf("%d\n",i); } //Imprime a tabuada de 2 for(i=0;i<=10;i++){ printf("2 x %2d = %d\n",i,2*i); } system("PAUSE");}

#include <stdio.h>#include <stdlib.h>//Testa se eh primoint main(){ int n,i,ehprimo; printf("Entre com um n:"); scanf("%d",&n); ehprimo = 1; for(i=2;i<n;i++) if(n%i==0){ ehprimo = 0; break; } if( ehprimo ) printf("%d eh primo\n",n); else printf("%d nao eh primo\n",n); system("PAUSE");}

#include <stdio.h>#include <stdlib.h>

int main(){ int n,i,ehprimo; printf("Entre com um n:"); scanf("%d",&n); if( n%2==0 ) ehprimo = 0; else{ ehprimo = 1; for(i=3;i<n;i+=2) if(n%i==0){ ehprimo = 0; break; } } if( ehprimo ) printf("%d eh primo\n",n); else printf("%d nao eh primo\n",n); system("PAUSE");}

Comando whilewhile <condição> <comando> | <lista_comandos>

Ex: i = 0;

while( i < 10 ){ printf(“%d\n”,i); i++; }

#include <stdio.h>#include <stdlib.h>

int main(){ int n,soma; printf("Entre com um numero:"); scanf("%d",&n); soma = 0; while( n > 0){ soma = soma + n ; printf("Entre com um numero:"); scanf("%d",&n); } printf("A soma eh %d\n",soma); system("PAUSE");}

#include <stdio.h>#include <stdlib.h>

int main(){ int n,min; printf("Entre com um numero:"); scanf("%d",&n); min = n; while( n >= 0){ if( n < min ) min = n; printf("Entre com um numero:"); scanf("%d",&n); } printf("O menor eh %d\n",min); system("PAUSE");}

Comando do-while

do <comando>| <lista_de_comando>while <condição>;

i = 0;do{ printf(“%d”,i); i++;}while( i < 10 );

#include <stdio.h>#include <stdlib.h>

int main(){ int i; do{ printf("\n\tEscolha uma opção:\n\n"); printf("\t(1)........Masculino\n"); printf("\t(2)........Feminino\n"); printf("Entre com a sua opcao:"); scanf("%d",&i); }while( (i<1)||(i>2)); if(i==1) printf("Vc eh homem\n"); else printf("Vc eh mulher\n"); system("PAUSE");}

Loop Infinito

É um loop ( repetição ) que será executadopara sempre (ou não existe condição deparada ou a condição é sempre verdadeira),a não ser que seja interrompida.

#include <stdio.h>#include <stdlib.h>

int main(){ char c; for(;;){ printf("Vc quer continuar(S\\N)?"); c = getchar(); getchar(); if( c == 'N'){ printf("O programa vai ser interrompido!!"); break; }else{ if(c=='S') printf("Parabens vc quer continuar\n"); else printf("Vc escolheu uma opção inexistente\n"); } }}

#include <stdio.h>#include <stdlib.h>

int main(){ char c; while(1){ printf("Vc quer continuar(S\\N)?"); c = getchar(); getchar(); if( c == 'N'){ printf("O programa vai ser interrompido!!"); break; }else{ if(c=='S') printf("Parabens vc quer continuar\n"); else printf("Vc escolheu uma opção inexistente\n"); } }}

#include <stdio.h>#include <stdlib.h>

int main(){ int b,h,i,j; printf("Entre com a base:"); scanf("%d",&b); printf("Entre com a altura:"); scanf("%d",&h); for(i=1;i<=h;i++){ printf("\t"); if((i==1)||(i==h)) for(j=1;j<=b;j++) printf("*"); else{ printf("*"); for(j=1;j<=b-2;j++) printf(" "); printf("*"); } printf("\n"); } system("PAUSE");}

#include <stdio.h>#include <stdlib.h>

int main(){ int h,i,j; printf("Entre com a altura:"); scanf("%d",&h); for(i=1;i<=h;i++){ for(j=1;j<=h-i;j++) printf(" "); for(j=1;j<=i;j++) printf(" *"); printf("\n"); } system("PAUSE");}

StringUm sequência de caracteres terminado com umcaractere nulo.Podemos acessar cadacaractere através de um índice.

‘J’ ‘O’ ‘A’ ‘O’ \0 ... ...

Nesse caso vamos supor que nome = “JOAO”nome[0] = ‘J’;nome[1] = ‘O’;nome[2] = ‘A’;nome[3]= ‘O’;nome[4]= ‘\0’;

#include <stdio.h>#include <stdlib.h>

int main(){ char nome[20],c; printf("Entre com um o seu nome:"); scanf("%s",nome); printf("O primeiro caracter do meu nome eh %c\n",nome[0]);

nome[0] = 'X'; printf("Meu nome agora eh %s\n",nome); system("PAUSE");}

#include <stdio.h>#include <stdlib.h>

int main(){ char nome[15]; int x; printf("Entre com o seu nome:"); scanf("%s",nome); if((nome[0] >= 'a') && ( nome[0] <= 'z') ){ x = nome[0] - 'a'; nome[0] = 'A' + x; } printf("Seu nome eh %s\n",nome); system("PAUSE");}

#include <stdio.h>#include <stdlib.h>

int main(){ char nome[15]; int i,tamanho; tamanho=0; printf("Entre com o seu nome"); scanf("%s",nome); for(i=0;nome[i]!='\0';i++) tamanho++; printf("O numero de caracteres eh %d\n",tamanho);

system("PAUSE");}

#include <stdio.h>#include <stdlib.h>

int main(){ char nome[15]; int i; printf("Entre com o seu nome"); scanf("%s",nome); for(i=0;nome[i]!='\0';i++){ if((nome[i] >= 'a') && ( nome[i] <= 'z') ){ x = nome[i] - 'a'; nome[i] = 'A' + x; } } printf("Seu nome eh %s\n",nome); system("PAUSE");}

#include <stdio.h>#include <stdlib.h>int main(){ char nome[20]; int d,n,p,i; scanf("%s",nome); scanf("%d",&d); n = 'Z'-'A' + 1; for(i=0;nome[i]!='\0';i++){ if(nome[i]>='A' && nome[i]<='Z'){ p = nome[i] - 'A'; p = ( p + d ) % n + 'A'; nome[i] = p; } } printf("Seu novo nome eh %s\n",nome); system("PAUSE");}

Usando a Math.hÉ a principal biblioteca com funções matemáticas.

função Resultado sin(x) seno cos(x) co-senopow(x,y) x^ysqrt(x) Raiz quadradaabs(x) Módulo | x |ceil(x) Tetofloor(x) piso

#include <stdio.h>#include <stdlib.h>#include <math.h>#define PI 3.1415int main(){ double grau; printf("Entre com o grau:"); scanf("%lf",&grau); printf("seno(%4.2lf)=%4.2lf\n" , grau ,

sin( (grau/180)*PI ) ); printf("Co-seno(%4.2lf)=%4.2lf\n", grau ,

cos( (grau/180)*PI ) ); printf("2^3 = %.0lf\n" , pow(2,3)); printf("A raiz quadrada de 2 = %.4lf\n" , sqrt(2)); printf("O teto de 2.8 eh %.0lf\n", ceil(2.8) ); printf("O piso de 2.8 eh %.0lf\n", floor(2.8) ); system("PAUSE");}

#include <stdio.h>#include <stdlib.h>#include <math.h>#define PI 3.1415int main(){ double r; printf("Entre com o raio:"); scanf("%lf",&r); printf("O comprimento eh %.2lf\n", 2*PI*r); printf("A area eh %.2lf\n", PI*pow(r,2)); system("PAUSE");}

#include <stdio.h>#include <stdlib.h>#include <math.h>

int main(){ double a,b,c; printf("Entre com os catetos:"); scanf("%lf %lf",&b,&c); a = sqrt( pow(b,2) + pow(c,2) ); printf("hipotenusa: %.2lf\n",a); system("PAUSE");}

Desafio:

Fazer um programa que resolva umaequação do 2° grau!!

Manipulação de Strings

• gets• puts• strcpy• strcat• strcmp

gets()

É utilizada para a leitura de dispositivopadrão até que o ENTER seja pressionado. int main(){ char str[80]; gets(str); printf(“%s”,str); }

puts()

Escreve a string passada para ele nodispositivo padrão de saída e coloca \n nofinal. int main(){ char str[80]=“Teste”; puts(str); }

strcpy()

strcpy(destino,origem) Copia a string origem para a string destino.int main(){ char str[80]; strcpy(str,"Wladimir"); printf("%s",str); system("PAUSE");}

strcat() strcat(s1,s2) concatena as duas string. s1 = s1 + s2; int main(){ char str1[80],str2[80]; strcpy(str1,"O campeão eh "); strcpy(str2,“Seu Time"); strcat(str1,str2); printf("%s\n",str1); system("PAUSE");}

strcmp() compara as duas strings. strcmp(s1,s2) <0 , s1 > s2 >0 , s1 < s2 ==0 , s1==s2int main(){ char str1[80],str2[80]; strcpy(str1,"z"); strcpy(str2,"bcd"); if(strcmp(str1,str2)< 0) printf("1\n"); else if( strcmp(str1,str2) > 0 )

printf("2\n"); else printf("igual"); system("PAUSE");}

strlen()Função que retorna o tamanho da string.

int main(){ char str1[80]; scanf(“%s”,str1); printf(“O tamanho de %s eh %d”,str1,strlen(str1));

system("PAUSE");}

Desafio!!

1) Inverter uma string2) Verificar se uma string é um palíndromo.

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char palavra[20],c; int i,t; scanf("%s",palavra); t = strlen(palavra); for(i=0;i<t/2;i++){ c = palavra[i]; palavra[i] = palavra[t-i-1]; palavra[t-i-1] = c; } printf("%s\n",palavra); system("PAUSE");}

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char palavra[20],palindromo[20],c; int i,t; scanf("%s",palavra); strcpy(palindromo,palavra); t = strlen(palavra); for(i=0;i< t/2;i++){ c = palavra[i]; palavra[i] = palavra[t-i-1]; palavra[t-i-1] = c; } if( strcmp(palindromo,palavra)==0) printf("Palindromo\n"); system("PAUSE");}

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char bin[20]; int n,i; scanf("%d",&n); for(i=0;n>0;i++){ bin[i] = '0' + n%2; n = n/2; } bin[i]='\0'; printf("%s\n",bin); system("PAUSE");}

Vetores

Geralmente um identificador estárelacionado somente a uma posição dememória e qualquer referência a ela significa acessarseu conteúdo de um pedaço de memória cujotamanho depende do seu tipo

Com esse tipo de dado podemosassociar um identificador a conjunto deelementos de um mesmo tipo.

//Programa que calcula a média#include <stdio.h>#include <stdlib.h>

int main(){ float n1,n2,n3,n4,media; printf("Entre com a 1 nota"); scanf("%f",&n1); printf("Entre com a 2 nota"); scanf("%f",&n2); printf("Entre com a 3 nota"); scanf("%f",&n3); printf("Entre com a 4 nota"); scanf("%f",&n4); media = ( n1 + n2 + n3 + n4 )/4.0; printf("A media eh %.2f\n",media); system("PAUSE"); }

//Programa que calcula a média#include <stdio.h>#include <stdlib.h>

int main(){ float n[4],media; int i; for(i=0;i<4;i++){ printf("Entre com a %d nota:",i+1); scanf("%f",&n[i]); } media = ( n[0] + n[1] + n[2] + n[3] )/4.0 printf("A media eh %.2f\n",media); system("PAUSE"); }

#include <stdio.h>#include <stdlib.h>

int main(){ int v[10],maior,menor;

for(i=0;i<10;i++){ scanf("%d",&v[i]); } maior = v[0]; menor = v[0]; for(i=1;i<10;i++){ if( v[i] > maior ) maior = v[i]; if( v[i] < menor ) menor = v[i]; } system("PAUSE"); }

#include <stdio.h>#include <stdlib.h>int main(){ int v[10],soma,n,i; float media; soma = 0 ; for(i=0;i<10;i++){ scanf("%d",&v[i]); soma += v[i]; } media = soma/10.; n = 0; for(i=0;i<10;i++){ if(v[i] > media ) n++; } printf("\n%f %d\n",media , n); system("PAUSE"); }

#include <stdio.h>#include <stdlib.h>int main(){ int v[100],n,i; char achou; scanf("%d",&n); if(n<=100){ for(i=0;i<n;i++){ scanf("%d",&v[i]); } scanf("%d",&x); achou = 0; for(i=0;i<n;i++){ if(x==v[i]){ achou = 1; break; } } } system("PAUSE"); }

Matrizes multidimensional

Sintaxe:tipo nome[tamanho][tamanho]...;Funciona como na matriz de uma dimensão(vetor), mas tem mais de um índice.int v[3][3];

#include <stdio.h>#include <stdlib.h>int main(){ int v[3][3]; int i,j,soma,l,soma_max; for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("v[%d][%d]:",i,j); scanf("%d",&v[i][j]); } } for(i=0;i<3;i++){ soma = 0; for(j=0;j<3;j++) soma += v[i][j]; if( soma > soma_max || i==0){ soma_max = soma; l = i; } } system("PAUSE");}

Funções:

É uma unidade autônoma de código deprograma que é desenhada para cumpriruma tarefa particular.É um subprograma.É um bloco de código que pode ser usadovárias vezes.

Funções sem retorno

Quando uma função não retorna valor paraa função que o ela é declarada como void.

#include <stdio.h>#include <stdlib.h>

void mensagem(){ printf("Essa é uma mensagem\n"); printf("Isso é só um exemplo");}

int main(){ mensagem(); system("PAUSE");}

#include <stdio.h>#include <stdlib.h>#include <string.h>void inverter(){ int i,t; char c; t = strlen(nome); for(i=0;i<t/2;i++){ c = str[i]; nome[i] = nome[t-i-1]; nome[t-i-1]=c; }}int main(){ char nome[20] = "Wladimir"; inverter(nome); printf("Novo nome %s\n",nome); system("PAUSE");}

#include <stdio.h>#include <stdlib.h>#include <string.h>void mostraIdade(int atual,int nasc){ printf("Vc completou ou completara %d anos\n",atual-nasc);

}

int main(){ int anoAtual = 2005, anoNascimento = 1984;

mostraIdade(anoAtual,anoNascimento); system("PAUSE");}

Funções com retorno

Quando uma função retorna um valor para afunção que a chamou.Logo, o tipo de retorno deve ser declarado.

#include <stdio.h>#include <stdlib.h>#include <string.h>int fat(int n){ int i,fat=1; for(i=1;i<=n;i++) fat *=i; return fat;}int main(){ int n; scanf("%d",&n) while( n > 0 ){ printf("O fatorial eh %d",fat(n)); scanf("%d",&n) } system("PAUSE");}

#include <stdio.h>#include <stdlib.h>#include <string.h>int ehprimo(int n){ int i; if(n%2==0 && n!=2 ) return 0; else{ for(i=3;i*i<=n;i+=2) if(n%i==0) return 0; return 1; }}int main(){ int n; scanf("%d",&n); while( n > 0 ){ if( ehprimo(n) ) printf("Primo\n"); else printf("Composto\n"); scanf("%d",&n); } system("PAUSE");}

Parâmetros Formais

Quando uma função utiliza argumentos,então ela deve declarar as variáveisque aceitaram os valores dos argumentos,sendo essas variáveis os parâmetrosformais.

Parâmetros Reais

Quando uma função utiliza argumentos,as variáveis que são passadas comoargumentos para a função são chamadasde parâmetros reais

Variáveis locais

As variáveis que são declaradas dentro deuma função são chamadas de locais.Narealidade toda variável declarada entre umbloco { } podem ser referenciadas apenasdentro deste bloco. Elas existem apenasdurante a execução do bloco de código noqual estão declaradas.

Variáveis Globais

São conhecidas por todo programa e podemser usadas em qualquer parte do código.Permanecem com seu valor durante todaexecução do programa. Deve serdeclarada fora de qualquer função e atémesmo antes da declaração da funçãomain.

Chamada por valor

O valor de um argumento é copiado para oparâmetro formal da função,portanto asalterações no processamento não alteramas variáveis.Os parâmetros formais são variáveis locais.

#include <stdio.h>#include <stdlib.h>

int cont = 12;

void teste(int i){ i++; printf("%d\n",i);}

int main(){ printf("%d\n",cont); teste(cont); printf("%d\n",cont); system("PAUSE");}

top related