Académique Documents
Professionnel Documents
Culture Documents
Fundamentos da Linguagem
de Programao C
1. OBJETIVOS
Elaborar programas com a linguagem de programao C.
Criar programas que possibilitem a exibio e o recebimento de informaes digitadas
pelo usurio.
Criar programas que utilizem expresses aritmticas e lgicas.
2. CONTEDOS
Antes de iniciar o estudo desta unidade, importante que voc leia as orientaes a se1) Antes de iniciar o estudo desta unidade, essencial que voc tenha instalado e configurado o ambiente de desenvolvimento. Para facilitar a instalao, sugerimos que
opte pelo ambiente Code::Blocks.
56
Computao
2) Para o estudo desta unidade, sugerimos que voc leia o Captulos 1, Conceitos bsicos e o Captulo 2, Estrutura sequencial, da obra: ASCENCIO, A. F. G. Fundamentos
da programao de computadores: algoritmos, Pascal e C/C++. So Paulo: Prentice
Hall, 2002.
3) Ao final da unidade, voc encontrar um conjunto de exerccios resolvidos. fundamental para seu aprendizado que voc os codifique no ambiente de sua preferncia.
Para verificar o funcionamento correto dos programas, voc pode comparar a sada da
implementao realizada por voc com as sadas ao final de cada algoritmo, indicadas
como "Resultado da execuo do programa".
4. INTRODUO UNIDADE
Nesta unidade, iniciaremos nosso estudo sobre o desenvolvimento de programas utilizando a linguagem de programao C. Antes de comearmos, fundamental que voc j tenha
instalado e configurado seu ambiente de desenvolvimento (os passos para instalao esto descritos na Unidade 1).
Veremos, agora, um pouco de histria.
A linguagem de programao C, ou simplesmente linguagem C, foi inventada e implementada na dcada de 1970 por Dennis Ritchie. Inicialmente, foi utilizada para o desenvolvimento de
programas para o sistema operacional Unix. Essa linguagem nasceu a partir de uma linguagem
mais antiga chamada BCPL (desenvolvida por Martin Richards), que influenciou outra linguagem
chamada B (inventada por Ken Thompson). A evoluo da linguagem B levou ao desenvolvimento da linguagem C (SCHILDT, 1997).
A linguagem C permite a construo de programas em diversos sistemas operacionais,
como Windows, Linux, Unix, Solaris etc. No entanto, ela no multiplataforma, o que significa,
por exemplo, que os programas para Windows no funcionam em outros sistemas operacionais.
Para que um programa escrito em Windows funcione em outros sistemas operacionais, ele precisa ser recompilado.
Para conhecer um pouco mais sobre a linguagem C, ao longo desta unidade teremos a
oportunidade de iniciar os conceitos introdutrios para a construo de programas que a utilizam. Para isso, veremos desde os principais conceitos para entrada e sada de informaes at
os operadores aritmticos e lgicos.
Dessa forma, observaremos, finalmente, como possvel transformar algoritmos em programas.
Bom estudo!
#include <stdio.h>
2
3
4
5
6
main()
{
}
Claretiano -
REDE DE EDUCAO
57
A primeira linha do programa contm uma instruo utilizada para a incluso de bibliotecas. As bibliotecas, por sua vez, possuem funes que o programador pode utilizar para facilitar
o desenvolvimento do seu programa. Por exemplo, a linguagem C possui uma biblioteca especfica para funes matemticas (math.h). Nessa biblioteca, voc encontra funes para calcular
raiz quadrada, seno, cosseno, tangente, logaritmo, dentre outras.
Suponha que voc est construindo um programa para calcular a raiz quadrada de um
nmero. Com a utilizao da biblioteca matemtica, no preciso estudar como a raiz quadrada
de um nmero calculada. Em vez disso, voc apenas utiliza a funo para o clculo da raiz quadrada (sqrt). Essa funo calcula a raiz e retorna o resultado. Simples, no?!
Depois de declaradas as bibliotecas, um programa em C deve obrigatoriamente possuir
uma funo principal (main). A funo principal (ou bloco principal) responsvel por determinar o local em que os comandos do programa so escritos.
Para definirmos um bloco principal, utilizamos a instruo main(), seguida de um smbolo
de abre chaves {. A partir desse ponto, todas as instrues para o funcionamento do programa
devem ser definidas. Ao final das instrues, devemos fechar o bloco principal, com o smbolo
de fecha chaves }.
O comando printf (Linha 5 da estrutura anterior) uma das principais instrues da linguagem C. Por meio dele, podemos exibir informaes na tela. Esse comando pode ser utilizado
diversas vezes ao longo do programa.
O programa a seguir demonstra uma verso alternativa para uma estrutura bsica de
um programa na linguagem C. Veja no exemplo que, em vez de utilizarmos apenas a instruo
main(), usamos, tambm, int main(). Alm disso, uma instruo return 0 foi adicionada ao programa.
comum desenvolvermos programas que executam funes e retornam resultados. Em
geral, esses resultados so retornados para o sistema operacional. Quando definimos o bloco
principal como int main(), significa que o resultado da execuo desse bloco ser um nmero inteiro. J a instruo return 0 indica que o valor 0 retorna com a execuo do programa. Convm
ressaltar que poderamos utilizar qualquer valor de retorno.
Assim, quando escrevemos programas na linguagem C que no retornam valores, podemos receber mensagens de aviso durante o processo de compilao. Isso ocorre, pois alguns
compiladores utilizam as especificaes definidas pela ANSI (American National Standards
Institute). Segundo a ANSI, a estrutura bsica de um programa na linguagem C deve conter as
seguintes instrues:
1
2
3
4
#include <stdio.h>
int main()
{
5
6
7
return 0;
58
Computao
PROGRAMA
inicio
fimalgoritmo
Pensando na estrutura bsica de um algoritmo, voc pde observar algumas correspondncias com um programa.
Claretiano -
REDE DE EDUCAO
59
3) float: esse tipo de dado utilizado para manipulao de nmeros reais. Um nmero
real aquele que pode possuir uma parte decimal, ou seja, nmeros com casas decimais, por exemplo: 5,32; 10,28; -15,19; 0,93. Um dado do tipo float ocupa 32 bits (4
bytes) de memria e possui 6 dgitos de preciso (0.123456).
Vale ressaltar que os nmeros so especificados segundo o padro americano. Portanto, a separao de casas decimais realizada por meio de ponto (.) e no de vrgula
(,), como estamos acostumados no padro brasileiro. Por exemplo, o valor real 324,56
deve ser especificado como 324.56.
4) double: esse outro tipo de dado que pode ser utilizado para armazenar valores reais.
A principal diferena entre o tipo float e double com relao preciso. Enquanto o
tipo float possui seis dgitos de preciso, o tipo double tem preciso de at 10 dgitos
(0.1234567890).
Nesse caso, o armazenamento de uma informao em memria com o tipo double
ocupa 64 bits (8 bytes).
5) void: esse tipo de dado utilizado para representar ausncia de valor. No comum
associarmos o tipo void a uma determinada informao dentro do programa. Ele
mais utilizado para definir valores de retorno de funes ou para criao de ponteiros.
Esses tpicos sero aprofundados nas prximas unidades.
O Quadro 2 apresenta os principais tipos de dados da linguagem C. Observe.
Quadro 2 Tipos de dados da linguagem C.
PRINCIPAIS TIPOS DE DADOS
TIPO DE DADOS
LINGUAGEM C
TIPO DE DADOS
ALGORITMO
TAMANHO
APROXIMADO
EXEMPLO
int
inteiro
2 bytes
523
0
892
char
caractere
1 byte
a
4
$
float
real
4 bytes
5.234432
0.9123453
9832.332
double
real
8 bytes
1.234823882
0.00003234
29382.232423
void
60
Computao
Ao longo da execuo do programa, uma varivel, como o prprio nome indica, pode ter
seu valor modificado. A alterao do valor contido em uma varivel realizada por meio do operador de atribuio. Esse operador representado pelo smbolo de igualdade (=).
Dentro da estrutura bsica de um programa escrito na linguagem de programao C, a
declarao das variveis sempre deve ser realizada dentro do bloco principal do programa, logo
aps o smbolo de abre chaves {, que indica o incio do bloco.
Para declararmos uma varivel, sempre devemos indicar, inicialmente, qual o seu tipo
(int, char, float, double etc.), e, em seguida, qual o seu nome. Tambm no podemos nos esquecer de inserir um smbolo de ponto-e-vrgula ao final da instruo. A sintaxe da declarao
de variveis definida do seguinte modo:
<tipo_da_varivel>
<nome_da_varivel>;
No comando de atribuio, o nome da varivel que receber o valor deve sempre ser colocado ao lado esquerdo do operador de atribuio. Do lado direito, devemos especificar qual
valor, ou expresso, ser armazenado na varivel. Por fim, devemos inserir o smbolo de ponto-e-vrgula para indicar o final da instruo. O comando de atribuio possui a seguinte sintaxe:
<nome_da_varivel>
<valor> ou <operao>;
/*
*/
7
8
9
10
11
12
13
14
15
16
idade = 22;
17
18
19
20
21
22
23
return 0;
Fim cdigo 1
Claretiano -
REDE DE EDUCAO
61
/*
* outra varivel.
*/
9
10
11
12
13
14
15
16
17
62
Computao
18
a = 10;
19
b = 20;
20
c = 30;
21
22
23
24
25
26
27
28
a = b;
29
b = c;
30
c = a;
31
// a recebe o valor 20
// b recebe o valor 30
// c recebe o valor 20
32
33
34
35
36
37
38
39
return 0;
Fim cdigo 2
Resultado da execuo do programa:
A
B
C
A
B
C
=
=
=
=
=
=
10
20
30
20
30
20
Veja que, no Cdigo 2, na Linha 16, so declaradas trs variveis do tipo int. Como essas
variveis so do mesmo tipo, no precisamos declar-las em linhas separadas, como mostrado
a seguir:
16
17
18
int a;
int b;
int c;
Da forma como foi declarada na Linha 16, economizamos algumas linhas de cdigo. Entretanto, essa simplificao pode ser realizada apenas com variveis do mesmo tipo.
Nas linhas de 19 a 21, so realizadas as atribuies de valores s variveis a, b, c, respectivamente, 10, 20 e 30. Nas linhas de 24 a 26, os valores armazenados nas variveis so exibidos
na tela.
As linhas de 29 a 31 ilustram outra maneira de atribuio, na qual, em vez de atribuir valores diretamente, foram atribudos os valores contidos nas variveis. Esse tipo de atribuio ser
muito utilizado ao longo dos exemplos que estudaremos.
Claretiano -
REDE DE EDUCAO
63
/*
*/
7
8
9
10
11
12
13
14
15
16
17
18
19
20
return 0;
Fim cdigo 3
Note que, nesse exemplo, uma varivel do tipo inteiro declarada (Linha 14), porm,
nenhum valor atribudo a ela. Em seguida, na Linha 17, o contedo dessa varivel exibido
na tela. Quando executamos esse programa pela primeira vez, temos o seguinte resultado (o
resultado pode variar de computador para computador):
Resultado da execuo do programa:
A = 2147299328
Veja que, cada vez que o programa executado, a varivel a recebe um valor diferente.
Esse fato demonstra que as variveis, quando so criadas, possuem um valor aleatrio. Por isso,
fundamental que sejam atribudos valores a todas as variveis declaradas.
Outra maneira de atribuir valores s variveis durante sua declarao. Dessa forma, podemos declarar e inicializar o valor da varivel. O Cdigo 4 do programa a seguir demonstra
como possvel atribuir valores s variveis durante a sua declarao.
64
Computao
Cdigo 4
1
/*
*/
7
8
9
10
int main()
11
12
13
14
15
16
17
18
19
20
21
22
23
return 0;
Fim cdigo 4
Resultado da execuo do programa:
A = 10
B = 20
C = 30
Constantes
As constantes so um recurso utilizado na construo dos programas para definir que uma
determinada informao no pode ter seu valor alterado. como se voc atribusse um valor a
uma varivel e esse valor no pudesse ser modificado ao longo da execuo do programa.
A declarao de uma constante segue praticamente a mesma sintaxe da declarao de
uma varivel. No entanto, precisamos adicionar a palavra reservada const antes do tipo da varivel. Assim, a sintaxe de uma constante tem a seguinte estrutura:
Const <tipo_da_varivel>
<nome_da_constante> = valor;
/*
* de constantes
Claretiano -
REDE DE EDUCAO
*/
65
7
8
9
10
11
12
13
// declarao da constante
const int a = 10;
14
15
16
17
18
19
20
return 0;
Fim cdigo 5
Resultado da execuo do programa:
A = 10
Na Linha 14, temos a definio de uma constante do tipo inteiro denominada a. Note que,
alm de especificarmos o nome da constante, temos de definir, tambm, qual valor est associado a ela. A atribuio de um valor a uma constante pode ser realizada apenas no ato da sua
declarao.
A tentativa de atribuir um valor a uma constante em outras partes do programa gera um
erro de compilao, e, com isso, o programa no pode ser executado. Por exemplo, se adicionarmos a instruo a seguir na Linha 15 do programa, o cdigo-fonte no ser compilado.
15
a = 20;
A mensagem indica que foi atribudo um valor a uma varivel somente de leitura, ou seja,
uma constante.
66
Computao
Identificadores
Os nomes utilizados para definir variveis e constantes so chamados de identificadores.
Esses nomes, tambm, sero utilizados para especificar os nomes de funes, o que aprenderemos nas prximas unidades.
importante observar que a linguagem de programao C faz diferena entre letras maisculas e minsculas. Isso significa que um identificador definido com letras minsculas, por
exemplo, idade, diferente de um identificador especificado com letras maisculas, tal como
IDADE. O termo comumente utilizado para diferenciao de maisculas e minsculas case-sensitive.
Por exemplo, as linhas a seguir representam trs variveis que, apesar de possurem o
mesmo nome de identificao, so consideradas diferentes pela linguagem de programao C.
int numero;
int Numero;
int NUMERO;
EXEMPLO DE UTILIZAO
int A;
a = 246;
numero
int numero = 5;
Numero
A32
A32 = a;
usuario_01
usuario_01 = 23;
IDADE
IDADE = 25;
$ano
$ano = 2009;
PROBLEMA
5b
e 12
x-y
nota()
main
Int
operao
Claretiano -
REDE DE EDUCAO
67
TIPO DE DADOS
%c
%s
%d ou %i
int
%f
float
%lf
double
%e
%x
%u
endereo de memria
A principal instruo para entrada de dados na linguagem C o comando scanf. Esse comando faz parte da biblioteca stdio.h; assim, necessariamente, todo programa que utilizar esse
comando incluir essa biblioteca.
Para utilizao desse comando, devemos indicar qual tipo de dados ser recebido por
meio de um especificador de formato. Alm disso, uma varivel deve ser informada para receber o valor digitado pelo usurio. O Cdigo 6, do programa apresentado a seguir, ilustra a utilizao do comando scanf para leitura de dados.
Cdigo 6
1
/*
68
Computao
*/
7
8
9
10
11
12
13
14
15
16
17
// entrada de dados
18
19
20
21
22
23
24
25
26
return 0;
Fim cdigo 6
Resultado da execuo do programa:
No exemplo do Cdigo 6, voc pde observar a utilizao do comando scanf para entrada
de dados (Linha 19). Note que a informao recebida do usurio do tipo inteiro, e, por isso, foi
necessria a utilizao do especificador de formato %i.
Quando utilizamos o comando scanf, dois pontos precisam ser destacados:
O especificador de formato deve sempre ser indicado entre aspas duplas, como, por
exemplo, %i.
Uma varivel deve ser informada para receber o valor digitado pelo usurio. Alm disso, necessrio que o smbolo & seja especificado antes do nome da varivel, como,
por exemplo, &numero. A utilizao do smbolo & significa que o valor recebido ser
armazenado no endereo de memria da varivel numero. importante destacar que
a omisso do smbolo & no comando scanf um dos principais erros cometidos pelos
iniciantes em programao.
O Cdigo 7 demonstra a utilizao do comando scanf para entrada de dados do tipo float.
Cdigo 7
1
/*
Claretiano -
REDE DE EDUCAO
69
*/
7
8
9
10
11
12
13
14
15
16
17
// entrada de dados
18
19
20
21
22
23
24
media = (nota1+nota2)/2;
25
26
27
28
29
30
31
32
return 0;
Fim cdigo 7
Note que no exemplo do Cdigo 7 utilizamos uma varivel para calcular a mdia aritmtica entre as notas informadas pelo usurio (Linha 25). Como as variveis de entrada so do tipo
float, os especificadores de formato utilizados foram %f.
Como o tipo de dados float tem preciso de seis dgitos, o resultado da mdia exibido
com seis casas decimais (0.000000). Em breve, aprenderemos como formatar corretamente a
sada, de acordo com o nmero de casas decimais que desejamos.
O exemplo do Cdigo 8 demonstra a utilizao do comando de entrada scanf para o tipo
de dados char. Lembre-se de que esse tipo de dados empregado na manipulao de caracteres.
Cdigo 8
1
/*
70
Computao
*/
7
8
9
#include <stdio.h>
10
int main()
11
12
13
14
15
16
17
18
scanf(%c,&tamanho);
19
20
21
22
23
24
25
Fim cdigo 8
Outra forma de ler caracteres do teclado por meio do comando getchar, o qual realiza a
leitura de um caractere informado pelo usurio e aguarda o pressionamento da tecla enter. No
Cdigo 8, podemos substituir a utilizao do comando scanf pelo comando getchar modificando apenas a Linha 18.
18
tamanho = getchar();
Voc tambm pode realizar a leitura de caracteres por meio do comando getch, que funciona exatamente da mesma forma que o comando getchar, com uma nica diferena: o usurio no precisar pressionar a tecla enter. A leitura realizada automaticamente. Voc pode
alterar o programa anterior para utilizao do getch.
18
tamanho = getch();
O tipo de dados char tambm pode ser utilizado para leitura de conjuntos de caracteres.
Esses conjuntos so conhecidos em programao como strings. Para realizar a leitura de uma
string, necessrio informar o seu nmero de caracteres. Para identificar o final da string,
colocado um caractere especial NULL, representado por \0.
Claretiano -
REDE DE EDUCAO
71
Por exemplo: a instruo a seguir declara uma varivel do tipo char capaz de armazenar
um conjunto de at 10 caracteres.
char nome[10];
Suponha que essa varivel receba a seguinte informao: Joo da Silva. Visualmente, temos a seguinte representao:
J
d
5
a
6
S
8
i
9
10
11
12
\0
13
14
/*
*/
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
return 0;
Fim cdigo 9
Resultado da execuo do programa:
Informe seu nome: Joao
Ola, Joao seja bem-vindo!
72
Computao
/*
*/
7
8
9
10
11
12
13
14
15
16
17
18
gets(nome);
19
20
21
22
23
return 0;
Fim cdigo 10
Claretiano -
REDE DE EDUCAO
73
importante observar que todas as informaes literais exibidas pelo comando printf devem ser colocadas entre aspas duplas.
O comando printf tambm pode ser utilizado para exibir o contedo de variveis. Para
isso, basta indicar qual o tipo de varivel ser exibida por meio de um especificador de formato.
Por exemplo, para exibir uma varivel do tipo inteiro, utilizamos o especificador %i:
1
2
printf(Numero = %i , numero);
Voc pode notar que, quando o programa est sendo executado, o especificador de formato substitudo pelo contedo da varivel. No exemplo anterior, o especificador de formato
%i substitudo pelo valor 10, contido na varivel nmero.
Podemos utilizar o comando printf para exibir diversas informaes ao mesmo tempo.
Para isso, utilizamos a regra anterior, em que indicamos qual tipo de dados ser apresentado.
Nesse caso, para cada varivel exibida na tela, devemos inserir um especificador de formato. Por
exemplo:
1
2
int A = 10;
int B = 20;
int C = 30;
Alm disso, podemos mesclar a exibio de tipos de dados, ou seja, em um mesmo printf,
podemos apresentar dados de tipos diferentes.
74
Computao
int A = 10;
char B = F;
2
3
float C = 125.80;
Podemos, ainda, utilizar o comando printf para exibir o resultado de uma expresso. Por
exemplo:
int A = 10;
int B = 20;
2
3
int C = 30;
printf(Resultado = %i , (A+B+C));
Como aprendemos anteriormente, toda varivel ocupa uma posio na memria principal. Utilizando o comando printf e o especificador de formato %u, podemos visualizar qual o
endereo de memria em que a varivel foi armazenada. O exemplo no Cdigo 11 demonstra
esse recurso. Perceba que, alm de utilizar o especificador de formato, precisamos utilizar o
operador & na varivel.
Cdigo 11
1
/*
*/
7
8
9
10
11
#include <stdio.h>
int main()
{
12
int numero;
13
14
printf(Informe um numero: );
scanf(%i, &numero);
15
16
17
18
19
20
return 0;
Fim cdigo 11
Claretiano -
REDE DE EDUCAO
75
O comando printf suporta um conjunto de caracteres especiais que so chamados de cdigos de barra invertida. Esses caracteres podem ser utilizados para controlar o modo como as
informaes sero exibidas na tela.
O Quadro 6 apresenta os principais cdigos de barra invertida e seus respectivos significados.
Quadro 6 Cdigos de barra invertida.
PRINCIPAIS CDIGOS DE BARRA INVERTIDA
CDIGO
SIGNIFICADO
\n
\t
\\
\a
No Cdigo 12, o programa apresenta a utilizao dos principais cdigos de barra invertida.
Cdigo 12
1
/*
*/
7
8
9
10
11
12
13
14
15
16
17
printf(\n);
18
19
20
21
22
23
24
printf(\n);
25
26
// aspas duplas
27
28
29
// aspas simples
76
Computao
30
31
32
33
34
35
// alerta (beep)
printf(Atencao! \a );
36
37
38
39
return 0;
Fim cdigo 12
Idade
21
32
28
Quando utilizamos o comando printf, podemos controlar a largura das informaes que
sero exibidas na tela. Para isso, podemos utilizar alguns caracteres entre o smbolo de i% e o
caractere que representa o formato. O exemplo do Cdigo 13 ilustra a utilizao desse tipo de
controle:
Cdigo 13
1
/*
*/
7
8
9
10
11
12
13
/*
14
15
*/
16
Claretiano -
REDE DE EDUCAO
17
18
19
20
21
22
23
24
25
26
27
28
29
//alinhamento esquerda
30
31
32
33
34
printf(\n\n);
35
36
/*
37
38
*/
39
40
41
42
43
44
//alinhamento esquerda
45
46
47
48
49
50
return 0;
Fim cdigo 13
77
78
Computao
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
280
1360
00005
00064
00280
01360
5
64
280
1360
Jose
Antonio
Ana
Jose
Antonio
Ana
Jose
Antonio
Ana
/*
* do controle de preciso
*/
7
8
9
10
11
12
13
float x = 1.23456;
14
15
// 1.2
16
// 1.23
17
// 1.235
18
// 000001.235
19
20
21
return 0;
Fim cdigo 14
Claretiano -
REDE DE EDUCAO
79
=
=
=
=
1.2
1.23
1.235
000001.235
Alm do comando printf, temos mais dois comandos que podem ser utilizados para exibio de informaes na tela:
putchar: utilizado, exclusivamente, para exibio de caracteres (char) na tela.
puts: utilizado para exibio de conjuntos de caracteres (strings) na tela.
Observe, no Cdigo 15, a aplicao desses comandos.
Cdigo 15
1
/*
*/
7
8
9
10
11
12
13
char nome[20];
char sexo;
14
15
16
17
printf(Informe o nome: );
18
gets(nome);
19
20
21
22
23
24
printf(Seu nome e: );
25
puts(nome);
26
printf(Seu sexo e: );
27
putchar(sexo);
28
29
30
return 0;
Fim cdigo 15
80
Computao
8. EXPRESSES ARITMTICAS
Os computadores so especialistas na resoluo de clculos matemticos. Para realizar
esses clculos, eles utilizam as expresses matemticas. Essas expresses so formadas por um
conjunto de smbolos especiais conhecidos como operadores aritmticos.
Observe os principais operadores aritmticos da linguagem C, listados no Quadro 7.
Quadro 7 Operadores aritmticos da linguagem C.
PRINCIPAIS OPERADORES ARITMTICOS DA LINGUAGEM C
OPERAO
OPERADOR
EXEMPLO
Adio
10 + 20
30
Subtrao
92
Multiplicao
2*4
Diviso
6/3
5/3
O Cdigo 16 ilustra a utilizao de operadores aritmticos. Esse programa tem como objetivo a converso entre temperaturas em Fahrenheit para graus Celsius.
Cdigo 16
1
/*
*/
7
8
9
10
11
12
13
14
15
float temperatura;
float conversao;
16
17
18
Claretiano -
REDE DE EDUCAO
81
19
20
//converso de F para C
21
22
23
//resultado
24
25
26
27
return 0;
Fim cdigo 16
/*
* do operador de mdulo
*/
7
8
9
10
11
12
13
14
15
16
17
18
19
scanf(%i, &num1);
20
21
scanf(%i, &num2);
22
23
24
divisao = num1/num2;
25
26
27
28
29
resto = num1%num2;
82
Computao
30
31
32
33
return 0;
Fim cdigo 17
Resultado da execuo do programa:
Informe o primeiro numero: 5
Informe o segundo numero: 3
5 dividido por 3 = 1
O resto da divisao e igual a 2
Qualquer tipo de expresso matemtica pode ser resolvida utilizando os operadores aritmticos. Entretanto, devemos obedecer ordem dos parnteses utilizados nas expresses.
Como exemplo, considere a expresso a seguir:
(10 + ( 20 / 3) )
26
+
5*
( 4* ( 3 8 ) )
( 9%2 )
12
/*
*/
7
8
9
10
11
12
13
float expressao;
14
15
16
17
18
19
20
21
return 0;
Fim cdigo 18
Claretiano -
REDE DE EDUCAO
83
OPERADOR
Potenciao raiz
* /
Em algumas expresses, podemos ter operadores com a mesma prioridade. Nesses casos,
resolvemos inicialmente os operadores que esto mais esquerda, e, em seguida, os operadores mais direita. Por exemplo, considere a seguinte expresso matemtica:
10 + 20 6* 2 / 4
resultado = 10+20-6*2/4;
numero++;
printf(Numero = %i n, numero);
Resultado da execuo do programa:
Nmero = 11;
84
Computao
numero--;
printf(Numero = %i n, numero);
Resultado da execuo do programa:
Numero = 9;
/*
*/
7
8
9
10
11
12
13
14
15
int num1;
int num2;
16
17
18
19
// operador ps-fixado
num1 = 10;
num2 = num1++;
20
21
22
23
24
25
26
// operador pr-fixado
num1 = 10;
num2 = ++num1;
27
28
29
Claretiano -
REDE DE EDUCAO
30
31
32
85
return 0;
Fim cdigo 19
Resultado da execuo do programa:
Numero 1 = 11
Numero 2 = 10
Numero 1 = 11
Numero 2 = 11
Note que, na operao de atribuio, em vez de utilizarmos apenas o operador =, foi empregado o operador +=. Essa operao equivalente seguinte expresso:
2
86
Computao
OPERADOR
EXEMPLO
EQUIVALENTE
Adio
+=
num += 10;
Subtrao
num = 10;
Multiplicao
*=
num *= 10;
Diviso
/=
num /= 10;
Mdulo
%=
num %= 10;
/*
*/
7
8
9
10
11
12
13
14
int num;
15
16
17
printf(Operador: += \n);
num = 10;
18
num += 5;
19
printf(Numero = %i \n\n,num);
20
21
22
printf(Operador: -= \n);
num = 10;
23
num -= 2;
24
printf(Numero = %i \n\n,num);
25
26
27
28
printf(Operador: *= \n);
num = 10;
29
num *= 5;
30
printf(Numero = %i \n\n,num);
31
32
33
printf(Operador: /= \n);
num = 10;
34
num /= 2;
35
printf(Numero = %i \n\n,num);
Claretiano -
REDE DE EDUCAO
87
36
37
38
printf(Operador: %= \n);
num = 10;
39
40
num %= 7;
41
printf(Numero = %i \n\n,num);
42
43
44
return 0;
Fim cdigo 20
9. EXPRESSES LGICAS
As expresses lgicas permitem ao programador estabelecer relaes entre valores ou
variveis dentro dos programas. Uma expresso lgica sempre resulta em um valor lgico, que
pode ser considerado verdadeiro ou falso.
Quando trabalhamos com expresses lgicas, trs tipos de operadores podem ser empregados:
Operadores de igualdade: utilizados para estabelecer equivalncia entre dados presentes nos programas, tambm podem ser empregados para avaliar se uma determinada varivel igual, ou diferente, outra varivel. Os operadores de igualdade so
listados no Quadro 10:
Quadro 10 Operadores de igualdade.
OPERADORES DE IGUALDADE
OPERADOR
SMBOLO
EXEMPLO
RESULTADO
Igualdade
==
10 == 20
Falso
Diferena
!=
10 !=20
Verdadeiro
88
Computao
Cdigo 21
1
/*
*/
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//operador de igualdade
23
24
25
//operador de diferena
26
27
28
29
30
31
32
num1,num2,op_igualdade);
return 0;
Fim cdigo 21
Resultado da execuo do programa:
Informe o primeiro numero: 10
Informe o segundo numero: 5
10 e igual a 5 = 0
10 e diferente de 5 = 1
Claretiano -
REDE DE EDUCAO
89
SMBOLO
EXEMPLO
RESULTADO
Maior que
>
10 > 20
Falso
Menor que
<
8<2
Falso
>=
5 >= 5
Verdadeiro
<=
25 <= 38
Verdadeiro
No Cdigo 22, temos um programa que demonstra a utilizao dos operadores relacionais, verifique:
Cdigo 22
1
/*
*/
7
8
9
10
11
12
13
int maior,menor,maiorigual,menorigual;
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
return 0;
Fim cdigo 22
90
Computao
Lembre-se de que utilizamos nmeros inteiros para representar esses valores lgicos, em
que o valor Verdadeiro (true) igual a 1 e o valor Falso (false) igual a 0.
Operadores lgicos: utilizados para concatenar, ou seja, ligar diversas expresses lgicas. Esses operadores seguem os mesmos tipos de conectivos lgicos da lgica matemtica; no entanto, na linguagem C, eles recebem uma simbologia diferente. O Quadro
12 apresenta os principais operadores lgicos.
Quadro 12 Principais operadores lgicos.
PRINCIPAIS OPERADORES LGICOS
OPERADOR
REPRESENTAO NA
LGICA MATEMTICA
REPRESENTAO NA
LINGUAGEM C
EXEMPLO
Conjuno
E (^)
&&
A && B
Disjuno
OU ( )
||
A || B
Disjuno exclusiva
OU Exclusivo ( )
A^B
Negao
Negao (~)
!A
A && B
A || B
A^B
O Cdigo 23 do programa a seguir apresenta os principais operadores lgicos da linguagem C. Neste exemplo, demonstrada a construo de tabelas verdade a partir dos operadores.
O resultado 1 representa o valor lgico verdadeiro, enquanto o resultado 0 representa o valor
lgico falso.
Cdigo 23
1
/*
*/
Claretiano -
REDE DE EDUCAO
8
9
10
11
12
13
14
printf(-----------------------\n);
15
printf(
16
printf(-----------------------\n);
17
printf(\n);
18
printf(Negacao (!)
Tabelas Verdade
\n);
\n);
19
20
21
printf(\n);
22
23
printf(Conjuncao (&&)
\n);
24
25
26
27
28
printf(\n);
29
30
printf(Disjuncao (||)
\n);
31
32
33
34
35
36
printf(\n);
37
38
printf( 1 ^ 1
39
printf( 1 ^ 0
40
printf( 0 ^ 1
41
printf( 0 ^ 0
42
43
44
return 0;
Fim cdigo 23
= %i \n, 1 ^ 1);
= %i \n, 1 ^ 0);
= %i \n, 0 ^ 1);
= %i \n, 0 ^0);
\n);
91
92
Computao
(&&)
1
0
0
0
Disjuncao
1 || 1 =
1 || 0 =
0 || 1 =
0 || 0 =
(||)
1
1
1
0
Disjuncao
1 ^ 1 =
1 ^ 0 =
0 ^ 1 =
0 ^ 0 =
Exclusiva (^)
0
1
1
0
10. BIBLIOTECAS
A linguagem de programao C possui uma infinidade de bibliotecas que auxiliam o trabalho do programador. Essas bibliotecas, quando utilizadas, devem ser referenciadas no cabealho
do programa por meio da diretiva include.
Uma biblioteca importante da linguagem C a biblioteca math.h, que contm diversas
funes matemticas implementadas, as quais podem ser utilizadas na construo de programas. O Quadro 13 apresenta algumas funes da biblioteca math.h.
Quadro 13 Funes da biblioteca matemtica.
FUNES DA BIBLIOTECA MATEMTICA
FUNO
UTILIZAO
EXEMPLO
RESULTADO
ceil
ceil(2.3)
floor
ceil(2.3)
abs ou fabs
abs(4)
exp
exp(2)
7.39
log
Logaritmo natural de x.
log(2)
0.69
log10
Logaritmo de base 10 de x.
log10(2)
0.30
pow
Potenciao: x elevado a y.
pow(2,3)
sqrt
Raiz quadrada.
sqrt(25)
cos
cos(3.1415)
sin
sin(3.1415)
tan
tan(3.1415)
REDE DE EDUCAO
Cdigo 24
1
/*
*/
7
8
9
10
11
12
#include <stdio.h>
#include <math.h>
int main()
{
13
14
15
float numero;
printf(===== Biblioteca Matematica =====\n);
16
17
18
printf(Informe um numero: );
scanf(%f, &numero);
19
20
21
22
23
24
25
26
27
28
29
printf(Informe um numero: );
scanf(%f, &numero);
30
31
32
33
34
35
36
printf(Informe um numero: );
scanf(%f, &numero);
37
38
39
40
41
42
printf(Informe um numero: );
scanf(%f, &numero);
43
44
45
46
47
return 0;
Fim cdigo 24
93
94
Computao
Esse outro exemplo, descrito no Cdigo 25, demonstra a utilizao da biblioteca math.h
na resoluo de problemas trigonomtricos envolvendo seno, cosseno e tangente. Nesse programa, o usurio dever informar um ngulo em graus, o qual ser convertido para radianos. Em
seguida, sero calculados seu seno, cosseno e tangente.
Cdigo 25
1
/*
*/
7
8
9
10
11
12
#include <stdio.h>
#include <math.h>
int main()
{
13
14
15
16
17
18
19
20
21
Claretiano -
radianos = (graus*PI)/180;
printf(%.2f graus = %.2f radianos \n,graus,radianos);
REDE DE EDUCAO
22
23
95
24
25
26
27
28
return 0;
Fim cdigo 25
UTILIZAO
EXEMPLO
RESULTADO
strcat
strcat("Joo",da Silva);
"Joo da Silva"
strcpy
strcpy("Jos", Carlos);
Carlos
strcmp
strcmp("Joo", Joo");
strcmp("Joo", Jos");
0
1
strlen
strlen("Joo da Silva");
13
O exemplo do Cdigo 26 demonstra a utilizao de algumas das principais funes da biblioteca string.h.
Cdigo 26
1
/*
*/
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <string.h>
int main()
{
char nome[20];
char sobrenome[10];
96
Computao
16
strcpy(nome,Joao);
17
strcpy(sobrenome,da Silva);
18
19
20
21
strcat(nome,sobrenome);
22
23
24
25
26
27
28
29
return 0;
30
Fim cdigo 26
Nome = Joao
Sobrenome = da Silva
Nome = Joao da Silva
O nome digitado e Joao da Silva? 0
O nome digitado e Joao da Silva? -1
O nome Joao da Silva possui 13 caracteres
Cdigo 27
1
/*
* um tringulo
*/
7
8
9
10
Claretiano -
REDE DE EDUCAO
11
12
97
int main()
{
13
14
15
16
17
printf(Informe a base: );
18
scanf(%f, &base);
19
printf(Informe a altura: );
20
scanf(%f,&altura);
21
22
area = (base*altura)/2;
23
24
25
//resultado
26
27
28
29
return 0;
Fim cdigo 27
2) Escreva um algoritmo que receba um nmero inteiro do teclado e imprima na tela seu
sucessor (numero +1) e seu antecessor (numero 1).
Cdigo 28
1
/*
*/
7
8
9
10
11
12
13
int numero;
14
15
16
printf(Informe um numero: );
17
18
scanf(%i, &numero);
98
Computao
19
20
21
22
23
24
return 0;
Fim cdigo 28
Resultado da execuo do programa:
Informe um numero: 10
Sucessor = 11
Antecessor = 9
3) Escreva um algoritmo que receba um nmero inteiro positivo e maior que zero. Calcule e apresente na tela:
a) a raiz quadrada do nmero;
b) o nmero ao quadrado;
c) o nmero ao cubo.
Cdigo 29
1
/*
*/
7
8
9
10
11
12
#include <stdio.h>
#include <math.h>
int main()
{
13
14
15
16
17
printf(Informe um numero: );
scanf(%f, &numero);
18
19
20
//raiz quadrada
raizquadrada = sqrt(numero);
21
22
23
24
25
26
cubo = pow(numero,3);
27
28
//resultado
29
30
Claretiano -
REDE DE EDUCAO
31
32
33
34
99
return 0;
Fim cdigo 29
Resultado da execuo do programa:
Informe um numero: 25
Raiz quadrada = 5.00
Quadrado = 625.00
Cubo = 15625.00
4) Um trabalhador recebeu seu salrio mensal e precisa pagar as contas de gua, luz e
telefone. Escreva um algoritmo que solicite ao usurio o salrio e os valores das contas
de gua, luz e telefone. Em seguida, calcule e apresente na tela quanto sobrou para o
trabalhador aps o pagamento das contas.
Cdigo 30
1
/*
* salrio de um trabalhador
*/
7
8
#include <stdio.h>
9
10
11
12
int main()
{
13
14
15
16
17
scanf(%f,&salario);
18
19
scanf(%f,&agua);
20
21
scanf(%f,&luz);
22
23
scanf(%f,&telefone);
24
25
//clculo do restante
26
27
28
//resultado
29
30
31
32
return 0;
Fim cdigo 30
100
Computao
5) Elabore um algoritmo que realize a converso de moedas. Esse algoritmo dever solicitar ao usurio a cotao do dlar, bem como a cotao do euro. Em seguida, o
usurio dever informar o valor, em reais, que deseja converter. Aps os clculos necessrios, o algoritmo exibir na tela:
a) o valor em reais convertido para dlar;
b) o valor em reais convertido para euro.
Cdigo 31
1
/*
*/
6
7
8
9
10
#include <stdio.h>
int main()
{
11
12
13
14
15
scanf(%f,&valor_reais);
16
printf(Cotacao do Dolar: );
17
scanf(%f,&cotacao_dolar);
18
printf(Cotacao do Euro: );
19
scanf(%f,&cotacao_euro);
20
21
22
23
24
25
26
27
//resultado
28
29
30
31
32
return 0;
Fim cdigo 31
Claretiano -
REDE DE EDUCAO
101
6) Em matemtica, funes polinomiais, tambm conhecidas como polinmios, representam uma classe importante de funes simples e infinitamente diferenciveis. Os
polinmios, devido a sua estrutura e a sua simples avaliao, so frequentemente empregados em anlise numrica. Dentro desse contexto, escreva um programa na linguagem C capaz de calcular o valor numrico do polinmio=
P(x)
x 3 7x 2 + 3x 4 .
O valor do elemento x dever ser informado pelo usurio.
Cdigo 32
01
/*---------------------------------------------
02
03
04
* polinmio.
05
06
07
08
*--------------------------------------------*/
09
10
/*----------------------------------------------
11
12
*--------------------------------------------*/
13
BIBLIOTECAS
#include <stdio.h>
14
15
/*---------------------------------------------*
16
17
PROGRAMA PRINCIPAL
*--------------------------------------------*/
18
int main()
19
20
21
float x;
22
float resultado;
24
printf(-------------------------------\n);
25
26
printf(-------------------------------\n);
27
printf(\n);
28
printf(Informe o valor de X: );
29
scanf(%f,&x);
31
resultado = (x*x*x)-(7*(x*x))+(3*x)-4;
23
30
\n);
32
33
34
35
36
return 0;
}
Fim cdigo 32
// fim da aplicao
102
Computao
7) Uma pessoa deseja emagrecer 25% do seu peso atual. Para isso, voc dever escrever
um programa na linguagem C capaz de calcular qual ser o peso dessa pessoa aps
emagrecer o percentual desejado. O programa dever solicitar pessoa seu peso atual e exibir as informaes resultantes na tela.
Cdigo 33
01
/*---------------------------------------------
02
03
04
* produto.
05
06
07
08
*-------------------------------------------*/
09
10
/*---------------------------------------------
11
12
13
BIBLIOTECAS
*-------------------------------------------*/
#include <stdio.h>
14
15
/*--------------------------------------------*
16
17
PROGRAMA PRINCIPAL
*-------------------------------------------*/
18
int main()
19
20
21
float peso_atual;
Claretiano -
REDE DE EDUCAO
22
103
float peso_novo;
23
24
printf(------------------------------\n);
25
26
printf(------------------------------\n);
27
printf(\n);
28
29
scanf(%f,&peso_atual);
\n);
30
31
peso_novo = peso_atual-(peso_atual*0.25);
32
33
printf(\nO novo peso da pessoa apos emagrecer 25%% serah = %0.2f \n\n,peso_novo);
34
35
36
return 0;
// fim da aplicao
Fim cdigo 33
8) Uma loja de departamentos est realizando uma grande promoo de seus produtos.
Seus clientes podero comprar qualquer item da promoo e pagar nas seguintes condies:
a) vista, com 20% de desconto no valor do produto;
b) 1 + 1 sem juros, com 10% de desconto no valor do produto;
c) 1 + 2 sem juros, com 5% de desconto no valor do produto;
d) 1 + 3 sem juros, e sem desconto no valor do produto;
e) 1 + 4 sem juros, e sem desconto no valor do produto;
f) 1 + 5 sem juros, e sem desconto no valor do produto;
104
Computao
g)
h)
i)
j)
Escreva um programa na linguagem C que receba o valor do produto e apresente ao cliente as opes de pagamento. Os resultados devero ser apresentados para o cliente em funo
do valor de cada parcela.
Cdigo 34
01
/*-------------------------------------------------
02
03
04
* polinmio.
05
06
07
08
*-----------------------------------------------*/
09
10
/*-------------------------------------------------
11
12
13
BIBLIOTECAS
*-----------------------------------------------*/
#include <stdio.h>
14
15
/*------------------------------------------------*
16
17
PROGRAMA PRINCIPAL
*-----------------------------------------------*/
18
int main()
19
20
21
float preco_produto;
22
23
24
25
26
27
28
printf(----------------------------------\n);
29
30
printf(----------------------------------\n);
31
32
33
scanf(%f,&preco_produto);
\n);
34
35
36
37
38
39
40
Claretiano -
condicao_pagamento_01 = preco_produto-(preco_produto*0.20);
//b.
REDE DE EDUCAO
41
42
43
44
45
46
47
48
49
50
105
condicao_pagamento_03 = (preco_produto-(preco_produto*0.05))/3;
//d.
condicao_pagamento_04 = (preco_produto/4);
//e.
condicao_pagamento_05 = (preco_produto/5);
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//f.
condicao_pagamento_06 = (preco_produto/6);
//g.
condicao_pagamento_07 = (preco_produto/7);
//h.
condicao_pagamento_08 = (preco_produto/8);
//i.
condicao_pagamento_09 = (preco_produto/9);
//j.
condicao_pagamento_10 = (preco_produto/10);
66
67
68
69
70
71
72
73
printf(--------------------------------\n);
74
printf(--------------------------------\n);
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
106
Computao
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
return 0;
// fim da aplicao
125
126
Fim cdigo 34
Claretiano -
REDE DE EDUCAO
107
9) As interfaces grficas facilitam a interao do usurio com as aplicaes. Essas interfaces, tambm conhecidas como Graphical User Interface, ou simplesmente GUI, representam um dos elementos mais importantes no desenvolvimento de um sistema
computacional. Aplicaes tradicionais baseadas em console, as quais so executadas
em modo texto, como, por exemplo, os programas desenvolvidos com a linguagem de
programao C ou Pascal, no possuem recursos muito sofisticados para a elaborao
de interfaces. Para facilitar a construo de interfaces para esses tipos de aplicaes,
os caracteres da tabela ASCII so comumente utilizados. Dentro desse contexto, escreva uma aplicao capaz de demonstrar alguns dos principais caracteres ASCII que
podem ser utilizados na construo de interfaces grficas.
Cdigo 35
01 /*--------------------------------------------------02
03
04
05
06
07
08
09
10
*-------------------------------------------------*/
11
12 /*--------------------------------------------------13
BIBLIOTECAS
14
*-------------------------------------------------*/
15 #include <stdio.h>
16
17 /*--------------------------------------------------*
18
19
*-------------------------------------------------*/
PROGRAMA PRINCIPAL
108
Computao
20 int main()
21 {
22
23
24
25
printf(------------------------------------\n);
26
27
printf(----------------------------------------\n);
28
29
30
31
printf(\n);
32
33
34
35
36
37
\n);
38
39
40
41
printf(\n);
42
43
44
45
46
47
48
49
50
51
52
53
printf(......................Exemplo:
54
55
56
57
\n);
printf(\t\t\t %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c
\n,218,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,191);
printf(\t\t\t %c \t EXEMPLO
%c\n,179,179);
printf(\t\t\t %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c
\n,192,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,217);
printf(\n); //pular uma linha
58
59
printf(\n);
60
61
62
63
64
65
66
67
68
Claretiano -
REDE DE EDUCAO
69
70
71
printf(......................Exemplo:
72
73
74
75
76
109
\n);
printf(\t\t\t %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c
\n,201,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,187);
printf(\t\t\t %c \t EXEMPLO
%c\n,186,186);
printf(\t\t\t %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c
\n,200,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,188);
return 0;
// fim da aplicao
77
78 }
Fim cdigo 35
110
Computao
10) Considerando o conjunto de informaes apresentado no Quadro 15, escreva, na linguagem de programao C, um programa capaz de apresentar esses dados de maneira tabulada. Para isso, voc deve considerar a utilizao dos cdigos de barra invertida. Alm disso, a aplicao demonstra a utilizao dos caracteres da tabela ASCII para
construo de interfaces grficas em programas do tipo console.
Claretiano -
REDE DE EDUCAO
DATA DE NASCIMENTO
TELEFONE
Joo da Silva
03/04/1968
(11) 3323-2233
Carlos Antnio
08/10/1976
(12) 8342-4432
Francisco Jos
12/12/1982
(11) 3334-5533
Ana Maria
11/09/1980
(11) 2342-4336
Cdigo 36
01
/*---------------------------------------------------
03
02
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
comando) no
*----------------- ---------------------------------*/
/*----------------------------------------------------*
BIBLIOTECAS
*---------------------------------------------------*/
19
#include <stdio.h>
21
/*----------------------------------------------------*
23
*---------------------------------------------------*/
20
22
24
25
26
27
28
PROGRAMA PRINCIPAL
int main()
{
29
31
30
32
33
35
34
36
37
39
38
40
41
42
lngua
111
112
Computao
43
45
44
46
47
printf(%c,201);
48
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
49
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
50
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
51
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
52
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
53
printf(%c\n,187);
54
printf(%c %s\t\t\t
55
printf(%c,200);
56
%c\n,186,titulo_do_programa,186);
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
57
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
58
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
59
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
60
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
61
printf(%c \n\n,188);
62
63
64
66
65
67
68
69
70
71
72
return 0;
// fim da aplicao
Fim cdigo 36
Claretiano -
REDE DE EDUCAO
113
11) Altere o programa anterior para que todas as informaes sejam apresentadas em
forma de tabela. Para isso, utilize os caracteres ASCII para separao dos dados.
Cdigo 12
01
/*--------------------------------------------
02
03
04
05
06
07
08
09
10
11
12
13
14
*------------------------------------------*/
15
16
/*--------------------------------------------
17
18
19
BIBLIOTECAS
*------------------------------------------*/
#include <stdio.h>
20
21
/*-------------------------------------------*
22
23
*------------------------------------------*/
PROGRAMA PRINCIPAL
24
int main()
25
26
27
28
114
Computao
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
printf(%c, 218);
48
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
49
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
50
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
51
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
52
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
53
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
54
printf(%c%c%c,196,196,196,196);
55
printf(%c\n,191);
56
printf(%c %s\t\t\t\t\t
57
printf(%c,195);
%c\n,179,titulo_do_programa,179);
58
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
59
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
60
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,194,196,196,196,196);
61
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
62
printf(%c%c%c%c%c%c%c%c%c,196,196,196,194,196,196,196,196,196,196);
63
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
64
printf(%c%c%c,196,196,196,196);
65
printf(%c \n,180);
66
67
68
printf(%c
69
%c \n,179,179,179,179);
printf(%c,195);
70
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
71
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
72
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,197,196,196,196,196);
73
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
74
printf(%c%c%c%c%c%c%c%c%c,196,196,196,197,196,196,196,196,196,196);
75
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
76
printf(%c%c%c,196,196,196,196);
77
printf(%c \n,180);
78
Claretiano -
REDE DE EDUCAO
79
115
printf(%c,195);
80
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
81
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
82
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,197,196,196,196,196);
83
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
84
printf(%c%c%c%c%c%c%c%c%c,196,196,196,197,196,196,196,196,196,196);
85
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
86
printf(%c%c%c,196,196,196,196);
87
printf(%c \n,180);
88
89
printf(%c,195);
90
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
91
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
92
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,197,196,196,196,196);
93
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
94
printf(%c%c%c%c%c%c%c%c%c,196,196,196,197,196,196,196,196,196,196);
95
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
96
printf(%c%c%c,196,196,196,196);
97
printf(%c \n,180);
98
99
printf(%c,195);
100
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
101
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
102
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,197,196,196,196,196);
103
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
104
printf(%c%c%c%c%c%c%c%c%c,196,196,196,197,196,196,196,196,196,196);
105
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
106
printf(%c%c%c,196,196,196,196);
107
printf(%c \n,180);
108
109
printf(%c,192);
110
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
111
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
112
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,193,196,196,196,196);
113
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
114
printf(%c%c%c%c%c%c%c%c%c,196,196,196,193,196,196,196,196,196,196);
115
printf(%c%c%c%c%c%c%c%c%c,196,196,196,196,196,196,196,196,196,196);
116
printf(%c%c%c,196,196,196,196);
117
printf(%c \n,217);
118
119
120
return 0;
// fim da aplicao
Fim cdigo 12
116
Computao
/*---------------------------------------------------
02
03
04
05
06
07
08
*-------------------------------------------------*/
09
10
/*---------------------------------------------------
11
12
*-------------------------------------------------*/
13
BIBLIOTECAS
#include <stdio.h>
14
15
/*--------------------------------------------------*
16
17
PROGRAMA PRINCIPAL
*-------------------------------------------------*/
18
int main()
19
20
21
22
float valor_venal_veiculo;
23
float aliquota_ipva;
Claretiano -
REDE DE EDUCAO
24
117
float total_imposto;
25
26
27
28
printf(%c,201);
29
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
30
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
31
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
32
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
33
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
34
printf(%c\n,187);
35
printf(%c %s\t\t\t
36
%c\n,186,titulo_do_programa,186);
printf(%c,200);
37
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
38
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
39
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
40
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
41
printf(%c%c%c%c%c%c%c%c%c,205,205,205,205,205,205,205,205,205,205);
42
printf(%c \n\n,188);
43
44
45
scanf(%f,&valor_venal_veiculo);
46
47
48
scanf(%f,&aliquota_ipva);
49
50
//calculo do imposto
51
total_imposto = valor_venal_veiculo*aliquota_ipva;
52
53
54
55
56
57
58
59
return 0;
// fim da aplicao
60
61
Fim cdigo 38
118
Computao
13) Escreva um programa capaz de calcular e apresentar em metros por segundo o valor
da velocidade de um maratonista que tenha percorrido uma determinada distncia
em quilmetros em um determinado tempo, marcado em segundos. Para isso utilize
a seguinte frmula: Velocidade = (Distncia em quilmetros * 1000) / (Tempo em minutos * 60).
Cdigo 39
01
/*---------------------------------------------------
02
03
04
05
06
07
08
*-------------------------------------------------*/
09
10
/*---------------------------------------------------
11
12
*-------------------------------------------------*/
13
BIBLIOTECAS
#include <stdio.h>
14
15
/*--------------------------------------------------*
16
17
PROGRAMA PRINCIPAL
*-------------------------------------------------*/
18
int main()
19
20
21
22
float distancia_quilometros;
23
float distancia_metros;
24
float tempo_minutos;
25
float tempo_segundos;
Claretiano -
REDE DE EDUCAO
26
119
float velocidade_maratonista;
27
28
29
30
31
32
printf(%c%c%c%c%c%c%c%c%c,178,178,178,178,178,178,
178,178,178,178);
printf(%c%c%c%c%c%c%c%c%c,178,178,178,178,178,178,
178,178,178,178);
printf(%c%c%c%c%c%c%c%c%c,178,178,178,178,178,178,
178,178,178,178);
33
printf(%c\n,178);
34
35
printf(%c%c%c%c%c%c%c%c,176,176,176,176,176,176,176,176);
36
printf(
%s
,titulo_do_programa);
37
printf(%c%c%c%c%c%c%c%c\n,176,176,176,176,176,176,176,176);
38
printf(%c%c%c%c%c%c%c%c%c,178,178,178,178,178,178,178,178,178,178);
39
printf(%c%c%c%c%c%c%c%c%c,178,178,178,178,178,178,178,178,178,178);
40
printf(%c%c%c%c%c%c%c%c%c,178,178,178,178,178,178,178,178,178,178);
41
printf(%c\n\n,178);
42
43
44
scanf(%f,&distancia_quilometros);
45
46
47
scanf(%f,&tempo_minutos);
48
49
//calculos necessrios
50
distancia_metros = distancia_quilometros*1000;
51
tempo_segundos = tempo_minutos*60;
52
velocidade_maratonista = distancia_metros/tempo_segundos;
53
54
55
56
57
58
59
60
61
return 0;
// fim da aplicao
Fim cdigo 39
120
Computao
Claretiano -
REDE DE EDUCAO
121
15) Os nomes utilizados para definir variveis e constantes so chamados de identificadores. Apresente pelo menos cinco identificadores vlidos e cinco identificadores invlidos na linguagem C e explique o porqu de essa
linguagem ser chamada de case-sensitite.
16) O que so os comandos de entrada e os comandos de sada?
17) O que so especificadores de formato?
18) Qual a utilidade do especificador de formato %s?
19) Qual especificador de formato utilizado para o tipo de dados double?
20) Qual a utilidade do especificador de formato %x?
21) Qual especificador de formato utilizado para o tipo de dados int?
22) Qual especificador de formato utilizado para exibir endereos de memria?
23) Explique a sintaxe da instruo scanf e a utilidade do smbolo &.
24) Quais so os principais comandos que fazem parte da biblioteca stdio.h?
25) Qual a diferena entre as instrues getchar() e getch()?
26) Explique como uma varivel do tipo char pode ser utilizada para armazenar um conjunto de caracteres.
27) Declare uma varivel capaz de armazenar o nome completo de uma pessoa.
28) Declare uma varivel capaz de armazenar a idade de uma pessoa.
29) Declare uma varivel capaz de armazenar o salrio de uma pessoa.
30) Qual a utilidade do comando gets?
31) Qual a funo do cdigo de barra invertida \n e a funo do cdigo de barra invertida \t?
32) Qual cdigo de barra invertida, no comando printf, utilizado para exibir uma aspa dupla?
33) Qual cdigo de barra invertida, no comando printf, utilizado para exibir uma barra invertida?
34) Explique como realizado o controle de preciso nos comandos de sada.
35) Qual a utilidade dos comandos putchar e puts?
36) Quais so os principais operadores aritmticos da linguagem de programao C?
37) Qual a utilidade do operador ++ e a do operador --?
38) Qual a diferena entre operao pr-fixada e ps-fixada?
39) Explique qual a funo do operador +=.
40) Quais so os principais operadores de igualdade da linguagem de programao C?
41) Quais so os principais operadores relacionais da linguagem de programao C?
42) Quais so os principais operadores lgicos da linguagem de programao C?
43) Explique pelo menos trs funes da biblioteca matemtica math.h.
44) Explique pelo menos trs funes da biblioteca matemtica string.h.
122
Computao
13. CONSIDERAES
Enfim, terminamos o contedo da Unidade 2. Este o momento para treinarmos os conceitos apresentados ao longo desta unidade. Por isso, importantssimo que voc estude os
exerccios resolvidos e realize as atividades propostas no Caderno de Atividades e Interatividades (CAI).
Claretiano -
REDE DE EDUCAO