Professional Documents
Culture Documents
i
n
g
u
a
g
e
m
C
1
L
i
n
g
u
a
g
e
m
C
Linguagem C
Treinamento em
Desenvolvimento de
Aplicativos para Sistemas
Embarcados
L
i
n
g
u
a
g
e
m
C
2
Bibliografia
Histrico
C resultado de um processo iniciado com a
linguagem BCPL. BCPL influenciou a linguagem
de nome B, que evoluiu posteriormente para C.
Projetada em 1972, nos laboratrios da BELL
(empresa de desenvolvimento de software
bsico), por Brian Kerninghan e Dennis Ritchie
para o UNX do PDP-11.
A simplicidade de sua implementao permitiu a
extenso da linguagem e a criao de compila-
dores C para praticamente todas as plataformas
de hardware e sistemas operacionais.
Em 1983 estabeleceu-se o padro ANS.
L
i
n
g
u
a
g
e
m
C
5
ntroduo
Caractersticas
Portabilidade
Linguagem estruturada e modular
Gerao de cdigo eficiente
Simplicidade
Possui apenas 32 palavras chaves
Uso de biblioteca de funes que implementam
os recursos de alto nvel para o programador
Linguagem de mdio nvel
Combina facilidades de uma linguagem de alto nvel com a
versatilidade e potencialidade do Assembly.
No efetua verificaes em tempo de execuo.
L
i
n
g
u
a
g
e
m
C
6
ntroduo
Aplicao
Sistemas Operacionais
Compiladores
Planilhas Eletrnicas
Editores de Texto
Banco de Dados
L
i
n
g
u
a
g
e
m
C
7
ntroduo
Linguagem de mquina: nica linguagem que o
computador entende, ou seja, que pode ser
diretamente executada pelo hardware. Ela formada
por cdigos binrios que representam as instrues e
dados. Tem uso difcil e tedioso. Pode-se dizer que,
para se programar em linguagem de mquina
necessrio um amplo conhecimento do hardware
utilizado.
Linguagem de alto nvel: conjunto de instrues
mais compatveis com a linguagem humana e com o
modo do ser humano pensar. Estas linguagens, na
sua maioria, so de uso genrico e no necessrio
ter conhecimento do hardware utilizado.
L
i
n
g
u
a
g
e
m
C
8
ntroduo
Todo programa escrito em linguagem de alto nvel
chamado de programa-onte ou cdigo onte.
O programa em linguagem de mquina, escrito ou
resultante, chamado de programa-ob!eto ou
cdigo ob!eto.
Todo o programa-onte" para ser executado, deve
obrigatoriamente, de alguma forma, ser traduzido para
programa-ob!eto# Neste momento que so
utilizados os compiladores e/ou interpretadores.
L
i
n
g
u
a
g
e
m
C
9
ntroduo
continue%
Fora a repetio (retorna ao incio do lao
e testa a condio).
Exemplo:
for('*3;'<+33;'//){
if ('86) !ontinue;
print(8d Bn#');
}
L
i
n
g
u
a
g
e
m
C
62
Comandos de desvio
goto%
Apesar das linguagens possurem estruturas de
controle eficientes, tambm disponibilizado o
comando de desvio. Deve-se ter um cuidado muito
grande, pois a sua utilizao em demasia ou de forma
incorreta tende a tornar os programas ilegveis.
A sua utilizao simples, basta declarar um rtulo
(identificador aceito pela linguagem C seguido de dois
pontos) e, de algum ponto do programa estabelecer o
desvio atravs da declarao goto rtulo;
Sintaxe: goto rtulo;
rtulo:
L
i
n
g
u
a
g
e
m
C
63
Comandos de desvio
Exemplo:
int '*+;
retorno1
printf(8d#');
'//;
if('<*+33) goto retorno;
L
i
n
g
u
a
g
e
m
C
64
Comandos de desvio
e.it10%
Assim como o comando brea& fora o trmino de um
lao, a funo e.it10 fora o trmino de execuo de
um programa, retornando ao sistema operacional.
Sintaxe:
void e.it1cdigo_de_erro0S
onde cdigo_de_erro utilizado para indicar o
estado de retorno. Quando for zero, indica trmino
normal de execuo e outros valores so utilizados
para indicar algum tipo de erro (retornado para a
varivel ERRORLEVEL em arquivos "batch do
DOS).
L
i
n
g
u
a
g
e
m
C
65
Lista de Exerccios
1. Anacleto tem 1,50 metro e cresce 2 centmetros por
ano, enquanto Felisberto tem 1,10 metro e cresce 3
centmetros por ano. Calcule e exiba quantos anos
sero necessrios para que Felisberto seja maior
que Anacleto.
2. mprima os nmeros perfeitos menores de 100.
Nota: Nmero perfeito aquele cuja soma de seus
divisores, exceto ele prprio, igual ao nmero.
Exemplo: 6 perfeito porque 1 + 2 + 3 = 6.
3. Calcule e apresente o valor de S no seguinte
somatrio:
S = 1/225 2/196 + 4/169 8/144 + ... + 16384/1
L
i
n
g
u
a
g
e
m
C
66
Ementa
ntroduo
Operadores e Expresses
Funes de E/S
Estruturas de Controle
Vetores e Matrizes
Strings
Ponteiros
Funes
Estruturas
Alocao Dinmica de Memria
Arquivos
L
i
n
g
u
a
g
e
m
C
67
Vetor
Matrizes de Ponteiros:
main(){
!"ar *erroS6T*{arWui0o ine'istenteBn#
erro na leituraBn};
printf (8s# erroS3T);
printf (8s# erroS+T);
}
L
i
n
g
u
a
g
e
m
C
96
Exerccios
1. Usando ponteiros, faa um programa que
imprima uma string invertida.
2. Usando ponteiros, faa um programa que
preencha uma matriz 10x10 de inteiros
com os nmeros de 1 a 100.
3. Usando ponteiros, faa um programa que
leia duas strings e as concatene numa
terceira string.
L
i
n
g
u
a
g
e
m
C
97
Teste
1. Leia 10 strings para uma matriz de string. Ordene e
imprima as strings em ordem alfabtica.
2. Na teoria de sistemas define-se como elemento
minimax de uma matriz o menor elemento da linha
em que se encontra o maior elemento da matriz.
Escreva um programa que leia uma matriz 4 x 4 e
determine e imprima o seu elemento minimax.
3. Escreva um programa que converta um numero em
notao romana para notao decimal. Considere
nmeros menores que 1000.
L
i
n
g
u
a
g
e
m
C
98
Ementa
ntroduo
Operadores e Expresses
Funes de E/S
Estruturas de Controle
Vetores e Matrizes
Strings
Ponteiros
Funes
Estruturas
Alocao Dinmica de Memria
Arquivos
L
i
n
g
u
a
g
e
m
C
99
Funes
uma sub-rotina que realiza uma tarefa especfica.
Um programa em C uma coleo de funes.
Forma geral de uma funo:
tipo_retorno nome(lista_parmetros)
{
// corpo da funo
}
tipo_retorno especifica o tipo de dado retornado pela
funo. Pode ser qualquer tipo vlido exceto um array.
nome especifica o nome da funo.
lista_parmetros uma seqncia de pares de tipo e
identificador separados por vrgulas. So as variveis que
recebem o valor dos argumentos passados para a funo
quando chamada.
L
i
n
g
u
a
g
e
m
C
100
Funo sem parmetro
// Hste programa !ontCm duas funZes1 main() e
min"afun!()
0oid min"afun!(); // prottipo de min"afun!()
// Go "7 par[metros formais
int main(){
printf(Hm main() Bn);
min"afun!(); // !"ame min"afun!()
printf(>e 0olta a main());
}
// Hsta C a definio da funo2
0oid min"afun!(){
printf(>e dentro de min"afun!()Bn);
}
?m main()
De dentro de minaCfunc()
De volta a main()
L
i
n
g
u
a
g
e
m
C
101
Funo com parmetro
0oid bo'(int lengt"# int Ridt"# int "eig"t);
// prottipo de bo'() !om 5 par[metros formais
int main(){
bo'(P# 63# -); // passa argumentos para bo'
bo'(6E# 53# 6));
bo'(5# )# -);
}
// Iomputa o 0olume da !ai'a2
0oid bo'(int lengt"# int Ridt"# int "eig"t){
printf(Folume da !ai'a e 8d# lengt"*Ridt"
*"eig"t);
} // Ls par[metros re!ebem os 0alores dos
argumentos passados para bo'()2
L
i
n
g
u
a
g
e
m
C
102
O retorno de valores
Uma funo pode retornar um valor para seu
chamador.
Para retornar um valor usamos return vaor.
O tipo do valor retornado deve ser compatvel
com o tipo de retorno declarado na funo. Se
no for, um erro em tempo de compilao
ocorrer.
L
i
n
g
u
a
g
e
m
C
103
Funo com retorno
int bo'(int lengt"# int Ridt"# int
"eig"t); // bo'() agora retorna um
inteiro
int main(){
int 0olume;
0olume*bo'(P# 63# -); // o 0alor de retorno
de bo'() C atribu\do a 0olume2
printf(L Folume da !ai'a e 8d# 0olume);
}
// Iomputa o 0olume da !ai'a2
int bo'(int lengt"# int Ridt"# int "eig"t){
return lengt"*Ridt"*"ieg"t;
} // bo'() retorna o 0olume da !ai'a para
main()
D ;olume da cai-a e 320
L
i
n
g
u
a
g
e
m
C
104
Regras de Escopo
X
Existem trs tipos de variveis: variveis locais,
parmetros formais e variveis globais.
As regras de escopo regem a visibilidade e o
tempo de vida de cada um desses tipos.
Variveis Locais
Prottipos:
int putR(int i# aD`H *fp);
int getR(aD`H *fp);
Header: stdio.h