Prof. Francisco Reverbel
|
![]() |
Esta página estará em permanente construção até o final do semestre... |
Julho |
Agosto |
=
), comando de
repetição (while
) e funções de
entrada/saída (scanf
e printf
).
char
(8 bits)short int
ou simplesmente
short
(16 bits)int
(16 bits ou 32 bits, dependendo do
compilador usado)long int
ou simplesmente
long
(32 bits)long long int
ou simplesmente
long long
(64 bits)unsigned char
(8 bits)unsigned short int
ou simplesmente
unsigned short
(16 bits)unsigned int
ou simplesmente
unsigned
(16 bits ou 32 bits, dependendo
do compilador usado)unsigned long int
ou simplesmente
unsigned long
(32 bits)unsigned long long int
ou
simplesmente
unsigned long long
(64 bits)
if
-else
).if
-else
para
implementação de multiway branches ("encruzilhadas").
Identação de sequências de comandos
if
-else
. (Ainda não vimos programas
com comandos if
-else
encadeados.)/
e %
.
do
-while
. Outra solução do problema
acima, agora com do
-while
.for
.i++
, ++i
) e
decremento (i--
, --i
).&&
) e
"ou" (||
). Outra solução do problema acima,
agora usando o operador lógico &&
.||
.if
-else
).
a += b
,
a -= b
, a *= b
,
a /= b
, etc#define
).#include
e #define
).
int potencia(int base, int expoente) { ... }
.potencia
): Dados
dois números inteiros
x e y e dois números inteiros positivos
a e b, calcule o valor da expressão
xa + yb + (x - y)a - b.potencia
. Outro exemplo: Função recursiva
que devolve o fatorial de um inteiro não negativo.
char
: constantes tipo
char
('A'
), leitura/impressão de
char
s via scanf
/printf
com "%c"
.<ctype.h>
.scanf
) e impressão (printf
) dos
vários tipos de números inteiros:
signed char
e unsigned char
: "%c"
short
: "%hd"
int
: "%d"
long
: "%ld"
long long
: "%lld"
unsigned short
: "%hu"
unsigned
: "%u"
unsigned long
: "%lu"
unsigned long long
: "%llu"
getchar
e putchar
.
programa < arquivo
) e de
saída (linha de comando:
programa > arquivo
).
Combinação de teclas usada para indicar "fim de arquivo" pelo
teclado: contrl-d no Unix/Linux, control-Z no Windows).scanf
para ler algum dado numérico e depois usa
getchar
para ler caracteres: O scanf
não
consome todos os caracteres digitados, ele consome apenas os
caracteres que fazem parte do dado numérico que ele
pegou. Quaisquer caracteres digitados imediatamente depois desse
dado numérico (como por exemplo o '\n'
correspondente
à tecla ENTER) serão lidos pelas chamadas subsequentes à função
getchar
.
Setembro |
void
.
getchar
:
wc
do Unix/Linux.
float
(continuação): constantes e variáveis
float
, aritmética com números do tipo
float
, leitura de números do tipo float
("%f"
), impressão de expressões do tipo
float
("%f"
), conversão de tipos
(casting).float
em C): 32 bits, sendo
um bit de sinal, 8 de expoente e 23 de significante
double
em C): 64 bits, sendo
um bit de sinal, 11 de expoente e 52 de significante
long double
em C): 80
bits, sendo um bit de sinal, 15 de expoente e 64 de
significante
valor_absoluto
. Solução modificada, que usa a função
fabs
de <math.h>
.)?
expressão1 :
expressão2.
float valor_absoluto(float x) { return (x > 0) ? x : -x; }
sqrt(x)
da biblioteca
matemática da linguagem C
(#include <math.h>
),
escreva uma função que recebe as coordenadas cartesianas de
dois pontos no plano e devolve a distância entre esses
pontos.
potencia(b, n)
, que devolve
bn.
mdc
, que usa o algoritmo de Euclides para
calcular o máximo divisor comum de dois inteiros
dados. Escreva uma versão recursiva da função
mdc
.
Outubro |
mov ri,[rj]
mov [ri],rj
bp
(base
pointer). Endereçamento indireto com
deslocamento. Exemplos de instruções do CM16/22 com esse
modo de endereçamento:
mov r0,[bp+8]
mov [bp-6],r1
sp
(stack
pointer). Instruções do CM16/22 que usam a pilha de
execução:
push ri
(empilha palavra
contida em ri
)pop ri
(desempilha
palavra e a coloca em ri
)call addr
(chamada de
subrotina/procedimento/função)ret
(retorno de
subrotina/procedimento/função)
push
) e depois
restaurar (pop
) o conteúdo de algum registrador.
int *p;
), uso do operador
"endereço de" para inicializar ponteiros
(p = &i;
),
uso do operador unário *
("dereferência") para obter
o valor apontado (*p
é a "coisa apontada por
p
").void troca(int *p1, int *p2)
,
que recebe os endereços de duas variáveis inteiras e troca os
valores dessas variáveis.
switch
.
int busca(float x, float v[], int n);
x
no
vetor v
ou devolve -1 se x
não
aparece no vetor. O número de elementos do vetor é
n
.
"CCM0118"
).strlen
(da
biblioteca <string.h>
), que devolve o comprimento
de uma string dada.
"%s"
.fopen
e fclose
);fscanf
,
fgetc
e getc
);fprintf
,
fputc
e putc
).'+'
ou por um '-'
e por espaços em branco. Ela devolve o
int
correspondente. (Este é o exemplo
atoi
da seção 3.5 do K&R, que
apresenta uma implementação da função atoi
definida em
<stdlib.h>
. Ele mostra um uso do operador ternário
(condição) ?
valor1 :
valor2
e mostra também como deve se escrever um laço for
cujo corpo é vazio.)
Novembro |
static
para mudar o modo de alocação de
uma variável local.static
para reduzir a visibilidade de
uma variável global ou de uma função.
malloc
e free
.
malloc
).
soma
devolve uma
"matriz" alocada dinamicamente pela própria função.)
Dezembro |