2. Histórico
● Nas universidades de Cambridge e de Londres
criou-se a linguagem CPL (Combined
Programming Language) em 1963.
● Martin Richards (Cambridge) cria a linguagem
BCPL (Basic Combined Programming
Language).
● Ken Tompson do Laboratório Bell cria a
linguagem B em 1970 para o computador PDP-
11.
3. Histórico
● O Unix é re-escrito na linguagem B,
linguagem interpretada, portanto lenta.
● Como o PDP-11 era orientado por palavra
em vez de byte, assim apareceu a
necessidade de uma sucessora de B.
● Denis Ritchie do Laboratório Bell cria
linguagem C em 1972.
4. Histórico
● O Unix foi desenvolvido em 1969 sendo
codificado em Assembly e foi re-escrito em
C em 1973. Desse fato gerou a história de
C ser conhecido como uma linguagem de
desenvolvimento de sistemas
operacionais.
5. Características
● É uma linguagem de programação imperativa.
● Esta forma de programação também é
conhecida como programação modular, ou
programação procedural.
● É uma extensão da programação
estruturada, que afirma que todo programa
pode ser feito utilizando apenas sequências
de comandos, seleções e repetições.
6. Características
● O nome modular vem da palavra módulos.
● Isto quer dizer que seu programa pode ser
dividido em módulos que possuem um objetivo
específico e resolvem um pequeno problema.
● A união de todos os módulos forma a solução
de um problema maior que é o objetivo do
sistema computacional a ser escrito em
programação modular.
7. Características
● A programação imperativa descreve um
programa por etapas que correspondem a ações
do que o computador deve fazer para alcançar um
objetivo.
● Verbos no modo imperativo são usados para
denotar estas ações.
● Exemplo:
leia(numero)
escreva(2*numero)
8. Características
● O nome programação procedural vem da
palavra procedimento.
● Baseia-se na declaração de funções e
procedimentos para construção de
sistemas. Em C, o programa principal é
uma função que chama outras.
● Um módulo pode ser visto como cada uma
destas funções ou procedimentos.
9. Características
● C é utilizada em programas que prezam pela
execução rápida, como análises numéricas,
processamento de imagens e vídeos,
aplicações de tempo real, drivers de
hardware, etc.
● C também pode ser usada para escrita de
bibliotecas de procedimentos (Ex.: DLL) que
podem servir como extensões ou plugins de
softwares.
10. Características
● São exemplos de aplicações científicas
com intenso processamento tais como
meteorologia, oceanografia, física,
astronomia, geofísica, engenharia e
economia
11. Características
● C é uma linguagem de médio nível, pois ela
também pode ser usada em conjunto com
partes escritas em linguagem de máquina.
– Uma linguagem de alto nível é mais próxima da
linguagem humana.
● Ex.: Portuguol do Visualg.
– Uma linguagem de baixo nível é mais próxima da
linguagem de máquina.
● Ex.: Assembly.
12. Características
● Possui os comandos clássicos de controle de
execução.
● Possui uma sintaxe bem definida para a formação
de programas.
● Faz distinção entre letras maiúsculas e minúsculas.
– Nota ≠ nota
– Valor ≠ valor
– F ≠ f
13. Características
● Um comando em C é terminado com “;”
(ponto-e-vírgula).
● Um programa em C:
1) Importação de módulos (ou bibliotecas)
contendo outras funções ou comandos;
2) Execução do bloco principal,
representado pela função int main().
14. Características
/* Inclusão de módulos ou bibliotecas
de funções (opcional) */
#include <módulo>
#include “módulo”
int main(){
/* Bloco principal */
return 0;
}
16. Identificadores
● São os nomes utilizados para criação de componentes
dos programas, tais como variáveis e constantes.
● Possuem regras rígida de definição
– Utilizar apenas letras, números e o caractere “_”
– Começar com uma letra ou o caractere “_”
– Exemplos válidos
● Nome1, NomePessoa, nome_pessoa, nome5, _nome_
– Exemplos inválidos
● 2nome, nome pessoa, p$nome, p-nome.
17. Tipos de dados básicos
● char
– Usado para representa um caractere apenas. Cada
caractere representa um número, letra ou símbolo que
pode ser inserido via teclado ou representado pelo
computador.
– Um caractere constante pode ser representado por uma
letra, dígito ou símbolo entre aspas simples.
● Ex: 'a', '0', '&', '*'
– Se for necessário utilizar a própria aspas siples deve-se
utilizar o caractere antes.
● Ex: '''
18. Tipos de dados básicos
● int
– Representa números inteiros.
● float
– Representa números reais com precisão baixa.
● double
– Números reais com precisão dupla.
● As casas decimais dos números reais são
representados por ponto.
– Ex: 13.456
19. Tipos de dados básicos
● O char apesar de representar caracteres,
ele também pode ser usado para
representar números pequenos de apenas
um byte.
● Na realidade, um caractere é um número
inteiro que o computador sabe representar
em símbolos.
20. Tipos de dados básicos
● Tabela de símbolos (excerto)
Binário Decimal Hexadecimal Glifo
0100 0000 64 0x40 @
0100 0001 65 0x41 A
0100 0010 66 0x42 B
0100 0011 67 0x43 C
0100 0100 68 0x44 D
0100 0101 69 0x45 E
0100 0110 70 0x46 F
0100 0111 71 0x47 G
0100 1000 72 0x48 H
0100 1001 73 0x49 I
21. Tipos básicos Tamanho Precisão
char -> p/ caracteres 1 byte - 128 a + 127
int -> p/ inteiros 4 bytes* -2147483648 a
2147483647
float -> p/ reais 4 bytes* -3.4E-38 a +3.4E+38
double -> p/ reais 8 bytes* -1.7E-308 a +1.7E+308
* Variam a depender do processador
Tipos de dados básicos
22. Variáveis e atribuições
● As variáveis podem ser declaradas em
qualquer parte do código. Não existem
uma parte específica onde devem ser
declaradas.
● As atribuições em C são feitas utilizando o
simbolo =.
24. Variáveis e atribuições
● Por conta disso, surge o conceito de
declaração local e global.
● Uma declaração é local se apenas uma
parte do código consegue utilizar o que foi
declarado.
● Uma declaração é global quando todo o
programa consegue utilizar o que foi
declarado
26. Variáveis e atribuições
● A área de código que uma declaração de
variável abrange dentro do código é
conhecida como escopo desta variável.
27. Modificadores de tipos
● Os tipos básicos podem ser modificados
utilizando-se palavras chaves especiais.
● São elas:
Tipo Descrição
unsigned Não usa o bit de sinal
long Aumenta o número de bytes usados
register Usa os registradores da CPU para a variável
signed Usa o bit de sinal (padrão)
short Utiliza o tamanho padrão
28. Modificadores de tipos
Tipo Tamanho Precisão
Unsigned int 4 bytes* 0 a 4294967295
Long [int] 8 bytes* -263
a 263
-1
Unsigned long [int] 8 bytes* 0 a 264
- 1
long double 12 bytes 96 bits em IEEE 754
* Variam a depender do processador
● Exemplos:
29. Modificadores de tipos
● Existe também o modificador const que
torna uma variável constante.
● Assim, o valor daquela variável será
atribuído somente uma vez, não podendo
ser alterado novamente durante a execução
do programa.
31. Frases literais
● Frases escritas em tela devem ser usadas com aspas
duplas.
● Se forem utilizados caracteres especiais, devem ser
usados com antes.
– Se existir a necessidade de escrever frases contendo aspas
duplas também
● Caracteres especiais mais comuns:
– n: Quebra de linha
– : Uma barra
– xNN: um caractere cujo código em hexadecimal é NN.
32. Frases literais
● Exemplos:
● "Olá, mundo!"
● "Este exemplo possui aspas: "Olá, mundo!""
● "Uma linha.nDuas linhas.nTrês linhas."
● "O operador é usado no Visualg para realizar a
operação "quociente"."
33. Variáveis para literais
(strings)
● Frases ou textos literais são conhecidos na
programação como string ou cadeia.
● Uma string é uma sequência de caracteres.
Para declarar uma variável do tipo string deve-
se:
1) usar a palavra char,
2) declarar o nome da variável,
3) em seguida indicar a quantidade máxima de
caracteres que esta variável deve armazenar.
35. Comentários
● São trechos de código que não são compilados.
● Servem para documentar o código, explicando partes
do código fonte, com o intuito de auxiliar quem está
lendo.
● Comentário de uma linha:
// comentário
● Comentário de bloco, com várias linhas:
/* comentário
comentário
comentário */
36. Operadores aritméticos
● Os operadores aritméticos utilizados são:
Operação Símbolo Descrição
Adição + Realiza a soma entre dois operandos
Subtração - Realiza a subtração entre dois operandos
Multiplicação * Realiza a mutiplicação entre dois operandos
Divisão / Realiza a divisão entre dois operandos
A precedência é a mesma da usada nos
algoritmos, podendo ser alterada através do
uso de parênteses. Exemplos:
2 * pi * raio
(n1 + n2 + n3) / 3
37. Operadores aritméticos
● Observação sobre divisão
– Caso os dois argumentos sejam inteiros, o resultado
será um número inteiro
– Caso qualquer um dos argumentos seja número real
(float, double, etc.) o resultado será um número real.
● Exemplos:
3/2 = ?? 1/2 = ??
3/2.0 = ?? 1.0/2 = ??
38. Valores lógicos em C
● Na linguagem C, não existe variáveis do tipo
lógico.
● Para isto, C utiliza variáveis inteiras para
expressar valores lógicos.
● Assim, um valor inteiro igual a 0, representa
falso. Um valor inteiro diferente de zero é
considerado verdadeiro.
– Costuma-se usar 1 para representar verdadeiro em
C.
39. Operadores relacionais
● São utilizados para construção de
expressões lógicas.
● Em C, os operadores relacionais retornam
0 ou 1.
Relação Operando Exemplo Descrição
Igual == a == b Verifica se a é igual a b
Diferente != a != b Verifica se a é diferente de b
Maior > a > b Verifica se a é maior que b
40. Operadores relacionais
Relação Operando Exemplo Descrição
Menor < a < b Verifica se a é menor a b
Maior ou
igual
>= a >= b Verifica se a é maior ou igual a b
Menor ou
igual
<= a <= b Verifica se a é menor ou igual a b
42. Operadores lógicos
● Operadores capazes de conectar
expressões relacionas ou lógicas. Em C,
retornam 0 ou 1.
Operação Resultado
&& Será 1, quando todos os operandos forem
diferentes de 0, caso contrário será 0.
|| Será 0, quando todos os operandos forem 0,
caso contrário será 1.
! Inverte o valor da expressão lógica (Qualquer
valor diferente de 0 passa a ser 0 e 0 passa a ser
1).
43. Operadores lógicos
● Precedência:
1º) não: !
2º) e: &&
3º) ou: ||
● Exemplos:
– Considere a = 2, b = 3, c = 4 e d = 5.
– !(a > b) && (c <= d)
– (a == b) || (c != d)
44. Operadores binários
● São operadores que manipulam os bits de
uma variável. São eles:
Operação Operador Exemplo Descrição
E binário & A &B Aplica um E bit a bit nos
bits de A e de B.
OU binário | A | B Aplica um OU bit a bit
nos bits de A e de B.
NÃO binário ~ ~A Aplica o NÃO em cada
bit de A.
45. Operadores binários
Operação Operador Exemplo Descrição
Deslocamento
à direita
>> A >> B Desloca os bits de A
para direita, B vezes. B
deve ser um número
inteiro. São colocados
zeros nos bits da
extrema esquerda.
Deslocamento
à esquerda
<< A << B Desloca os bits de A
para esquerda, B vezes.
B deve ser um número
inteiro. São colocados
zeros nos bits da
extrema direita.
46. Operadores binários
● Exemplos:
– char a = 2, b = 15; //a = 0000 0010 b = 0000
1111
– char c = a & b; //c = 0000 0010
– c = a | b; //c = 0000 1111
– c = ~a; //c = 1111 1101
48. Operadores abreviados
● São operadores que abreviam operações usuais em
programação. O uso delas pode tornar a execução do
executável mais rápida.
● Incremento e decremento de 1:
++: incremento de 1
-- : decremento de 1
● Exemplos:
– valor++;
– quantidade--;
– ++folhas;
– --faltas;
49. Operadores abreviados
● A posição deles influencia
– valor++ será executado por último após outros
comandos.
– ++valor será a primeira coisa a executar numa linha.
● Exemplos:
– Suponha v = x = 1:
float A = v++ /2.0;
float B = ++x /2.0;
50. Operadores abreviados
● +=: incremento de um valor arbitrário.
● Uso:
<variável> += <expressão>;
● Significa o mesmo que:
<variável> = <variável> + <expressão>;
● Exemplos:
– valor+=3; //valor = valor + 3;
– x += y*2; //x = x + y*2;
52. Comando de escrita
(impressão)
● Para escrever algo na tela é necessário
incluir o módulo stdio.h. Dentro deste
módulo, existe o comando:
printf()
● O comando printf() possui 1 ou mais
argumentos.
– O primeiro argumento é um literal.
– Os demais argumentos são opcionais.
53. Comando de escrita
(impressão)
● Com um argumento podemos apenas
escrever frases.
● Exemplos:
– printf("Olá, mundo!")
– printf("Olá, mundo!n")
– printf("1n2n3n4")
54. Comando de escrita
(impressão)
● Para escrevermos os valores das variáveis
com printf, deve-se utilizar os argumentos
opcionais, de tal forma que cada
argumento corresponde a aparição da
variável na frase que será escrita.
● Além disso, é necessário especificar a
posição na frase em que a variável irá
aparecer e o tipo de variável.
55. Comando de escrita
(impressão)
● Existem várias especificações de tipos que
podem ser impressos pelo printf. Apenas
os mais usuais serão mostrados a seguir.
56. Comando de escrita
(impressão)
● %i ou %d: números inteiros decimais.
● %x, %X: números inteiros hexadecimais
com letras minúsculas e letras maíusculas,
respectivamente.
● %f: números reais.
● %e, %E: representa em notação científica
com e ou E, respectivamente.
57. Comando de escrita
(impressão)
● %g: Usa a menor versão entre %f e %e.
● %G: Usa a menor versão entre %f e %E.
● %c: caracteres
● %s: frases literais armazenadas em
variáveis (strings)
● %p: ponteiros
59. Comando de escrita
(impressão)
● Formatação da saída.
– A forma como os valores das variáveis são
escritas na tela podem ser modificadas no printf. É
possível:
● fixar a quantidade de casas decimais de um número
real;
● Preencher com espaços à esquerda, caso o número
seja pequeno;
● Preencher com zeros à esquerda;
● Etc.
64. Comando de leitura
● Para lermos valores e armazená-los em variáveis,
usa-se o comando scanf.
● O primeiro argumento do scanf é um literal que
deve especificar o tipo da variável, idêntico ao
printf.
● O demais argumentos são as variáveis que serão
lidas, todas começando com &.
● Cada variável armazena o valor apenas após ser
lido o ENTER.
66. Comando de leitura
● Quando a variável a ser lida for do tipo
literal (também conhecido como string),
não utiliza &.
● Exemplo:
char frase[100], msg1[20], msg2[20];
scanf("%s", frase);
scanf("%s %s", msg1, msg2);
70. Linha de comando (Linux)
● Mudar para o diretório onde estão seus
códigos em C. Suponha que ele esteja no
diretório /home/nome/c/:
– cd /home/nome/c/
● Suponha que você tenha salvo um arquivo
com nome aula01.c. Para compilá-lo pela
linha de comando, digite:
– gcc aula01.c
71. Linha de comando (Linux)
● Ao compilar, será gerado um arquivo com
nome a.out. Se você quiser gerar um
arquivo executável com nome próprio use a
opção -o, assim:
– gcc -o aula01 aula01.c
● Execute seu programa digitando ./ antes do
nome do seu programa.
– ./aula01
73. Exercícios
1) Elaborar um programa que receba a idade de
uma pessoa em número de anos, calcule e
escreva essa idade em meses, dias, horas e
minutos.
2) Elaborar um programa para calcular a diferença
de preços de um determinado produto,
comparando os preços de compra atual e anterior.
O programa deve obter os preços atual e anterior
e exibir a diferença algébrica e percentual dos
preços.
74. Exercícios
3) Escrever um programa para efetuar o
cálculo da quantidade de litros de
combustível gastos em uma viagem,
sabendo-se que o veículo faz 9 km/litro. O
usuário informará a velocidade média e o
tempo despendido na viagem. (Obter o
tempo em horas e minutos, em separado).
O programa deve apresentar a distância
percorrida e a quantidade de litros gastos.
75. Exercícios
4) Elaborar um programa para calcular o comprimento
de um círculo, obtendo como entrada a medida do
raio(r). A fórmula da área é 2*pi*raio.
5) Em certa disciplina, a nota média do aluno é
calculada com base em três provas. A primeira prova
tem peso 3, a segunda tem peso 3 e a terceira tem
peso 4. Fazer um programa para calcular e
apresentar a nota média, tendo como dados de
entrada o nome do aluno e as notas referentes as três
provas e como saída o nome e a média calculada.
76. Exercícios
6) João deseja fazer um programa em C que
imprima todos os números reais 0.333, 0.25,
0.20 e 0.166. Ele fez o seguinte programa
para isto:
Mas seu programa só escreve zeros. Por quê?
Corrija o programa dele usando o operador da
divisão.
77. Exercícios
7) O comando sizeof() pode ser usado para descobrir o
tamanho de variáveis ou tipos de variáveis. O programa
abaixo escreve 1 na tela, visto que char é sempre 1 byte.
Faça um programa em C que use o comando sizeof() para
descobrir o tamanho dos seguintes tipos em sua máquina:
int, unsigned int, long int, long, unsigned char, double, float.
#include <stdio.h>
int main(){
printf(“%dn”, sizeof(char));
}
78. Exercícios
8) Faça um programa que escreva na tela
os 15 primeiros números que são potência
de 2 utilizando apenas operadores
binários.