3. Prof. Mauro Jansen
Histórico
Criada na década de 70 por Denis
Ritchie (Bell Labs)
Objetivo: ser uma linguagem mais
fácil que o Assembler mas que
permitisse grande controle sobre o
hardware, para a programação do
sistema Unix
Influência das linguagens BCPL e B
Linguagem de Programação
Linguagem C – parte 1 3
4. Prof. Mauro Jansen
Características
Genérica: usada para a criação de
programas para diversas áreas
Ex: aplicativos, sistemas operacionais,
automação industrial, engenharia, física,
química, etc.
Linguagem “mista”: tem características
de linguagem de alto e baixo nível
Induz a uma boa estruturação de
programas
Influenciou várias outras linguagens
Linguagem de Programação
Linguagem C – parte 1 4
5. Prof. Mauro Jansen
Características
É “case sensitive”: minúsculas e
maiúsculas fazem diferença
Variável “nome” é diferente de “Nome”
É compilada (gera arq.executável)
Linguagem de Programação
Linguagem C – parte 1 5
6. Prof. Mauro Jansen
O pré-processador
Parte do compilador C que trata
alguns textos (comandos) do código-
fonte antes da tradução em código
executável
Esses comandos são as diretivas do
pré-processador. Ex:
#define
#include
Linguagem de Programação
Linguagem C – parte 1 6
7. Prof. Mauro Jansen
Diretivas do pré-processador
#define: define um identificador e
uma sequência de caracteres que
será substituída pelo identificador no
código-fonte. Ex:
#include: inclui um cabeçalho ou
outro arquivo-fonte no ponto onde
está a diretiva. Ex:
Linguagem de Programação
Linguagem C – parte 1 7
#define PI 3.1415
#include <stdio.h>
Em todo o código fonte, PI
será substituído por
3.1415
Inclui o arquivo “stdio.h”
(definições padrões para
entrada e saída de dados)
no programa-fonte
8. Prof. Mauro Jansen
Estrutura básica de um
programa em C
Linguagem de Programação
Linguagem C – parte 1 8
#Include <biblioteca1.h>
#Include <biblioteca2.h>
...
Void main()
{
<Declaração de variáveis>
...
<comandos>
...
}
Inclusão de arquivo de
bibliotecas de comandos
Função main(): é
obrigatória. É a primeira
função chamada quando
o programa é iniciado
Delimitadores de inicio e fim de
bloco de comandos
9. Prof. Mauro Jansen
Comentários
Comentários são úteis para
documentar o programa, e devem ser
sempre usados
Existe dois modos:
Posição livre: usa-se o comando //
Várias linhas: usa-se o comando /* */
Linguagem de Programação
Linguagem C – parte 1 9
10. Prof. Mauro Jansen
Palavras reservadas
Linguagem de Programação
Linguagem C – parte 1 10
São os comandos e funções próprias
do vocabulário da linguagem. Ex.:
auto, break, case, char, const, continue,
default, do, double, else, enum, extern,
float, for, goto, if, int, long, register,
struct, switch, typedef, union, unsigned,
void, volatile, while, etc.
11. Prof. Mauro Jansen
Exemplo de programa em C
Linguagem de Programação
Linguagem C – parte 1 11
/*
Programa: calcular a média entre duas notas
Autor...: prof.Mauro
*/
#Include <stdio.h>
Void main()
{
float nota1,nota2; // declaração de variáveis
printf(“Digite a primeira nota: “);
scanf(“%f”,¬a1);
printf(“Digite a segunda nota: “);
scanf(“%f”,¬a2)
printf(“A média é: %f”,(nota1+nota2)/2);
}
12. Prof. Mauro Jansen
Comando de saída: printf
Sintaxe: printf(<string de controle>,<lista de argumentos>)
Códigos de controle:
Exemplos:
printf(“O valor de PI é %f”,3.1415);
printf(“Meu nome é %s e eu tenho %d anosn”,”João”,18);
Linguagem de Programação
Linguagem C – parte 1 12
Código Formato Código Formato
%d Inteiro com sinal %X Hexadecimal
%f Float (número real) %o Octal
%c Caractere %E Notação científica
%s String %p Ponteiro
%u Inteiro sem sinal
Mensagem (string) com códigos de
controle embutidos na mesma
Valores que serão substituídos na
mensagem, no lugar de cada código
de controle iniciado por %
n salta
linha
13. Prof. Mauro Jansen
Comando de entrada: scanf
Sintaxe:
scanf(<string de controle>,<lista de argumentos>)
Exemplo:
Linguagem de Programação
Linguagem C – parte 1 13
#Include <stdio.h>
Void main()
{
char c;
float n;
printf(“Digite uma letra: “);
scanf(“%c”,&c);
printf(“Digite um valor real: “);
scanf(“%f”,&n);
printf(“Letra: %c , número: %f”,c,f);
}
códigos de controle que
identificarão o tipo de dado a ser
digitado pelo usuário
Variável(is) que receberá(ão) os
dados, precedida(s) pelo sinal &
14. Prof. Mauro Jansen
Linguagem de Programação
Linguagem C – parte 1 14
Tipos de dados,
constantes, variáveis,
operadores e expressões
em C
15. Prof. Mauro Jansen
Tipos de dados
A linguagem C tem os tipos básicos
Char (caractere), Int (inteiro), float (real),
double (real)
E modificadores de tipo, que vêm antes
do tipo e podem ser combinados:
Unsigned: sem sinal
Signed: com sinal (padrão)
Short: menor precisão (padrão)
Long: maior precisão
Linguagem de Programação
Linguagem C – parte 1 15
17. Prof. Mauro Jansen
Constantes e variáveis
Constante: porção de dados que não muda
seu valor durante a execução do programa.
Exemplos: 23, ‘X’, “Linguagem C”, 1.234
Constantes não precisam de nome, mas
podemos nomeá-las usando a diretiva #define.
Ex: #define PI 3.1415
Variável: porções de dados que podem
mudar seu valor durante a execução do
programa
Uma variável precisa ter um nome e tipo e
precisa ser declarada e inicializada
Linguagem de Programação
Linguagem C – parte 1 17
18. Prof. Mauro Jansen
Constantes de barra invertida
São códigos que iniciam com uma barra invertida
que representam uma constante tipo caractere
dentro de strings, como no comando printf. Veja
alguns:Código Significado
n Nova linha (new line)
” Aspas
’ Apóstrofo
0 Nulo
Barra invertida
t Tabulação horizontal
a Sinal sonoro (beep)
N Constante octal (N é o valor da constante)
xN Constante hexadecimal (N é o valor da
constante)
Muito usado no
printf para saltar
para próxima
linha
19. Prof. Mauro Jansen
Regras para nomes de
variáveis
Começar com letra ou sublinhado (_)
Caracteres seguintes podem ser
letras, números ou sublinhado
Não pode ser palavra reservada ou
função
Maiúsculas e minúsculas fazem
diferença
Linguagem de Programação
Linguagem C – parte 1 19
20. Prof. Mauro Jansen
Declaração e inicialização de
variáveis
A declaração é feita da seguinte
forma:
Obs: Na linguagem C não há uma seção
específica para declaração de variáveis
Exemplos:
Linguagem de Programação
Linguagem C – parte 1 20
<tipo de dado> <lista de variáveis>;
char ch,letra;
long cont;
21. Prof. Mauro Jansen
Declaração e inicialização de
variáveis
Inicialização: podemos atribuir valor
no momento da declaração ou
depois, usando o operador de
atribuição “=“ :
Linguagem de Programação
Linguagem C – parte 1 21
Char ch=‘D’;
Int num=123;
num=10;
22. Prof. Mauro Jansen
Operadores aritméticos
Usados em operações matemáticas
Linguagem de Programação
Linguagem C – parte 1 22
Operador Ação
+ Soma
- Subtração ou troca de sinal
* Multiplicação
/ Divisão
% Resto da divisão
++ Incrementa valor de uma variável
-- Decrementa valor de uma variável
+= Atribuição com soma
-= Atribuição com subtração
23. Prof. Mauro Jansen
Operadores relacionais
Usados em comparações entre
valores
Linguagem de Programação
Linguagem C – parte 1 23
Operador Significado
> Maior
>= Maior ou igual
< Menor
<= Menor ou igual
== Igual
!= Diferente
24. Prof. Mauro Jansen
Operadores lógicos
Usados em expressões lógicas
compostas
Linguagem de Programação
Linguagem C – parte 1 24
Operador Significado
&& Operador E. Retorna verdadeiro se
ambos valores forem verdadeiros
|| Operador OU. Retorna verdadeiro
se pelo menos um for verdadeiro
! Operador NÃO. Retorna o contrário
do valor informado.
25. Prof. Mauro Jansen
Exemplo com operadores e
expressões
Linguagem de Programação
Linguagem C – parte 1 25
#Include <stdio.h>
Void main()
{
int a,b,c,d;
a=10;
b=22;
c=30;
d=40;
printf(“a+b = %d”,a+b); // soma a e b
printf(“a-b = %d”,a-b); // subtrai b de a
printf(“b%%a = %d”,b%a); // resto da divisão de b por a
a++; // incrementa a (mesmo que a=a+1)
b--; // decrementa b (mesmo que b=b-1)
c+=a; // soma a em c (mesmo que c=c+a)
d-=b; // soma e em d (mesmo que d=d+b)
printf(“a=%d, b=%d, c=%d, d=%d”,a,b,c,d);
}
OBS: No próximo bloco veremos exemplos com
operadores relacionais e lógicos
27. Prof. Mauro Jansen
Estrutura condicional if
Equivalente em pseudocódigo: se-senão-fimse
Sintaxe:
Se a condição for verdadeira, executa bloco de
comandos 1, senão executa bloco de comandos 2
OBS: Um bloco de comando composto por mais
de um comando deve iniciar com { e terminar
com }
O bloco do else é opcional
Linguagem de Programação
Linguagem C – parte 1 27
If(<condição>)
<bloco de comandos>
[else
<bloco de comandos 2>]
28. Prof. Mauro Jansen
Estrutura condicional if (se) -
Exemplo
Linguagem de Programação
Linguagem C – parte 1 28
/*
Programa: calcular a média e mostrar situação
*/
#Include <stdio.h>
Void main()
{
float nota1,nota2,media; // declaração de variáveis
printf(“Digite a primeira nota: “);
scanf(“%f”,¬a1);
printf(“Digite a segunda nota: “);
scanf(“%f”,¬a2);
media=(nota1+nota2)/2;
printf(“A média é: %f n”,media);
if(media>=7)
printf(“Você está aprovado.n”);
else
printf(“Você está de recuperação.n”);
}
29. Prof. Mauro Jansen
Estrutura condicional switch-case
Equivalente pseudocódigo: escolha
Linguagem de Programação
Linguagem C – parte 1 29
Sintaxe:
Switch (<variável>)
{
case <constante1>:
<declaração1>;
break;
case <constante2>:
<declaração2>;
break;
case <constante_n>:
<declaraçãoN>;
break;
default:
<declaração default>
}
30. Prof. Mauro Jansen
Estrutura condicional switch-case
Exemplo
Linguagem de Programação
Linguagem C – parte 1 30
#Include <stdio.h>
void main()
{
float n1,n2;
char op;
printf(“Digite um número: “);
scanf(“%f”,&n1);
printf(“Digite a operação (+,-,* ou /): “);
scanf(“%s”,&op);
printf(“Digite outro número: “);
scanf(“%f”,&n2);
switch (op)
{
case ‘+’: printf(“Soma=%f”,n1+n2);
break;
case ‘-’: printf(“Subtração=%f”,n1-n2);
break;
case ‘*’: printf(“Multiplicação=%f”,n1*n2);
break;
case ‘/’: printf(“Divisão=%f”,n1/n2);
break;
default: printf(“Você digitou uma operação inválida!”);
}
}
31. Prof. Mauro Jansen
Operador ternário
Operador que permite simplificar
tomadas de decisão simples
Sintaxe:
Exemplo:
<expressão1> ? <expressão2> : <expressão3>
max=(a>b) ? a : b;
If (a>b)
max=a;
Else
max=b;
Equivale a:
32. Prof. Mauro Jansen
Estrutura de repetição for
Equivalente pseudocódigo: para - fimpara
É a repetição contada. Sintaxe:
Inicialização: expressão de inicialização.
Ex: n=0
Condição: expressão condição para
continuar a repetição. Ex: n<=10
Incremento: expressão de incremento.
Ex: n++
Linguagem de Programação
Linguagem C – parte 1 32
for(<inicialização>;<condição>;<incremento>)
<bloco de comandos>
33. Prof. Mauro Jansen
Estrutura de repetição for
exemplo:
Programa para contar de 1 a 100:
#include <stdio.h>
{
int n;
for(n=1 ; n<=100 ; n++)
{
printf("Contando: %dn",n);
}
}
34. Prof. Mauro Jansen
Estrutura de repetição while
Equivalente pseudocódigo: enquanto–faça-
fimenquanto
Sintaxe:
Inicia e repete o bloco de comandos
enquanto a condição for verdadeira
É a repetição com teste no início
Linguagem de Programação
Linguagem C – parte 1 34
while(<condição>)
<bloco de comandos>
35. Prof. Mauro Jansen
Estrutura de repetição while
Exemplo:
Soma quantidade indeterminada de
números
Linguagem de Programação
Linguagem C – parte 1 35
#include <stdio.h>
int main()
{
float n=1,soma=0;
while (n!=0) {
printf("Digite um numero (zero=fim):");
scanf("%f",&n);
soma+=n;
}
printf("A soma dos numeros digitados é: %f",soma);
}
36. Prof. Mauro Jansen
Estrutura de repetição
do..while
Equivalente pseudocódigo: repita - até
Sintaxe:
Executa o bloco de comando e repete
enquanto a condição for verdadeira
É a repetição com teste no final
Linguagem de Programação
Linguagem C – parte 1 36
do
<bloco de comandos>
While(<condição>);
37. Prof. Mauro Jansen
Estrutura de repetição
do..while
Exemplo: Mesmo anterior, agora com do..while:
Linguagem de Programação
Linguagem C – parte 1 37
#include <stdio.h>
{
float n=0,soma=0;
do {
printf("Digite um numero (zero=fim):");
scanf("%f",&n);
soma+=n;
} while (n!=0);
printf("A soma dos numeros digitados é: %fn",soma);
}
38. Prof. Mauro Jansen
Comandos que afetam as
estruturas de repetição
Comando break: interrompe a
repetição, continuando após o bloco
de comandos a ser repetido
Comando continue: interrompe
apenas a repetição atual, voltando ao
início do laço
Linguagem de Programação
Linguagem C – parte 1 38
40. Prof. Mauro Jansen
Procedimentos e funções
Também chamados de sub-programas
ou rotinas, são programas que
executam uma função específica que
é acessada diversas vezes
Procedimento: não retorna valor ao
programa que o chamou
Função: retorna valor
Exemplos: função fatorial (calcula o
fatorial de um número)
Linguagem de Programação
Linguagem C – parte 1 40
41. Prof. Mauro Jansen
Por que usar funções?
Reaproveitar código já criado (por
você ou outros programadores)
Evitar repetição de código dentro do
mesmo programa
Separar o programa em blocos,
facilitando a leitura, o entendimento e
a manutenção
Linguagem de Programação
Linguagem C – parte 1 41
42. Prof. Mauro Jansen
Procedimentos e funções em
C
A linguagem C tem apenas funções
O tipo da função diz se ela retorna ou
não valor:
Tipo void: função que não retorna valor
Outros tipos básicos (int, float, etc.):
funções que retornam valor
Linguagem de Programação
Linguagem C – parte 1 42
43. Prof. Mauro Jansen
A função main()
Como já vimos, todo programa em C
tem pelo menos uma função:
Linguagem de Programação
Linguagem C – parte 1 43
#Include <biblioteca1.h>
#Include <biblioteca2.h>
...
Void main()
{
<Declaração de variáveis>
...
<comandos>
...
}
Inclusão de arquivo de
bibliotecas de comandos
Função main(): é
obrigatória. É a primeira
função chamada quando
o programa é iniciado
Delimitadores de inicio e fim de
bloco de comandos
44. Prof. Mauro Jansen
Definindo funções em C
Sintaxe:
Os parâmetros são os dados que serão
usados pela função para realizar sua
operação ou retornar algum resultado
A lista de parâmetros é opcional, mas se for
usada deve ser especificado o tipo de cada
parâmetro
Linguagem de Programação
Linguagem C – parte 1 44
tipo nome da função(tipo parâmetro1,...,tipo parâmetroN)
{
// comandos da função
}
45. Prof. Mauro Jansen
Chamada de funções
Linguagem de Programação
Linguagem C – parte 1 45
void main()
{
// comando anterior à chamada
funcao1(2,3)
// comando posterior à chamada
}
void funcao1(int a,int b)
{
// comandos da função
}
46. Prof. Mauro Jansen
Exemplo de função
Linguagem de Programação
Linguagem C – parte 1 46
#Include <stdio.h>
float media(float nota1,float nota2)
{
return( (nota1+nota2)/2);
}
void main()
{
printf(“%fn”,media(8,9));
}
48. Prof. Mauro Jansen
Memória e endereços
Local de armazenamento de
informações binárias
Podem ser circuitos semicondutores,
mídias magnéticas, óticas, etc.
Cada posição de memória é
identificada por um ENDEREÇO
Endereçamento é o ato de acessar
um dado em uma posição de memória
(para isso precisamos especificar o
endereço)
Linguagem de Programação
Linguagem C – parte 3 48
49. Prof. Mauro Jansen
Memória e endereços
Linguagem de Programação
Linguagem C – parte 3 49
Endereço Conteúd
o
0000h 00
0001h EB
0002h 29
...
FFFFh 00
Exemplo de bloco de memória com 64K posições (64KB
O conteúdo de
cada posição de
memória pode ser
um dado
(numérico ou
caractere) ou uma
instrução
Os endereços
normalmente são
identificados por números
hexadecimais (h)
50. Prof. Mauro Jansen
Ponteiros
Toda variável é armazenada na
memória do computador em uma
posição que possui um ENDEREÇO
Um ponteiro é uma variável especial
que guarda um endereço de memória
Com ponteiros, podemos acessar e
modificar dados diretamente na
memória
Linguagem de Programação
Linguagem C – parte 3 50
Ponteiro é um dos recursos que permitem
à linguagem C acessar os recursos do
hardware
51. Prof. Mauro Jansen
Operadores & e *
Operador & (endereço de)
Sintaxe: &<variável>
Uso: retorna o endereço de uma variável
Exemplo: scanf(“%d”,&num)
Usado para inicializar ponteiros.
Operador * (conteúdo de)
Sintaxe: *<variável tipo ponteiro>
Uso: retorna o conteúdo do endereço de
memória guardado na variável, que deve ser
do tipo ponteiro
Linguagem de Programação
Linguagem C – parte 3 51
52. Prof. Mauro Jansen
Declarando ponteiros
Sintaxe: <tipo> *<nome da
variável>;
Exemplo:#include <stdio.h>
int main()
{
int x=15;
int *pInt; // ponteiro para variável de tipo inteiro
pInt=&x;
printf("Conteudo de x: %dn",*pInt); // conteúdo de x
printf("Endereço de x: %dn",pInt); // endereço de x
}
Linguagem de Programação
Linguagem C – parte 3 52
Observe que todo ponteiro deve ter o
“*” (asterisco) antes do nome
53. Prof. Mauro Jansen
Ponteiros – ilustração do
funcionamento
Linguagem de Programação
Linguagem C – parte 3 53
Endereç
o
Variáve
l
Conteúdo
0000h 00
0001h EB
02F0h c ‘A’
...
FFFFh 00
Declaração e inicialização
de uma variável c tipo
char, que ficou no
endereço 2F0
char c=‘A’;
char *pc=&c;
printf("%c",*pc);
O endereço da
variável cé
guardado no
ponteiro *pc
O comando printf
acessa o conteúdo do
endereço guardado
em *pc (que é o valor
da variável c)