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