Linguagem C 01 Primeiros Passos

9,944 views
9,745 views

Published on

Published in: Technology
1 Comment
7 Likes
Statistics
Notes
No Downloads
Views
Total views
9,944
On SlideShare
0
From Embeds
0
Number of Embeds
612
Actions
Shares
0
Downloads
519
Comments
1
Likes
7
Embeds 0
No embeds

No notes for slide

Linguagem C 01 Primeiros Passos

  1. 1. Linguagem C <ul><ul><li>Regis Pires Magalhães </li></ul></ul>Introdução e Primeiros Passos
  2. 2. Histórico <ul><li>Surgiu na década de 1970 nos laboratórios Bell. </li></ul><ul><li>Dennis Richie e Brian Kerninghan implementaram C usando um DEC PDP-11 rodando o SO UNIX. </li></ul><ul><li>Derivado da linguagem B, criada por Ken Thompson. </li></ul><ul><ul><li>B deriva da linguagem BCPL, criada por Martin Richards. </li></ul></ul><ul><li>Nos anos 1980 iniciou-se a criação de um padrão chamado C ANSI (American National Standardization Institute). </li></ul>
  3. 3. Características <ul><li>Linguagem de propósito genérico; </li></ul><ul><ul><li>Usada para escrever processadores de texto, planilhas, sistemas operacionais, programas de comunicação, programas para automação industrial, SGBDs, navegadores e servidores Web, etc. </li></ul></ul><ul><li>Possui características de alto e de baixo nível; </li></ul><ul><li>Excelente performance; </li></ul><ul><li>Muito popular; </li></ul><ul><li>Sintaxe de C serve de base para muitas outras linguagens. </li></ul>
  4. 4. Características <ul><li>Deu origem a outras linguagens de programação, entre elas C++, Java, C#, PHP, Ruby, Python, etc. </li></ul><ul><li>Muito usada no desenvolvimento de: </li></ul><ul><ul><li>Compiladores, interpretadores, editores de texto, banco de dados, computação gráfica, manipulação e processamento de imagens, controle de processos, … </li></ul></ul>
  5. 5. Características <ul><li>Portabilidade </li></ul><ul><li>Geração de códigos executáveis compactos e rápidos </li></ul><ul><li>Interação com o sistema operacional </li></ul><ul><li>Facilidade de uso </li></ul><ul><li>Linguagem estruturada </li></ul><ul><li>Confiabilidade </li></ul><ul><li>Simplicidade </li></ul><ul><li>Case sensitive </li></ul><ul><ul><li>Maiúsculas e minúsculas fazem diferença. </li></ul></ul>
  6. 6. Geração de Executável <ul><li>Editor (módulo fonte em C)‏ </li></ul><ul><li>Pré‐processador (novo fonte expandido)‏ </li></ul><ul><li>Compilador (arquivo objeto)‏ </li></ul><ul><li>Lincador (executável)‏ </li></ul>
  7. 7. Exemplo 1 #include <stdio.h> /* Um Primeiro Programa */ main () { printf ( &quot;Ola! Eu estou vivo! &quot; ); system( &quot;pause&quot; ); }
  8. 8. Exemplo 2 #include <stdio.h> main() { int Dias; /* * Declaracao de * Variaveis */ float Anos; printf( &quot;Entre com o numero de dias: &quot; ); /* Entrada de Dados */ scanf( &quot;%d&quot; , &Dias); Anos=Dias/365.25; // Conversao Dias->Anos printf( &quot; %d dias equivalem a %f anos. &quot; , Dias, Anos); system( &quot;pause&quot; ); }
  9. 9. Exemplo 3 #include <stdio.h> main() { int x; printf( &quot;Digite um numero&quot; ); scanf( &quot;%d&quot; ,&x); printf( &quot;%d &quot; ,x); system( &quot;pause&quot; ); }
  10. 10. Exemplo 4 #include <stdio.h> main() { int x; printf( &quot;Digite um numero&quot; ); scanf( &quot;%d&quot; ,&x); printf( &quot;O dobro e %d &quot; , 2 * x); system( &quot;pause&quot; ); }
  11. 11. Introdução às funções <ul><li>Uma função é um bloco de código de programa que pode ser usado diversas vezes em sua execução. </li></ul><ul><li>O uso de funções permite que o programa fique mais legível, mais bem estruturado. </li></ul><ul><li>Um programa em C consiste, no fundo, de várias funções colocadas juntas. </li></ul>
  12. 12. Introdução às funções <ul><li>Argumentos </li></ul><ul><ul><li>Argumentos são as entradas que a função recebe. É através dos argumentos que passamos parâmetros para a função. </li></ul></ul><ul><ul><li>As funções printf() e scanf() são funções que recebem argumentos. </li></ul></ul>
  13. 13. Forma geral da função tipo_de_retorno nome_da_função(lista_de_argumentos) { código_da_função }
  14. 14. Exemplo de Função #include <stdio.h> /* Funcao simples: so imprime Ola! */ mensagem() { printf( &quot;Ola! &quot; ); } main() { mensagem(); printf( &quot;Eu estou vivo! &quot; ); system( &quot;pause&quot; ); }
  15. 15. Exemplo de função #include <stdio.h> /* Calcula o quadrado de x */ int square( int x) { return x * x; } main() { int num; printf( &quot;Entre com um numero: &quot; ); scanf( &quot;%d&quot; , &num); printf( &quot; O quadrado e %d &quot; , square(num)); system( &quot;pause&quot; ); }
  16. 16. Exemplo de função #include <stdio.h> int prod( int x, int y) { return (x*y); } main() { int saida; saida=prod(12, 7); printf( &quot;A saida e: %d &quot; , saida); system( &quot;pause&quot; ); }
  17. 17. Exemplo de função #include <stdio.h> float prod( float x, float y) { return (x*y); } main() { float saida; saida=prod(45.2, 0.0067); printf( &quot;A saida e: %f &quot; , saida); system( &quot;pause&quot; ); }
  18. 18. Exercício <ul><li>Escreva uma função para receber dois números e, depois, exibir a sua soma. </li></ul>
  19. 19. Solução #include <stdio.h> main() { float n1, n2; printf( &quot;Digite um numero: &quot; ); scanf( &quot;%f&quot; , &n1); printf( &quot;Digite outro numero: &quot; ); scanf( &quot;%f&quot; , &n2); printf( &quot;A soma e: %f &quot; , (n1 + n2)); system( &quot;pause&quot; ); }
  20. 20. Entradas e Saídas <ul><li>Caracteres </li></ul><ul><ul><li>Tipo char. </li></ul></ul><ul><ul><li>Ocupa 8 bits. </li></ul></ul>#include <stdio.h> main() { char Ch; Ch= 'D' ; printf( &quot;%c&quot; , Ch); printf( &quot;%d&quot; , Ch); // Imprime como inteiro system( &quot;pause&quot; ); }
  21. 21. Entradas e Saídas <ul><li>Para obter o caractere pressionado: </li></ul><ul><ul><li>getche() </li></ul></ul><ul><ul><ul><li>Imprime o caractere na tela antes de retorná-lo. </li></ul></ul></ul><ul><ul><li>getch() </li></ul></ul><ul><ul><ul><li>Apenas retorna o caratere pressionado sem imprimi-lo na tela. </li></ul></ul></ul><ul><li>Essas funçoes são encontradas no arquivo conio.h que somente está disponível para Windows. Não é padrão ANSI. </li></ul>
  22. 22. getch()‏ #include <stdio.h> #include <conio.h> main() { printf ( &quot;Tecle algo...&quot; ); char ch=getch(); printf ( &quot;Voce pressionou a tecla %c &quot; , ch); system( &quot;pause&quot; ); }
  23. 23. Equivalente ANSI <ul><li>Diferenças: </li></ul><ul><ul><li>Requer o pressionamento da tecla <ENTER> após a entrada de teclado. </li></ul></ul>#include <stdio.h> main() { char ch; printf ( &quot;Tecle algo...&quot; ); scanf ( &quot;%c&quot; , &ch); printf ( &quot;Voce pressionou a tecla %c &quot; , ch); system( &quot;pause&quot; ); }
  24. 24. printf() e scanf()‏ <ul><li>Forma geral da função printf() : </li></ul><ul><ul><li>printf (string_de_controle,lista_de_argumentos); </li></ul></ul><ul><li>Forma geral da função scanf() : </li></ul><ul><ul><li>scanf (string_de_controle,lista-de-argumentos); </li></ul></ul>
  25. 25. Códigos de controle <ul><li>Código Significado </li></ul><ul><li>%d Inteiro </li></ul><ul><li>%f Float </li></ul><ul><li>%c Caractere </li></ul><ul><li>%s String </li></ul><ul><li>%% Coloca na tela um % </li></ul>
  26. 26. Formatação Numérica <ul><li>%<numero>d </li></ul><ul><ul><li>Escreve um inteiro na tela, preenchendo com espaços à esquerda para que ele ocupe pelo menos <numero> casas na tela. </li></ul></ul><ul><ul><li>printf(&quot;%4d&quot;, 10); </li></ul></ul><ul><ul><li>Exibe: </li></ul></ul><ul><ul><ul><li><espaco><espaco>10 </li></ul></ul></ul>
  27. 27. Formatação Numérica <ul><li>%0<numero>d </li></ul><ul><ul><li>Escreve um inteiro na tela, preenchendo com zeros à esquerda para que ele ocupe pelo menos <numero> casas na tela. </li></ul></ul><ul><ul><li>printf(&quot;%04d&quot;, 10); </li></ul></ul><ul><ul><li>Exibe: </li></ul></ul><ul><ul><ul><li>0010 </li></ul></ul></ul>
  28. 28. Formatação Numérica <ul><li>%<numero1>.0<numero2>d </li></ul><ul><ul><li>Escreve um inteiro na tela, preenchendo com espaços à esquerda para que ele ocupe pelo menos <numero1> casas na tela e com zeros para que ele possua pelo menos comprimento <numero2>. </li></ul></ul><ul><ul><li>printf(&quot;%6.04d&quot;, 10); </li></ul></ul><ul><ul><li>Exibe: </li></ul></ul><ul><ul><ul><li><espaço><espaço>0010 </li></ul></ul></ul>
  29. 29. Formatação Numérica <ul><li>%f </li></ul><ul><ul><li>Escreve um ponto flutuante na tela, sem formatação. </li></ul></ul><ul><ul><li>printf(&quot;%f&quot;, 10.0); </li></ul></ul><ul><ul><li>Exibe: </li></ul></ul><ul><ul><ul><li>10.000000 </li></ul></ul></ul>
  30. 30. Formatação Numérica <ul><li>%e </li></ul><ul><ul><li>Escreve um ponto flutuante na tela em notação científica. </li></ul></ul><ul><ul><li>printf(&quot;%e&quot;, 10.02545); </li></ul></ul><ul><ul><li>Exibe: </li></ul></ul><ul><ul><ul><li>1.002545e+01 </li></ul></ul></ul>
  31. 31. Formatação Numérica <ul><li>%<tamanho>.<decimais>f </li></ul><ul><ul><li>Escreve um ponto flutuante na tela, com tamanho <tamanho> e <decimais> casas decimais. </li></ul></ul><ul><ul><ul><li>O ponto também conta no tamanho. </li></ul></ul></ul><ul><ul><li>printf(&quot;%6.2f&quot;, 10.0); </li></ul></ul><ul><ul><li>Exibe: </li></ul></ul><ul><ul><ul><li><espaço>10.00 </li></ul></ul></ul>
  32. 32. Operadores <ul><li>Atribuição (=)‏ </li></ul><ul><li>Aritméticos </li></ul><ul><ul><li>* e / </li></ul></ul><ul><ul><li>% </li></ul></ul><ul><ul><li>+ e - </li></ul></ul>
  33. 33. Operadores Relacionais <ul><li>== igual </li></ul><ul><li>!= diferente de </li></ul><ul><li>> maior que </li></ul><ul><li>< menor que </li></ul><ul><li>>= maior ou igual </li></ul><ul><li><= menor ou igual </li></ul>
  34. 34. Operadores Lógicos <ul><li>&& (e)‏ </li></ul><ul><li>|| (ou)‏ </li></ul><ul><li>! (não)‏ </li></ul>
  35. 35. Operador Ternário <ul><li>Operador que usa três argumentos: </li></ul><ul><ul><ul><li>expr ? valor1 : valor2 </li></ul></ul></ul><ul><ul><ul><li>Se expr avaliar for verdadeira , valor1 será o resultado da expressão. </li></ul></ul></ul><ul><ul><ul><li>Se expr for falsa , valor2 será o resultado da expressão. </li></ul></ul></ul>int x , y, maior ; ... maior = x > y ? x : y; ...
  36. 36. Operador Ternário #include <stdio.h> main() { int n1, n2; printf ( &quot;Digite um numero: &quot; ); scanf ( &quot;%d&quot; , &n1); printf ( &quot;Digite outro numero: &quot; ); scanf ( &quot;%d&quot; , &n2); printf ( &quot;O maior e: %d &quot; , n1 > n2 ? n1 : n2 ; system( &quot;pause&quot; ); }
  37. 37. Expressões lógicas <ul><li>!(a == b) é́ equivalente a a != b </li></ul><ul><li>!(a != b) é́ equivalente a a == b </li></ul><ul><li>!(a > b) é́ equivalente a a <= b </li></ul><ul><li>!(a < b) é́ equivalente a a >= b </li></ul><ul><li>!(a >= b) é́ equivalente a a < b </li></ul><ul><li>!(a <= b) é́ equivalente a a > b </li></ul><ul><li>!a && !b é equivalente a !(a || b)‏ </li></ul><ul><li>!a || !b é equivalente a !(a && b)‏ </li></ul>
  38. 38. Expressões <ul><li>O resultado de uma expressão lógica ou relacional é: </li></ul><ul><ul><li>0 (falso)‏ </li></ul></ul><ul><ul><li>1 ou qualquer outro número diferente de zero (verdadeiro)‏ </li></ul></ul><ul><li>Para facilitar: </li></ul><ul><ul><li>NÃ 0 </li></ul></ul><ul><ul><li>S 1 M </li></ul></ul>
  39. 39. Operadores de incremento e decremento <ul><li>Incremento (++)‏ </li></ul><ul><li>Decremento (--)‏ </li></ul><ul><li>a++; </li></ul><ul><ul><li>Incrementa o valor da variável a em uma unidade. </li></ul></ul><ul><li>A posição do operador de incremento e decremento determina a ordem de execução do que está em seu derredor. </li></ul>
  40. 40. Operadores de incremento e decremento #include <stdio.h> main() { int a = 10; printf ( &quot;%d&quot; , ++a); system( &quot;pause&quot; ); } #include <stdio.h> main() { int a = 10; printf ( &quot;%d&quot; , a++); system( &quot;pause&quot; ); }
  41. 41. Atribuições Simplificadas <ul><li>Comando Exemplo Corresponde a: </li></ul><ul><li>+= a += 2 a = a + 2; </li></ul><ul><li>-= a -= 2 a = a - 2; </li></ul><ul><li>∗ = a *= 2; a = a * 2; </li></ul><ul><li>/= a /= 2; a = a / 2; </li></ul><ul><li>%= a %= 2; a = a % 2; </li></ul>
  42. 42. A função sizeof()‏ <ul><li>A função sizeof(algo) retorna o tamanho, em bytes, de algo que pode ser um determinado tipo, uma variável ou um valor constante. </li></ul><ul><ul><li>printf (&quot;%d&quot;, sizeof(int)); </li></ul></ul><ul><ul><ul><li>exibe 4 na tela </li></ul></ul></ul>
  43. 43. A função sizeof()‏ #include <stdio.h> main() { printf ( &quot;Tamanho de um int: %d bytes &quot; , sizeof ( int )); printf ( &quot;Tamanho de 10.25: %d bytes &quot; , sizeof (10.25)); char str[20] = &quot;Maria&quot; ; printf ( &quot;Tamanho de str: %d bytes &quot; , sizeof (str)); system( &quot;pause&quot; ); }
  44. 44. O endereço de uma variável <ul><li>Toda variável tem um endereço de memória associado a ela. </li></ul><ul><li>O operador & (address-of) retorna o endereço de uma determinada variável: </li></ul><ul><ul><li>printf(&quot;%d&quot;, &valor); </li></ul></ul><ul><ul><li>imprime o endereço da variável valor. </li></ul></ul>

×