CES-10 INTRODUÇÃO À
COMPUTAÇÃO
Capítulo III
Declarações e Comandos de
Atribuição
Capítulo III – Declarações e
Comandos de Atribuição
3.1 – Identificadores e palavras reservadas
3.2 – Elementos de comandos de atribuição
3.3 – Constantes
3.4 – Variáveis e suas declarações
3.5 – Declaração de tipos
3.6 – Operadores de expressões
3.7 – Funções e macros da biblioteca de C
3.8 – Expressões e atribuições especiais de C
3.1 – Identificadores e Palavras
Reservadas
3.1.1 – Níveis de complexidade de um programa
Nível de subprogramas: um programa é uma composição
de subprogramas e de declarações globais
Nível de comandos: um subprograma é uma composição de
declarações e de comandos
Este capítulo
Nível atômico: cada comando ou cada declaração é uma
composição de átomos do programa
Nível de caracteres: cada átomo é uma sequência de
caracteres
Átomos dos comandos de um programa já vistos:
Palavras reservadas: if, while, int, else, etc.
Nomes de variáveis (identificadores): i, n, fat, soma, etc.
Constantes: 12, 43.2, ‘#’, etc.
Cadeias de caracteres: “o fatorial de”, “media”, etc.
Operadores aritméticos e lógicos: +, -, *, <, <=, and, or,
etc.
Separadores: ;, {, }, etc.
Palavras reservadas:
Palavras que têm um papel especial dentro de certas
construções da linguagem
Não podem ser usadas em contextos fora dessas construções
Palavras reservadas da Linguagem C
Identificador:
É uma sequência de letras, dígitos e underscores (‘_’),
nunca iniciada por um dígito
Identificadores são usados para dar nome às variáveis,
constantes, funções e outras entidades de um programa
É boa prática escolher identificadores que sirvam de
mnemônicos para tais entidades
Exemplos: fat (para fatorial), soma, r (para razão), p (para
precisão)
O underscore é usado para substituir o espaço em branco
em nomes com mais de uma palavra
Exemplos: numero_de_eleitores, ler_matriz, etc.
Em muitas linguagens de programação, é proibido usar
palavras reservadas como identificadores
No padrão ANSI C, caso dois identificadores tenham os
mesmos 31 primeiros caracteres, eles representam a
mesma entidade
Capítulo III – Declarações e
Comandos de Atribuição
3.1 – Identificadores e palavras reservadas
3.2 – Elementos de comandos de atribuição
3.3 – Constantes
3.4 – Variáveis e suas declarações
3.5 – Declaração de tipos
3.6 – Operadores de expressões
3.7 – Funções e macros da biblioteca de C
3.8 – Expressões e atribuições especiais de C
3.2 – Elementos de comandos de
atribuição
Forma geral de um comando de atribuição em C:
Variável = Expressão;
Execução: calcula-se o valor de Expressão, atribuindo-o a
Variável
Possíveis elementos de uma expressão:
Constantes, variáveis, operadores, separadores e chamadas
de funções
O resultado de uma expressão deve ser um único valor, de
um determinado tipo:
Número inteiro, número real, caractere ou valor lógico
Capítulo III – Declarações e
Comandos de Atribuição
3.1 – Identificadores e palavras reservadas
3.2 – Elementos de comandos de atribuição
3.3 – Constantes
3.4 – Variáveis e suas declarações
3.5 – Declaração de tipos
3.6 – Operadores de expressões
3.7 – Funções e macros da biblioteca de C
3.8 – Expressões e atribuições especiais de C
3.3 – Constantes
Constantes que aparecem em expressões podem ser:
Inteiras
Reais
Caracteres
Simbólicas
Identificadores declarados como constantes
3.3.1 – Constantes inteiras
Constantes inteiras podem ser decimais, octais (ou
expressas na base 8) e hexadecimais (ou expressas na base
16)
Exemplos:
Obs.: em C, 0712 ≠ 712
• 0712 está em octal
• 712 está em decimal
Decimais: 5; 2314; -801
Octais: 011 ( (11)8 = (9)10 ); 0712 ( (712)8 = (458)10 )
Hexadecimais: 0x182 ou 0X182 ( (182)16 = (386)10) );
0xA27 ou 0xa27 ((A27)16 = (2599)10 )
3.3.2 – Constantes reais
Constantes reais podem ser expressas em notação decimal
ou exponencial
Exemplos:
Notação decimal: 13.47; 0.0072; .92; 47.
Notação exponencial: 5.2e20 (equivale a 5.2*1020);
0.03E-7 (equivale a 0.03*10-7)
3.3.3 – Constantes caracteres
Constante caractere: ocupa 1 byte; é expressa por um ou
dois caracteres entre apóstrofos (‘ ’)
Exemplos:
Um caractere: ‘a’, ‘B’, ‘+’, ‘;’
Dois caracteres: ‘\n’, ‘\t’, ‘\0’, ‘\\’
Observação: ‘\x’ = ‘x’ mas ‘\n’ ≠ ‘n’
Cada constante caractere tem sua representação interna, de
acordo com a tabela ASCII
Tabela ASCII básica:
0
0
nul
10
nl
1
2
3
4
5
6
7
8
9
bel
bs
ht
Em C, constantes
caracteres são encaradas
como inteiros de 8 bits
cr
20
esc
30
sp
!
“
#
$
%
&
‘
40
(
)
*
+
,
-
.
/
0
1
50
2
3
4
5
6
7
8
9
:
;
60
<
=
>
?
@
A
B
C
D
E
70
F
G
H
I
J
K
L
M
N
O
80
P
Q
R
S
T
U
V
W
X
Y
90
Z
[
\
]
^
_
`
a
b
c
100
d
e
f
g
h
i
j
k
l
m
110
n
o
p
q
r
s
t
u
v
w
120
x
y
z
{
|
}
~
del
São permitidas
expressões do tipo
‘a’ + ‘;’ + ‘5’ – 37
Esta expressão equivale
a
97 + 59 + 53 - 37 = 172
Em muitas linguagens,
isso não é permitido
Tabela de caracteres especiais e de controle:
Exemplo: escrita de caracteres de controle:
Seja a execução do seguinte trecho de programa:
#include <stdio.h>
#include <stdlib.h>
int main () {
printf
("abcde\nabcde\rxxx\nabcde");
- - - - }
Vídeo
abcde_
_
abcde
abcde
a
_
xxxde
bcde_
_
abcde_
_
Exemplo: Acionamento da campainha:
O seguinte programa emite alguns toques de campainha:
int main () {
int i;
i = 1;
while (i <= 15) {
printf ("\a");
i = i+1;
}
printf ("\n\n"); system ("pause"); return;
}
Exercício 3.3.3:
1. Dado o trecho de programa a seguir, dizer o que será
mostrado no vídeo, quando ele for executado, sem usar
ambiente de programação
int i = 1;
while (i <= 5) { printf ("i=%d;", i); i = i + 1; }
printf ("\n\n");
i = 11;
while (i <= 15) { printf ("i=%d;\r", i); i = i + 1; }
printf ("\n\n");
i = 21;
while (i <= 25) { printf ("i=%d;\n", i); i = i + 1; }
3.3.4 – Constantes cadeias de caracteres
Constante cadeia de caracteres: sequência de caracteres
comuns, especiais e/ou de controle, tudo entre aspas (“ ”)
Os caracteres ocupam bytes consecutivos na memória
Encerando a sequência, aparece um caractere ‘\0’
Exemplo: a cadeia de caracteres
“abc + xyz”
é composta dos caracteres:
‘a’, ‘b’, ‘c’, ‘ ’, ‘+’, ‘ ’, ‘x’, ‘y’, ‘z’, ‘\0’
Constantes e variáveis do tipo cadeia de caracteres não
figuram em expressões
Não comportam apenas um valor, mas vários valores do tipo
caractere
Serão abordadas no capítulo de variáveis indexadas
3.3.5 – Constantes simbólicas
São constantes criadas por diretivas define
Exemplo: as diretivas
#define pi 3.14159
#define raio 6
Podem ser usadas nas expressões dos comandos:
perimetro = 2 * pi * raio;
area = pi * raio * raio;
Como foi visto, o pré-processador substitui pi e raio por
3.14159 e 6, respectivamente
3.3.6 – Identificadores de constantes
A palavra const precedendo qualquer declaração de variáveis
torna constantes essas variáveis
O compilador não admite que elas sejam alteradas por
nenhum comando do programa
Exemplo:
c4 e c10 são constantes
Proibidos:
const int c4 = 4, c10 = 10;
printf ("c4 = %d; c10 = %d;", c4, c10);
scanf (“%d”, &c4);
c10 = c10 + 3;
Capítulo III – Declarações e
Comandos de Atribuição
3.1 – Identificadores e palavras reservadas
3.2 – Elementos de comandos de atribuição
3.3 – Constantes
3.4 – Variáveis e suas declarações
3.5 – Declaração de tipos
3.6 – Operadores de expressões
3.7 – Funções e macros da biblioteca de C
3.8 – Expressões e atribuições especiais de C
3.4 – Variáveis e suas Declarações
3.4.1 – Obrigatoriedade de declarações
Variável: identificador ao qual está associado um local de
memória, cujo valor pode ser alterado durante a execução
Declarações de variáveis: construções não-executáveis da
linguagem; servem para:
Dar nomes às variáveis
Reservar-lhes espaço na memória
Especificar o tipo de valores que elas devem guardar
Na grande maioria das linguagens de programação, toda
variável de um programa deve ser declarada antes de ser
referenciada por seus comandos
Fortran: linguagem que não exige declarações
Variáveis de nomes iniciados por I, J, K, L, M ou N: por
default seu tipo é inteiro
Variáveis de nomes iniciados por qualquer outra letra:
por default, seu tipo é real
Tipos primitivos de uma linguagem: tipos padronizados
para suas variáveis
Tipos primitivos da Linguagem C: vários tipos para
inteiros, reais e caracteres
C também possui artifícios para que o programador crie
novos tipos, conforme seus intentos
Forma geral das declarações de variáveis de tipo primitivo
em C:
Tipo Variável, Variável, ... , Variável;
3.4.2 – Variáveis inteiras
Tipos primitivos para inteiros:
Quando C foi projetada:
int – 2 bytes
short – 1 byte
long – 4 bytes
3.4.3 – Variáveis reais
Tipos primitivos para reais:
Sistemas de ponto-flutuante são imprecisos; exemplo:
float x = 3426171.8390176294015;
Comandos
double y = 3426171.8390176294015;
printf ("x = %24.19e;\ny = %24.19e;", x, y);
x = 3.4261717500000000000e+06;
y = 3.4261718390176296200e+06;
Resultado
Valor impresso de x: correto até o 7º
dígito significativo
Valor impresso de y: correto até o 16º
3.4.4 – Variáveis caracteres
Tipos primitivos para caracteres:
Variáveis desses tipos equivalem a inteiros de 1 byte
Podem fazer parte de expressões contendo inteiros e reais
Exemplo: escrita de expressões com variáveis caracteres
Programa
Resultado no vídeo
Formato %c: escreve o
caractere
Formato %d: escreve a
representação interna do
caractere
3.4.5 – Variáveis lógicas
Diferentemente de outras linguagens, C não disponibiliza
um tipo de variável específico para armazenar valores lógicos
(true e false)
No entanto, o programador pode utilizar, dessa linguagem, a
capacidade de criar novos tipos, para trabalhar com
variáveis e valores lógicos
Isso será ilustrado no Tópico 3.5 deste capítulo
3.4.6 – Declarações com inicialização
A Linguagem C possibilita que variáveis sejam inicializadas
em suas declarações
Programa
Exemplo:
Resultado no vídeo
3.4.7 – Outras classificações de variáveis
Variáveis escalares:
Destinadas a guardar apenas um valor, num dado
momento da execução
x
Todas as variáveis vistas até agora são escalares
Variáveis estruturadas:
Destinadas a guardar vários valores, num dado momento
da execução
A
Classificação das variáveis estruturadas
Variáveis indexadas:
São variáveis estruturadas homogêneas, ou seja, seus
valores são todos do mesmo tipo (vetores e matrizes)
B
Estruturas:
São variáveis estruturadas heterogêneas, ou seja, seus
valores podem ser de tipos diferentes
E
Até agora foram mencionadas e estudadas variáveis
destinadas a guardar valores (inteiros, reais, caracteres,
lógicos)
x
Ponteiros: variáveis escalares destinadas a guardar endereços
de outras variáveis
p
48.2
48.2
x
Há também variáveis indexadas de ponteiros e estruturas
em que alguns valores são ponteiros
B
E
Variáveis indexadas,
estruturas e ponteiros
serão estudados em
capítulos específicos
Capítulo III – Declarações e
Comandos de Atribuição
3.1 – Identificadores e palavras reservadas
3.2 – Elementos de comandos de atribuição
3.3 – Constantes
3.4 – Variáveis e suas declarações
3.5 – Declaração de tipos
3.6 – Operadores de expressões
3.7 – Funções e macros da biblioteca de C
3.8 – Expressões e atribuições especiais de C
3.5 – Declaração de Tipos
Declaração de tipos: possibilita ao programador criar seus
próprios tipos de variáveis
Exemplo: as declarações
typedef char letra, digito;
typedef int comprimento;
typedef float preco;
Permitem a declaração de
variáveis de tipos letra, dígito,
comprimento e preco, tais
como:
letra l1, l2, l3;
digito d1, d2;
comprimento c1, c2, c3;
preco p1, p2;
O uso de typedef para tipos escalares tem apenas a
vantagem de se ter nomes de tipos que reflitam melhor a
natureza das variáveis
Para variáveis indexadas e estruturas, uma boa vantagem é
a abreviação de longas declarações, como será visto em
capítulos específicos
Exemplo: simulação de variáveis e valores lógicos
Foi criado o tipo ‘logic’ e as
constantes ‘False’ e ‘True’
O tipo ‘char’ foi escolhido
como equivalente, pois é o
que ocupa menos memória
&& e ||: versões em C dos
operadores ‘and’ e ‘or’
Programa
Resultado