03 - Introdução A C
03 - Introdução A C
03 - Introdução A C
2
Introdução
01 Histórico - Linguagem C
Por que aprender C?
Características da linguagem C
Linguagem compilada e interpretada
Fluxo do compilador C
Ambiente de desenvolvimento
Histórico - Linguagem C
● Foi criada por Dennis Ritchie em 1972 no centro de pesquisas da Bell
Laboratories
● Seu primeiro uso importante foi a reescrita do Sistema Operacional Unix, que
até então era escrito em assembly
● Se tornou tão popular que por volta de 1980, já existiam várias versões de
compiladores C oferecidas por várias empresas
● É uma linguagem de uso geral. O melhor uso dela é feito em programas que
lidam diretamente com hardware, como um sistema operacional ou um driver
4
Por que aprender a C?
● É uma ótima linguagem para programadores iniciantes
5
Por que aprender a C?
● C é fundamental, para uma sólida formação em programação
6
Características da linguagem C
● A linguagem C pertence a uma família de linguagens cujas características são
○ Modularidade: um programa é dividido em vários blocos de programação
distintos, ou seja, funções que não estão interligadas
○ Recursos de baixo nível: tem muitos recursos para controlar a memória da sua
máquina
○ Linguagem procedural: especifica uma série de etapas e procedimentos bem
estruturados dentro de seu contexto de programação para compor um
programa
○ Simplicidade: a sintaxe é relativamente fácil de aprender e, seguindo as regras,
dificilmente vai cometer erros que possam comprometer o seu programa
7
Características da linguagem C
● A linguagem C pertence a uma família de linguagens cujas características são
○ Portabilidade: é extremamente portátil, pois os programas escritos em C
podem ser executados e compilados em qualquer sistema com nenhuma ou
pequenas alterações
○ Compilação: seus programas são rapidamente compilados gerando um arquivo
executável
○ Uso geral: embora não seja, obviamente, a melhor escolha para todas as
aplicações, pode-se fazer quase tudo com C
8
Linguagem compilada e interpretada
● Compilada
○ O compilador pode ser definido como um programa que traduz todo o código
escrito em uma linguagem de programação (código-fonte) em um código de
máquina, gerando arquivos adicionais que consigam ser executados pelo
computador
● Interpretada
○ O interpretador, ao contrário do compilador, NÃO traduz o código-fonte inteiro
para depois executá-lo, já que essa conversão ocorre simultaneamente à
execução do código, deixando de lado a necessidade da criação de arquivos
adicionais em código de máquina para serem executados posteriormente
9
Linguagem compilada e interpretada
● Compilada
1. O programa conversor recebe a primeira instrução do programa fonte, verifica
se está escrita corretamente
2. Se sim, converta para linguagem de máquina e passe para a próxima instrução,
repetindo o processo sucessivamente até a última instrução do programa fonte
3. Se a transformação da última instrução do programa fonte foi concluída e
nenhum erro foi detectado, o computador retorna à primeira instrução, já
transformada em linguagem de máquina, e a executa
4. Passa à instrução seguinte, executa-a, etc., até a última
10
Linguagem compilada e interpretada
● Interpretada
1. O programa conversor recebe a primeira instrução do programa fonte, verifica
se está escrita corretamente, converte-a em linguagem de máquina e, em
seguida, informa ao computador para executar essa instrução
2. Depois repete o processo para a segunda instrução, e assim sucessivamente, até
a última instrução do programa fonte
3. Quando a segunda instrução é trabalhada, a primeira é perdida, isto é, apenas
uma instrução fica na memória em cada instante
11
Fluxo do compilador C
EDITOR DE
CÓDIGO-FONTE
TEXTOS
COMPILADOR
CÓDIGO-OBJETO
(.obj)
BIBLIOTECAS PADRÃO
(.dll ou .lib)
LIGADOR OU
LINKEDITOR
OUTRAS BIBLIOTECAS
PROGRAMA EXECUTÁVEL
(.exe)
12
Fluxo do compilador C
● Principais termos
○ Código-fonte: criado em um editor de textos, contendo os comandos da
linguagem de programação (C, Pascal...). Serve como entrada para o
compilador
○ Código-objeto: criado pela conversão do código-fonte em linguagem de
máquina. É gerado pelo compilador. Só é criado quando não há erros no
código-fonte. (extensão do código-objeto: .OBJ)
○ Ligador ou Linkeditor: "junta" o código-objeto com as bibliotecas necessárias
para gerar o programa-executável. (extensões das bibliotecas: .DLL ou .LIB)
○ Programa executável: código que pode ser executado pelo sistema
operacional. (extensão do programa-executável: .EXE)
13
Ambiente de desenvolvimento
● Ou IDE (Integrated Development Environment)
● Normalmente incluem
○ Um editor de texto para códigos-fonte
■ Complementação automática de código (code completion)
■ Destacamento de sintaxe através de cores (syntax highlighting)
○ Um compilador (compiler)
○ Um depurador (debugger): permite executar o programa passo-a-passo
14
Ambiente de desenvolvimento
● IDEs gratuitas para C/C++ recomendadas para o curso
○ Dev C++ - http://sourceforge.net/projects/dev-cpp/
○ Code::Blocks - http://www.codeblocks.org/
● Site
○ https://replit.com/
15
Linguagem C
02 Tipo básicos de variáveis
Modificadores de tipos
Operadores aritméticos básicos, relacionais e lógicos
Operações de fluxo (condição e repetição)
Linguagem C
● Tipo básicos de variáveis (tipo de dados)
○ char: o valor armazenado é um caractere. Caracteres geralmente são
armazenados em códigos (usualmente o código ASCII)
○ int: número inteiro (positivos, negativos e o 0)
○ float: número em ponto flutuante de precisão simples. São conhecidos
normalmente como números reais
○ double: número em ponto flutuante de precisão dupla
○ void: este tipo serve para indicar que um resultado não tem um tipo definido.
Não retorna um valor
17
Linguagem C
● Modificadores de tipos
○ Podem aumentar ou diminuir a capacidade de armazenamento e definir se a
faixa numérica será a positiva ou então negativa
■ signed: números positivos e negativos
■ unsigned: números positivos
■ long: aumentar a capacidade de armazenamento
■ short: diminuir a capacidade de armazenamento
18
Linguagem C
● Modificadores de tipos
Tipo Tamanho em bytes Faixa mínima
char 1 -127 a 127
unsigned char 1 0 a 255
int 4 -2.147.483.648 a 2.147.483.647
unsigned int 4 0 a 4.294.967.295
short int 2 -32.768 a 32.767
unsigned short int 2 0 a 65.535
long int 4 -4.294.967.295 a 4.294.967.295
unsigned long int 4 0 a 4.294.967.295
float 4 Seis dígitos de precisão
double 8 Dez dígitos de precisão
long double 10 Dez dígitos de precisão
19
Linguagem C
● Variáveis
○ Regras básicas para nomear variáveis
■ Todo nome só pode conter letras e/ou dígitos
■ Apenas o caractere símbolo "_" pode ser usado
■ Todo primeiro caractere deve ser sempre uma letra
■ Letras maiúsculas e minúsculas são consideradas caracteres diferentes
○ Declaração de variáveis
■ int i, idade, numero;
■ float salario, altura;
■ unsigned char sexo, letra;
20
Linguagem C
● Variáveis
○ Regras básicas para nomear variáveis
■ Todo nome só pode conter letras e/ou dígitos
■ Apenas o caractere símbolo "_" pode ser usado
■ Todo primeiro caractere deve ser sempre uma letra
■ Letras maiúsculas e minúsculas são consideradas caracteres diferentes
Obs.: não só as variáveis mas
○ Declaração de variáveis toda a linguagem C é “Case
Sensitive”, isto é, maiúsculas
■ int i, idade, numero; e minúsculas fazem diferença.
■ float salario, altura; Por exemplo: Idade ≠ idade,
■ unsigned char sexo, letra; ou seja, são duas variáveis
diferentes
21
Linguagem C
● Variáveis
○ Regras básicas para nomear variáveis
■ Todo nome só pode conter letras e/ou dígitos
■ Apenas o caractere símbolo "_" pode ser usado
■ Todo primeiro caractere deve ser sempre uma letra
■ Letras maiúsculas e minúsculas são consideradas caracteres diferentes
Obs.: não só as variáveis mas
○ Declaração de variáveis toda a linguagem C é “Case
Sensitive”, isto é, maiúsculas
■ int i, idade, numero; e minúsculas fazem diferença.
■ float salario, altura; Por exemplo: Idade ≠ idade,
■ unsigned char sexo, letra; ou seja, são duas variáveis
diferentes
; após a declaração
22
Linguagem C
● Variáveis
○ Booleanas
■ A linguagem C não possui explicitamente variáveis do tipo booleano.
Entretanto, a linguagem considera um número com valor 0 (zero) igual a falso e
qualquer número diferente de 0 (zero) igual a verdadeiro
23
Linguagem C
● Variáveis
○ Atribuição
■ A atribuição é realizada usando o símbolo “=”
- idade = 31;
- sexo = ‘m’;
Caracteres usam
aspas simples
24
Linguagem C
● Operadores aritméticos básicos
25
Linguagem C
● Operadores relacionais e lógicos
Op. relacionais são
Operador Símbolo Exemplo
usados para fazer
comparações entre Igual == a == b
variáveis. O resultado é Diferente != a != b
um valor booleano
(verdadeiro ou falso) Maior > a>b
Maior ou igual >= a≥b
Op. lógicos são usados
Menor < a<b
quando é necessário usar
duas ou mais condições Menor ou igual <= a≤b
dentro da mesma Conjunção (e) && a && b
instrução if para que seja
tomada uma única Disjunção (ou) || a || b
decisão cujo resultado Negação ! !c
será verdadeiro ou falso
26
Linguagem C
● Operadores relacionais e lógicos
Negação ! !c
27
Linguagem C
● Comando de saída (printf)
○ printf (<info. de controle>, <lista de variáveis>);
○ Informações de controle
■ É uma descrição do que vai aparecer na tela. Também é a definição do tipo de
dado do valor a ser exibido (geralmente de uma variável). Isto é feito usando-se
os códigos de controle, que usam a notação %
Código Significado
%d Inteiro
%f Float
%c Caractere
%s String
%% Coloca na tela um %
28
Linguagem C
● Comando de saída (printf)
○ Exemplos
■ printf ("%f", 40.345)
- "40.345"
■ printf ("Um caractere %c e um inteiro %d", 'D', 120)
- "Um caractere D e um inteiro 120"
■ printf ("%s eh um exemplo", "Este")
- "Este eh um exemplo"
■ printf ("%s%d%%", "Juros de ", 10)
- "Juros de 10%"
29
Linguagem C
● Comando de entrada (scanf)
○ scanf (<info. de controle>, &<lista de variáveis>);
○ Exemplos
■ scanf (“%f”, &salario);
Para a variável salario vai
■ scanf (“%d”, &idade); atribuir o valor do tipo float
■ scanf (“%c”, &letra);
■ scanf (“%d %f %c”, &idade, &salario, &letra);
○ O caractere & indica que o valor será armazenado no endereço de memória da
variável
30
Linguagem C
● Caracteres de escape
Caractere Significado
\a Aviso sonoro
\n Nova linha
\t Tabulação horizontal
\v Tabulação vertical
\\ Caractere de barra invertida
\' Apóstrofe
\" Aspas
\? Interrogação
31
Linguagem C
● Abreviação de expressões
○ A linguagem C admite as seguintes equivalências, que podem ser usadas para
simplificar expressões ou para facilitar o entendimento de um programa
Expressão original Expressão equivalente
x = x + k; x += k;
x = x - k; x -= k;
x = x * k; x *= k;
x = x / k; x /= k;
x=x+1 x++
++x
x=x-1 x--
--x
32
Exemplo em C (estrutura básica)
int indica que a função main
retorna um valor do tipo #include inclui a biblioteca stdio.h. Essa
inteiro biblioteca possui declarações de funções
de I/O
Os caracteres chave { e }
delimitam o início e fim da
função main, respectivamente
33
Exemplo em C (estrutura básica)
● Comentários
○ Tipos de comentários
■ Comentário de uma linha: //
■ Comentário de múltiplas linhas: /* */
34
Exemplo em C
● Inserindo system(“PAUSE”) para fazer o programa “parar”
35
Exemplo em C
Qual a saída?
36
Exemplo em C
Qual a saída?
Teste % %
40.345000
Um caractere D e um inteiro 120
Este eh um exemplo
Juros de 10%
37
Linguagem C
● Exercício 1: dado dois números, calcule a multiplicação, divisão, soma e
subtração
38
Linguagem C
● Exercício 1: dado dois números,
calcule a multiplicação, divisão,
soma e subtração
39
Linguagem C
● Exercício 2: dado um número inteiro de três algarismos, exibir cada algarismo
separadamente
40
Linguagem C
● Exercício 2: dado um número inteiro de três algarismos, exibir cada algarismo
separadamente
41
Linguagem C
● Operações de fluxo (sentença de condição)
○ Comando se
■ Altera o fluxo de execução de um programa baseado no valor (verdadeiro ou
falso) de uma condição
if (<condição>)
<comandos a serem executadas caso a condição resulte em VERDADEIRO>;
[ else
<comandos a serem executadas caso a condição resulte em FALSO>; ]
42
Linguagem C
● Comando se
○ Exemplo: o usuário deve informar sua idade. Posteriormente, verifique se o
usuário é de maior
43
Linguagem C
● Comando se
○ Exemplo: o usuário deve informar sua idade. Posteriormente, verifique se o
usuário é de maior
44
Linguagem C
● Comando se
○ Exercício 1: leia um número inteiro e verifique se é par ou ímpar. Se for par,
imprima o valor multiplicado por 2, caso contrário, o valor adicionado mais 3
45
Linguagem C
● Comando se
○ Exercício 1: leia um número inteiro e verifique se é par ou ímpar. Se for par,
imprima o valor multiplicado por 2, caso contrário, o valor adicionado mais 3
46
Linguagem C
● Operações de fluxo (sentença de repetição)
○ Comando for
■ O comando for permite que um certo trecho de programa seja executado um
determinado número de vezes
47
Linguagem C
● Exemplo: imprima os números de um a quarto usando o for
48
Linguagem C
● Comando for
○ Exercício 1: faça um algoritmo que apresente os números múltiplos de 2 e 3 no
intervalo de 1 à 100
49
Linguagem C
● Comando for
○ Exercício 1: faça um algoritmo que apresente os números múltiplos de 2 e 3 no
intervalo de 1 à 100
50
Linguagem C
● Operações de fluxo (sentença de repetição)
○ Comando while
■ Repete uma sequência de comandos ENQUANTO uma determinada condição
for satisfeita
while (<condição>)
<sequência-de-comandos>;
51
Linguagem C
● Exemplo: imprima os números de um a quarto usando o while
52
Linguagem C
● Comando while
○ Exercício 1: faça um algoritmo que realize a soma de cinco valores fornecidos
pelo usuário
53
Linguagem C
● Comando while
○ Exercício 1: faça um algoritmo que realize a soma de cinco valores fornecidos
pelo usuário
54
Linguagem C
● Operações de fluxo (sentença de repetição)
○ Comando do while
■ O comando do while permite que um certo trecho de programa seja executado
ENQUANTO uma certa condição for verdadeira
do {
<sequência-de-comandos>;
} while (<condição>);
55
Linguagem C
● Operações de fluxo (sentença de repetição)
○ Comando do while
■ O comando do while permite que um certo trecho de programa seja executado
ENQUANTO uma certa condição for verdadeira
do {
<sequência-de-comandos>;
} while (<condição>);
IMPORTANTE!
Se if, else, while, for tiverem mais de um
comando é necessário a utilização dos
caracteres de chaves para marcar o início e fim
do comando: { (início) e } (fim)
56
Linguagem C
● Exemplo: imprima os números de um a quarto usando o do while
57
Linguagem C
● Comando do while
○ Exercício 1: crie um algoritmo que faça a leitura de vários números digitados pelo
usuário e apresente a quantidade de valores positivos. O algoritmo encerra quando
for digitado o valor zero
58
Linguagem C
● Comando do while
○ Exercício 1: crie um algoritmo que faça a leitura de vários números digitados pelo
usuário e apresente a quantidade de valores positivos. O algoritmo encerra quando
for digitado o valor zero
59
Linguagem C
● Comando break
○ Pode quebrar a execução de um comando (como no caso do switch) ou
interromper a execução de qualquer loop. O break faz com que a execução do
programa continue na primeira linha seguinte ao loop ou bloco que está sendo
interrompido
60
Linguagem C
● Comando break
61
Linguagem C
● Comando de seleção (switch)
○ O conteúdo de uma variável é comparado com um valor constante, e caso a
comparação seja verdadeira, um determinado comando é executado
62
Linguagem C
● Comando de seleção (switch)
Default (opcional): é
executado se nenhuma
coincidência for
detectada
63
Linguagem C
● Caracteres
○ Algoritmo para listar a tabela ASCII
64
Linguagem C
● Caracteres
○ Funções de entrada para caracteres
■ getch(): apenas retorna o caractere pressionado sem mostrá-lo na tela
65
Linguagem C
● Caracteres
○ Funções de entrada para caracteres
■ getche(): mostra o caractere na tela antes de retorná-lo
66
Linguagem C
● Caracteres
○ Em muitos casos, ao ler um caractere/string pode encontrar alguns problemas
■ Toda a informação que digitamos no teclado é armazenada em um buffer e fica
disponível para nossa utilização
■ Quando usamos a função scanf(), ela recupera a informação do buffer. Porém,
ela pode deixar "sujeira" no buffer, comprometendo futuras leituras
67
Linguagem C
● Caracteres
○ Entrada comum de caracteres
68
Linguagem C
● Caracteres
○ Entrada comum de caracteres
Limpa o buffer
69
Resumindo..
● Histórico da linguagem C
● Principais características da linguagem C
● Linguagem compilada e interpretada
● Linguagem C (conceitos e aplicações)
70
Referências
PIVA, D. J. et al. Algoritmos e programação de SCHILDT, Herbert. C completo e total. Makron, 1997.
computadores. Rio de Janeiro, RJ: Elsevier,
2012. 71