Você está na página 1de 44

Linguagem C

Introdução e
Primeiros Passos

Regis Pires Magalhães


regismagalhaes@ufc.br
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).
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.
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, …
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.
Geração de Executável
 Editor (módulo fonte em C)‫‏‬
 Pré‐processador (novo fonte expandido)‫‏‬
 Compilador (arquivo objeto)‫‏‬
 Lincador (executável)‫‏‬
Exemplo 1
#include <stdio.h>
/* Um Primeiro Programa */
int main () {
printf ("Ola! Eu estou vivo!\n");
return 0;
}
Exemplo 2
#include <stdio.h>
int 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);
return 0;
}
Exemplo 3
#include <stdio.h>
int main() {
int x;
printf("Digite um numero");
scanf("%d",&x);
printf("%d\n",x);
return 0;
}
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");
}
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.
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.
Forma geral da função

tipo_de_retorno nome_da_função(lista_de_argumentos) {
código_da_função
}
Exemplo de Função
#include <stdio.h>
/* Funcao simples: so imprime Ola! */
mensagem() {
printf("Ola! ");
}
main() {
mensagem();
printf("Eu estou vivo!\n");
system("pause");
}
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");
}
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");
}
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");
}
Exercício

 Escreva uma função para receber dois


números e, depois, exibir a sua soma.
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");
}
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");
}
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.
getch()‫‏‬
#include <stdio.h>
#include <conio.h>
main() {
printf("Tecle algo...");
char ch=getch();
printf("Voce pressionou a tecla %c\n", ch);
system("pause");
}
Equivalente ANSI
 Diferenças:
 Requer o pressionamento da tecla <ENTER>
após a entrada de teclado.
#include <stdio.h>
main() {
char ch;
printf("Tecle algo...");
scanf("%c", &ch);
printf("Voce pressionou a tecla %c\n", ch);
system("pause");
}
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);
Códigos de controle
Código Significado
%d Inteiro
%f Float
%c Caractere
%s String
%% Coloca na tela um %
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
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
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
Formatação Numérica

 %f
Escreve um ponto flutuante na tela, sem formatação.
printf("%f", 10.0);
 Exibe:
10.000000
Formatação Numérica

 %e
Escreve um ponto flutuante na tela em notação científica.
printf("%e", 10.02545);
 Exibe:
1.002545e+01
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
Operadores

 Atribuição (=)‫‏‬
 Aritméticos
 *e/
 %
 +e-
Operadores Relacionais

== igual
!= diferente de
> maior que
< menor que
>= maior ou igual
<= menor ou igual
Operadores Lógicos

 && (e)‫‏‬
 || (ou)‫‏‬
 ! (não)‫‏‬
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;
...
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");
}
Expressões lógicas
 !(a == b) é́ equivalente a a != b
 !(a != b) é́ equivalente a a == b
 !(a > b) é́ equivalente a a <= b
 !(a < b) é́ equivalente a a >= b
 !(a >= b) é́ equivalente a a < b
 !(a <= b) é́ equivalente a a > b
 !a && !b é equivalente a !(a || b)‫‏‬
 !a || !b é equivalente a !(a && b)‫‏‬
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
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.
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");
}
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;
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
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");
}
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.

Você também pode gostar