Vous êtes sur la page 1sur 68

EAD

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





Introduo linguagem de programao C.


Comandos de entrada e sada.
Expresses aritmticas.
Expresses lgicas.
Bibliotecas (math.h e string.h).
Exerccios resolvidos (transformando algoritmos em programas).

3. ORIENTAES PARA O ESTUDO DA UNIDADE


guir:

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!

5. ESTRUTURA BSICA DE UM PROGRAMA NA LINGUAGEM C


Para um programa funcionar corretamente, necessrio um conjunto mnimo de instrues. Na linguagem C, um programa deve possuir, no mnimo, a seguinte estrutura:
1

#include <stdio.h>

2
3
4
5
6

main()
{
}

Claretiano -

printf(Meu primeiro programa!);

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

57

Resultado da execuo do programa:


Meu primeiro programa!

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

printf(Meu segundo programa! \n);


}

return 0;

58

Computao

Resultado da execuo do programa:


Meu segundo programa!

Na estrutura bsica apresentada anteriormente, a Linha 1 especifica a biblioteca que ser


utilizada no programa. Para incluir bibliotecas nos programas, precisamos utilizar a diretiva
#include <nome_da_biblioteca>. A instruo include chamada de diretiva de pr-processamento.
No exemplo, foi includa a biblioteca stdio.h, a qual contm um conjunto de funes para
entrada e sada de informaes. Ao longo do curso, estudaremos diversas bibliotecas da linguagem C.
O comando utilizado na Linha 5, printf, um comando para exibir informaes na tela
(sada); por isso, para utilizarmos esse comando, precisamos, necessariamente, da biblioteca
stdio.h.
A Linha 3 determina o bloco principal do programa, com a instruo int main(). Na Linha 4,
definido o incio do programa {, e, na Linha 7, o fim }. As Linhas 5 e 6 representam o bloco de
comandos do programa. Esse programa muito simples, pois apenas exibe a mensagem Meu
segundo programa! na tela.
Ao comparar algoritmos e programas, podemos fazer algumas correspondncias. Veja no
Quadro 1.
Quadro 1 Comparaes entre algoritmos e programas.
ESTRUTURA BSICA
ALGORITMO

PROGRAMA

inicio

fimalgoritmo

Pensando na estrutura bsica de um algoritmo, voc pde observar algumas correspondncias com um programa.

6. TIPOS DE DADOS E VARIVEIS


Os programas tm como objetivo principal a manipulao de dados, os quais possuem
tipos especficos em funo das caractersticas das informaes que armazenam.
Observe, a seguir, os principais tipos de dados da linguagem C:
1) int: o tipo de dado mais comum da linguagem C. utilizado para armazenar nmeros inteiros, positivos, negativos ou iguais a zero. O tipo int tem tamanho de 16 bits
(ou 2 bytes), o que representa o espao necessrio para armazenar uma informao
desse tipo na memria principal.
Assim, se armazenarmos uma informao do tipo int na memria, significa que estamos ocupando 16 bits do seu espao. J se armazenarmos dez informaes do tipo int,
estaremos ocupando 160 bits (10 * 16 bits) de memria (20 bytes).
2) char: esse tipo de dado utilizado para armazenar e manipular caracteres. Os caracteres na linguagem C so representados por meio de aspas simples, por exemplo, 'a',
'b', 'c' etc. O tipo de dado char ocupa 8 bits (1 byte) de memria.

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

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

Recursos utilizados na construo de programas


Variveis
Um programa de computador manipula constantemente informaes armazenadas na
memria principal (RAM). Para que isso seja possvel, cada posio da memria possui um endereo nico. Assim, os programas podem facilmente acessar as informaes.
Uma varivel a principal forma de manipulao de informaes dentro dos programas.
Cada uma possui um nome que representa uma posio especfica na memria do computador,
o que facilita a manipulao dos dados, uma vez que no precisamos guardar os endereos referentes s posies em que os dados se encontram na memria.

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>;

O Cdigo 1, do programa a seguir, tem como objetivo ilustrar a declarao de variveis,


alm da utilizao do comando de atribuio.
Cdigo 1
1

/*

* Programa para exemplificar a declarao

* de variveis e a atribuio de valores.

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13

// declarao das variveis


int idade;

14
15
16

//atribui o valor 22 varivel idade

idade = 22;

17
18
19

//exibe o valor da varivel na tela

20

printf(Idade = %i \n, idade);

21
22
23

return 0;

Fim cdigo 1

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

61

Resultado da execuo do programa:


Idade = 22

As linhas de 1 a 6 do Cdigo 1 so utilizadas para descrever qual a funcionalidade do


programa e tm apenas carter informativo. Esse conjunto de linhas representa um comentrio
e no interfere na execuo do programa. Os comentrios so essenciais para documentar o
cdigo-fonte do programa e so recursos essenciais para uma boa prtica de programao.
Na linguagem C, existem dois tipos de comentrios:
comentrios de mltiplas linhas: que so delimitados pelo bloco /* e */, que
indicam, respectivamente, o incio e o final do comentrio. Por exemplo, como foi
definido nas linhas de 1 a 6.
comentrios de uma nica linha: que podem ser especificados pelas barras
duplas //. Observe, no exemplo anterior, as Linhas 8, 13, 16 e 19, que representam
comentrios de uma nica linha.
A Linha 14 ilustra como deve ser realizada a declarao de uma varivel. Note que essa
declarao segue a sintaxe definida anteriormente, na qual devemos inicialmente especificar o
tipo de dados, que, nesse caso, int (inteiro), e, em seguida, o nome da varivel (que foi definida
como idade).
Na Linha 17, demonstrada a atribuio de um valor a uma varivel previamente declarada.
Veja que, para isso, necessrio utilizarmos o comando de atribuio com o operador igual (=).
Nesse caso, o valor 22 foi atribudo varivel idade.
O comando da Linha 20 uma instruo para exibir informaes na tela e ser detalhado
em breve.
No Cdigo 2, voc pode ver mais um programa, o qual ilustra outro exemplo de declarao
de variveis. Neste exemplo, podemos notar que variveis de um mesmo tipo de dados podem
ser declaradas na mesma linha. Alm disso, podemos notar, que possvel atribuir o valor de
uma varivel a outra varivel.
Cdigo 2
1

/*

* Programa para exemplificar a declarao

* de diversas variveis do mesmo tipo e a

* atribuio de valores de uma varivel

* outra varivel.

* Autor: Joo da Silva

*/

9
10
11
12
13
14
15
16
17

//declarao das bibliotecas


#include <stdio.h>
int main()
{

// declarao das variveis


int a,b,c;

62

Computao

18

// atribuio de valores s variveis

a = 10;

19

b = 20;

20

c = 30;

21
22
23

//exibe o valor das variveis na tela

24

printf(A = %i \n, a);

25

printf(B = %i \n, b);

26

printf(C = %i \n, c);

27
28

// atribuio do valor das variveis

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

//exibe o valor das variveis na tela

34

printf(A = %i \n, a);

35

printf(B = %i \n, b);

36

printf(C = %i \n, c);

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

Fundamentos da Linguagem de Programao C

63

importante ressaltar que, quando declaramos uma varivel dentro de um programa,


imprescindvel atribuir algum valor a essa varivel antes de realizarmos qualquer operao. Na
linguagem C, quando uma varivel declarada, ela recebe um valor aleatrio, que comumente
descrito como lixo de memria. Vejamos um exemplo, no Cdigo 3:
Cdigo 3
1

/*

* Programa para exemplificar a importncia

* da atribuio de valores s variveis.

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13

// declarao das variveis


int a;

14
15
16

//exibe o valor das variveis na tela

17

printf(A = %i \n, a);

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

Se executarmos esse programa novamente, as seguintes informaes so exibidas na tela:


Resultado da execuo do programa:
A = 2147303424

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

/*

* Programa para exemplificar como possvel

* declarar e inicializar o valor de uma varivel

* Autor: Joo da Silva

*/

7
8

//declarao das bibliotecas


#include <stdio.h>

9
10

int main()

11

12
13

// declarao das variveis


int a = 10;

14

int b = 20, c = 30;

15
16
17

//exibe o valor das variveis na tela

18

printf(A = %i \n, a);

19

printf(B = %i \n, b);

20

printf(C = %i \n, c);

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;

O Cdigo 5 ilustra a utilizao de constantes na construo de programas.


Cdigo 5
1

/*

* Programa para exemplificar a utilizao

* de constantes

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

* Autor: Joo da Silva

*/

65

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13

// declarao da constante
const int a = 10;

14
15
16

//exibe o valor na tela

17

printf(A = %i \n, a);

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;

Uma mensagem de erro semelhante a essa ser exibida pelo compilador:


Mensagem de erro do compilador (ambiente
Code::Blocks):

C:\Programas\exemplo.c||In function `main:|


C:\Programas\exemplo.c |15|error: assignment of
read-only variable `a|
||=== Build finished: 1 errors, 0 warnings ===|

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;

O Quadro 3 apresenta alguns exemplos de identificadores vlidos na linguagem de programao C.


Quadro 3 Exemplos de identificadores vlidos da linguagem C.
IDENTIFICADORES VLIDOS NA LINGUAGEM C
NOME DO IDENTIFICADOR

EXEMPLO DE UTILIZAO

int A;

a = 246;

numero

int numero = 5;

Numero

int Numero = 20;

A32

A32 = a;

usuario_01

usuario_01 = 23;

IDADE

IDADE = 25;

$ano

$ano = 2009;

Conhea, a seguir, no Quadro 4, alguns exemplos de identificadores que no so vlidos.


Quadro 4 Exemplos de identificadores invlidos da linguagem C.
IDENTIFICADORES QUE NO SO VLIDOS NA LINGUAGEM C
NOME DO IDENTIFICADOR

PROBLEMA

5b

Comear com um nmero

e 12

Conter um espao em branco

x-y

Conter um caractere especial, o smbolo -

nota()

Conter caracteres especiais ()

main

Utilizar uma palavra reservada

Int

Utilizar uma palavra reservada

operao

Utilizar acentos e/ou cedilha.

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

67

7. COMANDOS DE ENTRADA E SADA


Quando escrevemos um programa de computador, essencial que ele receba algum tipo
de informao a ser processada, e, em seguida, apresente o resultado do processamento.
A operao de leitura ou de recebimento de dados pelo programa realizada por meio
dos comandos de entrada, enquanto o procedimento de exibio das informaes na tela (ou
na impressora) executado pelos comandos de sada.
Os comandos de entrada so responsveis pela leitura dos dados digitados pelo usurio.
Essas informaes so recebidas e armazenadas na memria por meio de variveis. Assim, a
cada comando de entrada necessrio definir qual varivel receber o valor informado pelo
usurio.
Quando manipulamos informaes por meio dos comandos de entrada ou sada, devemos
indicar qual tipo de dados estamos utilizando. Por exemplo, quando realizamos a leitura de um
nmero pelo teclado, necessrio evidenciar qual o tipo desse nmero: int, float ou double.
A indicao do tipo de dados a ser manipulado pelos comandos de entrada e sada realizada por meio dos especificadores de formato. Um especificador de formato comea com o
smbolo de %, seguido por um caractere que representa o tipo de dados.
O Quadro 5 apresenta os principais especificadores de formato.
Quadro 5 Especificadores de formato da linguagem C.
PRINCIPAIS ESPECIFICADORES DE FORMATO
ESPECIFICADOR DE FORMATO

TIPO DE DADOS

%c

char (caracteres individuais)

%s

char (conjunto de caracteres)

%d ou %i

int

%f

float

%lf

double

%e

nmero em notao cientfica, por exemplo, 10.2e-8

%x

nmero em hexadecimal, por exemplo, 32F2

%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

/*

* Programa para exemplificar a utilizao

* do comando scanf para entrada de dados

* Autor: Joo da Silva

68

Computao

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13
14

// declarao das variveis


int numero;

15
16
17

// entrada de dados

18

printf(Digite um numero e pressione ENTER: );


scanf(%i, &numero);

19
20
21
22

// exibio do resultado na tela

23

printf(O numero digitado foi %i \n, numero);

24
25
26

return 0;

Fim cdigo 6
Resultado da execuo do programa:

Digite um numero e pressione ENTER: 12


O numero digitado foi 12

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

/*

* Programa para exemplificar a utilizao

* do comando scanf para entrada de dados

* Autor: Joo da Silva

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

69

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13
14

// declarao das variveis


float nota1, nota2, media;

15
16
17

// entrada de dados

18

printf(Informe a primeira nota: );


scanf(%f, &nota1);

19
20
21

printf(Informe a segunda nota: );


scanf(%f, &nota2);

22
23
24

// clculo da mdia aritmtica

media = (nota1+nota2)/2;

25
26
27
28

// exibio do resultado na tela

29

printf(Media = %f \n, media);

30
31
32

return 0;

Fim cdigo 7

Resultado da execuo do programa:


Informe a primeira nota: 8.5
Informe a segunda nota: 6.0
Media = 7.250000

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

/*

* Programa para exemplificar a utilizao

* do comando scanf para entrada de dados

70

Computao

* Autor: Joo da Silva

*/

7
8
9

//declarao das bibliotecas

#include <stdio.h>

10

int main()

11

12
13
14

// declarao das variveis


char tamanho;

15
16
17

printf(Qual o tamanho de camiseta que voce usa [P, M ou G] : );

18

scanf(%c,&tamanho);

19
20
21
22
23
24

// exibio do resultado na tela


printf(Voce usa camiseta no tamanho %c \n, tamanho);
return 0;
}

25

Fim cdigo 8

Resultado da execuo do programa:

Qual o tamanho de camiseta que voce usa [P,


M ou G]: P
Voce usa camiseta no tamanho P

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

Fundamentos da Linguagem de Programao C

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

Note que as posies para armazenamento da informao variam de 0 a 14, sendo um


total de 15 posies, como foi declarado (nome[15]). Outro ponto importante que ao final do
conjunto de caracteres o smbolo especial \0 inserido para indicar o final da string.
No Cdigo 9, o programa ilustra a utilizao do comando de entrada scanf para a leitura de
conjunto de caracteres. O especificador de formato utilizado para esse caso o %s.
Cdigo 9
1

/*

* Programa para exemplificar a utilizao

* do comando scanf para entrada de dados

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13
14

// declarao das variveis


char nome[20];

15
16
17

printf(Informe seu nome: );


scanf(%s, &nome);

18
19
20

printf(Ola, %s seja bem-vindo! \n, nome);

21
22
23

return 0;

Fim cdigo 9
Resultado da execuo do programa:
Informe seu nome: Joao
Ola, Joao seja bem-vindo!

72

Computao

Um aspecto importante a ser observado a respeito do comando scanf, ao realizar a leitura


de um conjunto de caracteres, que ele no aceita espaos entre os caracteres. Por exemplo, se
o nome informado pelo usurio fosse Joo da Silva, o resultado da execuo seria:
Resultado da execuo do programa:

Informe seu nome: Joao da Silva


Ola, Joao da Silva seja bem-vindo!

Veja que todos os caracteres aps o espao foram desconsiderados.


Para solucionar esse problema com a leitura de conjuntos de caracteres, podemos utilizar
outro comando de entrada chamado gets. Esse comando empregado apenas para leitura de
conjunto de caracteres, podendo, assim, ser utilizado apenas para o tipo de dados char.
O Cdigo 10 ilustra a utilizao do comando gets para leitura de conjuntos de caracteres:
Cdigo 10
1

/*

* Programa para exemplificar a utilizao

* do comando scanf para entrada de dados

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13
14

// declarao das variveis


char nome[20];

15
16
17

printf(Informe seu nome: );

18

gets(nome);

19
20

printf(Ola, %s seja bem-vindo! \n, nome);

21
22
23

return 0;

Fim cdigo 10

Note que, com o comando gets, no necessrio indicar o especificador de formato, e,


alm disso, no preciso inserir o smbolo & antes do nome da varivel. O resultado da execuo para esse programa :
Resultado da execuo do programa:

Informe seu nome: Joao da Silva


Ola, Joao da Silva seja bem-vindo!

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

73

A apresentao de informaes na tela realizada por meio de instrues conhecidas


como comandos de sada. Esses comandos tm como objetivo exibir dados na tela ou na impressora.
Como voc j deve ter notado nos exemplos anteriores, o principal comando para exibio
de informaes na tela o printf. Esse comando permite que qualquer tipo de dado seja exibido
na tela. A maneira mais simples de utilizar o comando printf para exibio de informaes textuais, como, por exemplo, para exibirmos a mensagem Seja bem-vindo!, que possui o seguinte
resultado:
Resultado da execuo do programa:
Seja bem-vindo!

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

int numero = 10;

printf(Numero = %i , numero);

Resultado da execuo do programa:


Numero = 10

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;

printf(A = %i, B = %i e C = %i, A,B,C);

Resultado da execuo do programa:


A = 10, B = 20 e 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;

printf(A = %i, B = %c e C = %f , A,B,C);

Resultado da execuo do programa:


A = 10, B = F e C = 125.800000

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));

Resultado da execuo do programa:


Resultado = 60

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

/*

* Programa para exemplificar a utilizao

* do especificador de formato %u e o operador &

* Autor: Joo da Silva

*/

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

printf(Numero = %i, endereco = %u \n, numero, &numero);

18
19
20

return 0;

Fim cdigo 11

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

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

Mudana para uma nova linha

\t

Realiza a tabulao horizontal

Exibe uma aspa dupla

Exibe uma aspa simples

\\

Exibe uma barra invertida

\a

Emite um alerta (beep).

Fonte: adaptado de Schildt (1997, p. 159).

No Cdigo 12, o programa apresenta a utilizao dos principais cdigos de barra invertida.
Cdigo 12
1

/*

* Programa para exemplificar a utilizao

* dos cdigos de barra invertida

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13

// exemplo do cdigo para nova linha

14

printf(Ola, \nJoao da Silva \nseja bem-vindo ao sistema!\n);

15
16

//pular uma linha

17

printf(\n);

18
19

// exemplo do cdigo de tabulao

20

printf(Nome \tIdade \n);

21

printf(Carlos \t21 \n);

22

printf(Ana \t32 \n);

23

printf(Jose \t28 \n);

24

printf(\n);

25
26

// aspas duplas

27

printf(Texto entre \aspas duplas\ n\n);

28
29

// aspas simples

76

Computao

30

printf(Texto entre \aspas simples\ \n\n);

31
32

// exibio da barra invertida

33

printf(Exibicao de uma barra invertida \\ \n\n);

34
35

// alerta (beep)

printf(Atencao! \a );

36
37
38
39

return 0;

Fim cdigo 12

Resultado da execuo do programa:


Ola,
Joao da Silva
seja bem-vindo ao sistema!
Nome
Carlos
Ana
Jose

Idade
21
32
28

Texto entre aspas duplas


Texto entre aspas simples
Exibicao de uma barra invertida \
Atencao!

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

/*

* Programa para exemplificar a utilizao

* do controle de largura dos campos

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13

/*

14

* Exemplo para nmeros

15

*/

16
Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

17

//preencher com espaos em branco

18

printf(Resultado = %5d \n, 5);

19

printf(Resultado = %5d \n, 64);

20

printf(Resultado = %5d \n, 280);

21

printf(Resultado = %5d \n, 1360);

22
23

//preencher com zeros

24

printf(Resultado = %05d \n, 5);

25

printf(Resultado = %05d \n, 64);

26

printf(Resultado = %05d \n, 280);

27

printf(Resultado = %05d \n, 1360);

28
29

//alinhamento esquerda

30

printf(Resultado = %-5d \n, 5);

31

printf(Resultado = %-5d \n, 64);

32

printf(Resultado = %-5d \n, 280);

33

printf(Resultado = %-5d \n, 1360);

34

printf(\n\n);

35
36

/*

37

* Exemplo para caracteres

38

*/

39

//preenchimento com espao em branco

40

printf(Nome = %10s \n, Jose);

41

printf(Nome = %10s \n, Antonio);

42

printf(Nome = %10s \n, Ana);

43
44

//alinhamento esquerda

45

printf(Nome = %-10s \n, Jose);

46

printf(Nome = %-10s \n, Antonio);

47

printf(Nome = %-10s \n, Ana);

48
49
50

return 0;

Fim cdigo 13

77

78

Computao

Resultado da execuo do programa:


Resultado
Resultado
Resultado
Resultado
Resultado
Resultado
Resultado
Resultado
Resultado
Resultado
Nome
Nome
Nome
Nome
Nome
Nome
Nome
Nome
Nome

=
=
=
=
=
=
=
=
=

=
=
=
=
=
=
=
=
=
=

280
1360
00005
00064
00280
01360
5
64
280
1360

Jose
Antonio
Ana
Jose
Antonio
Ana
Jose
Antonio
Ana

Outra propriedade interessante do comando printf a possibilidade de controlarmos o


nmero de casas decimais. Esse recurso chamado de controle de preciso. O Cdigo 14 ilustra
a utilizao dessa caracterstica:
Cdigo 14
1

/*

* Programa para exemplificar a utilizao

* do controle de preciso

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13

float x = 1.23456;

14
15

printf(X = %.1f \n, x);

// 1.2

16

printf(X = %.2f \n, x);

// 1.23

17

printf(X = %.3f \n, x);

// 1.235

18

printf(X = %010.3f \n, x);

// 000001.235

19
20
21

return 0;

Fim cdigo 14

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

79

Resultado da execuo do programa:


X
X
X
X

=
=
=
=

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

/*

* Programa para exemplificar a utilizao

* dos comandos putchar e puts

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13

char nome[20];
char sexo;

14
15
16

//leitura das informaes

17

printf(Informe o nome: );

18

gets(nome);

19
20

printf(Informe o sexo [M ou F]: );


sexo = getchar();

21
22
23

//exibio dos dados na tela

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

Resultado da execuo do programa:


Informe o nome: Joao da Silva
Informe o sexo [M ou F]: M
Seu nome e: Joao da Silva
Seu sexo e: M

Os comandos de entrada e sada so essenciais para a construo de programas. Esses


comandos so utilizados para interao e exibio de informaes para o usurio. Dentro desse
contexto, reflita sobre como possvel utilizar os comandos de entrada e sada para facilitar a
interao entre o usurio e os programas.

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

Mdulo (resto da diviso inteira)

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

/*

* Programa para exemplificar a utilizao

* dos operadores aritmticos

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13
14
15

float temperatura;
float conversao;

16
17
18
Claretiano -

printf(Informe a temperatura em Fahrenheit: );


scanf(%f, &temperatura);

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

81

19
20

//converso de F para C

conversao = (temperatura-32) * 5/9;

21
22
23

//resultado

24

printf(Temperatura em graus Celsius = %.2f \n, conversao);

25
26
27

return 0;

Fim cdigo 16

Resultado da execuo do programa:

Informe a temperatura em Fahrenheit: 98


Temperatura em graus Celsius = 36.67

No prximo programa (Cdigo 17), demonstraremos a utilizao do operador aritmtico


mdulo. Veja que, com ele, possvel calcular o resto da diviso entre nmeros inteiros.
Cdigo 17
1

/*

* Programa para exemplificar a utilizao

* do operador de mdulo

* Autor: Joo da Silva

*/

7
8
9
10
11
12
13
14
15

//declarao das bibliotecas


#include <stdio.h>
int main()
{

int num1, num2;

int divisao, resto;

16
17
18

printf(Informe o primeiro numero: );

19

scanf(%i, &num1);

20

printf(Informe o segundo numero: );

21

scanf(%i, &num2);

22
23
24

// diviso entre nmeros inteiros

divisao = num1/num2;

25
26
27
28
29

//resto da diviso entre nmeros inteiros

resto = num1%num2;

printf(%i dividido por %i = %i \n,num1,num2,divisao);

82

Computao

30

printf(O resto da divisao e igual a %i \n, resto);

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

O programa que resolve essa expresso ser apresentado no Cdigo 18.


Cdigo 18
1

/*

* Programa para demonstrar a resoluo de

* expresses matemticas complexas

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13

float expressao;

14
15

expressao = (26/12)+5*( (10+(20/3))/(9%2) ) - (4*(3-8) );

16
17
18

printf(Resultado da expressao = %.2f \n,expressao);

19
20
21

return 0;

Fim cdigo 18

Resultado da execuo do programa:


Resultado da expressao = 102.00

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

83

Ao resolvermos expresses matemticas, fundamental que a prioridade dos operadores


seja respeitada. Essa prioridade determina quais operaes devem ser realizadas inicialmente.
Uma expresso que envolva mais de um operador deve obedecer a seguinte ordem:
Quadro 8 Ordem de precedncia dos operadores.
ORDEM DOS OPERADORES
ORDEM

OPERADOR

Parnteses mais internos

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

A expresso matemtica pode ser apresentada na linguagem C da seguinte maneira:


1

resultado = 10+20-6*2/4;

Inicialmente, resolvemos 6*2, cujo resultado 12, e, em seguida, dividimos o resultado


por 4, obtendo 3. Em decorrncia dos operadores * e / terem a mesma prioridade, resolvemos o
operador que est mais esquerda *, e, depois, o mais direita /. O prximo passo resolver a
adio 10+20, que igual a 30, e, finalmente, subtrair do resultado j obtido 6*2/4 (que igual
a 3). Assim, o resultado final da expresso 27.
Operadores de incremento e decremento
H dois operadores especiais que so utilizados para incrementar e decrementar o valor
de uma varivel.
Quando incrementamos uma varivel, significa que o valor 1 (um) adicionado ao seu
contedo. O smbolo do operador de incremento ++.
Por exemplo:
1

int numero = 10;

numero++;

printf(Numero = %i n, numero);


Resultado da execuo do programa:
Nmero = 11;

J o operador de decremento, simbolizado por --, subtrai 1 (um) ao contedo da varivel.


Por exemplo:

84

Computao

int numero = 10;

numero--;

printf(Numero = %i n, numero);


Resultado da execuo do programa:
Numero = 9;

Os operadores de incremento e decremento podem ser utilizados de duas maneiras:


prefixada: em que o operador definido antes do nome da varivel.
++numero;

ps-fixada: em que o operador definido aps o nome da varivel.


numero++;

O Cdigo 19 demonstra a utilizao dos operadores de incremento e decremento. Neste


exemplo, so aplicados os dois tipos de operadores: prefixado e ps-fixado.
Cdigo 19
1

/*

* Programa para exemplificar a utilizao

* dos operadores pr e ps-fixados.

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13
14
15

int num1;
int num2;

16
17
18
19

// operador ps-fixado

num1 = 10;

num2 = num1++;

20
21

printf(Numero 1 = %i \n, num1);

22

printf(Numero 2 = %i \n\n, num2);

23
24
25
26

// operador pr-fixado

num1 = 10;

num2 = ++num1;

27
28

printf(Numero 1 = %i \n, num1);

29

printf(Numero 2 = %i \n, num2);

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

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

Na operao ps-fixada (num2=num1++), inicialmente o valor da varivel num1 (10)


atribudo varivel num2, fazendo com que a varivel num2 recebesse o valor 10. Somente
aps a operao de atribuio que o valor da varivel num1 incrementado. por isso que a
varivel num2 manteve o valor 10.
Em contrapartida, na operao prefixada (num2=++num1), inicialmente a operao de
incremento da varivel num1 executada; assim, a varivel num1 obtm o valor 11. Em seguida,
efetuada a operao de atribuio, fazendo que o valor 11 da varivel num1 fosse armazenado
na varivel num2.
Operadores de atribuio
Os operadores de atribuio tm como objetivo a alterao do valor de uma varivel levando em considerao seu valor inicial. Por exemplo, considere a operao tpica de atribuio
a seguir:
1
2
3

int numero = 10;


numero = 20;
printf(Numero = %i n, numero);
Resultado da execuo do programa:
Numero = 20;

Quando utilizamos o operador de atribuio, o novo valor da varivel nmero depende


do valor inicial que ela contm. Por exemplo:
1
2
3

int numero = 10;


numero += 20;
printf(Numero = %i n, numero);
Resultado da execuo do programa:
Numero = 30;

Note que, na operao de atribuio, em vez de utilizarmos apenas o operador =, foi empregado o operador +=. Essa operao equivalente seguinte expresso:
2

numero = numero + 20;

86

Computao

O Quadro 9 apresenta os principais operadores de atribuio:


Quadro 9 Principais operadores de atribuio da linguagem C.
OPERADORES DE ATRIBUIO DA LINGUAGEM C
OPERAO

OPERADOR

EXEMPLO

EQUIVALENTE

Adio

+=

num += 10;

num = num + 10;

Subtrao

num = 10;

num = num 10;

Multiplicao

*=

num *= 10;

num = num * 10;

Diviso

/=

num /= 10;

num = num / 10;

Mdulo

%=

num %= 10;

num = num % 10;

O Cdigo 20 demonstra a utilizao dos operadores de atribuio.


Cdigo 20
1

/*

* Programa para exemplificar a utilizao

* dos operadores de atribuio

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

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

Fundamentos da Linguagem de Programao C

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

Resultado da execuo do programa:


Operador: +=
Numero = 15
Operador: -=
Numero = 8
Operador: *=
Numero = 50
Operador: /=
Numero = 5
Operador: =
Numero = 3

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

O Cdigo 21, descrito no programa a seguir, no demonstra a utilizao dos operadores de


igualdade e de diferena.

88

Computao

Cdigo 21
1

/*

* Programa para exemplificar a utilizao

* dos operadores de igualdade

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13

int num1, num2;

int op_igualdade, op_diferenca;

14
15
16

printf(Informe o primeiro numero: );


scanf(%i, &num1);

17
18
19

printf(Informe o segundo numero: );


scanf(%i, &num2);

20
21
22

//operador de igualdade

op_igualdade = num1 == num2;

23
24
25

//operador de diferena

26

op_diferenca = num1 != num2;

27
28

printf(%i e igual a %i = %i \n,

29

printf(%i e diferente de %i = %i \n, num1,num2,op_diferenca);

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

importante observar que a linguagem C no possui um tipo de dados para representar


valores lgicos, ou seja, um tipo de dados que armazene os valores: verdadeiro ou falso. Em vez
disso, podemos utilizar 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 relacionais: empregados na comparao entre dados do mesmo tipo. As
possveis relaes a serem estabelecidas entre dois valores so: maior que, menor que,
maior ou igual que, menor ou igual que. No Quadro 11, veja quais so os operadores
relacionais.

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

89

Quadro 11 Operadores relacionais.


OPERADORES RELACIONAIS
OPERADOR

SMBOLO

EXEMPLO

RESULTADO

Maior que

>

10 > 20

Falso

Menor que

<

8<2

Falso

Maior ou igual que

>=

5 >= 5

Verdadeiro

Menor ou igual que

<=

25 <= 38

Verdadeiro

No Cdigo 22, temos um programa que demonstra a utilizao dos operadores relacionais, verifique:
Cdigo 22
1

/*

* Programa para exemplificar a utilizao

* dos operadores relacionais

* Autor: Joo da Silva

*/

7
8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13

int num1, num2;

int maior,menor,maiorigual,menorigual;

14
15
16

printf(Informe o primeiro numero: );


scanf(%i, &num1);

17
18
19

printf(Informe o segundo numero: );


scanf(%i, &num2);

20
21

maior = num1 > num2;

22

menor = num1 < num2;

23

maiorigual = num1 >= num2;

24

menorigual = num1 <= num2;

25
26
27

printf(%i e maior que %i = %i \n, num1,num2,maior);

28

printf(%i e menor que %i = %i \n, num1,num2,menor);

29

printf(%i e maior ou igual que %i= %i \n, num1,num2,maiorigual);

30

printf(%i e menor ou igual que %i= %i \n, num1,num2,menorigual);

31
32
33

return 0;

Fim cdigo 22

90

Computao

Resultado da execuo do programa:


Informe o primeiro numero: 10
Informe o segundo numero: 5
10 e maior que 5 = 1
10 e menor que 5 = 0
10 e maior ou igual que 5 = 1
10 e menor ou igual que 5 = 0

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

As tabelas verdade possuem os mesmos resultados da lgica matemtica.


Tabela 1 Tabela verdade dos principais conectivos lgicos.
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

/*

* Programa para exemplificar a utilizao

* dos operadores lgicos

* Autor: Joo da Silva

*/

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

8
9
10
11
12

//declarao das bibliotecas


#include <stdio.h>
int main()
{

13
14

printf(-----------------------\n);

15

printf(

16

printf(-----------------------\n);

17

printf(\n);

18

printf(Negacao (!)

Tabelas Verdade

\n);

\n);

printf( !1 \t= %i \n, !1);

19
20

printf( !0 \t= %i \n, !0);

21

printf(\n);

22
23

printf(Conjuncao (&&)

\n);

printf( 1 && 1 = %i \n, 1 && 1);

24

printf( 1 && 0 = %i \n, 1 && 0);

25

printf( 0 && 1 = %i \n, 0 && 1);

26
27

printf( 0 && 0 = %i \n, 0 && 0);

28

printf(\n);

29
30

printf(Disjuncao (||)

\n);

printf( 1 || 1 = %i \n, 1 || 1);

31

printf( 1 || 0 = %i \n, 1 || 0);

32

printf( 0 || 1 = %i \n, 0 || 1);

33

printf( 0 || 0 = %i \n, 0 || 0);

34
35
36

printf(\n);

37

printf(Disjuncao Exclusiva (^)

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

Resultado da execuo do programa:


----------------------Tabelas Verdade
----------------------Negacao (!)
!1
= 0
!0
= 1
Conjuncao
1 && 1 =
1 && 0 =
0 && 1 =
0 && 0 =

(&&)
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

Arredondamento de nmeros reais para cima.

ceil(2.3)

floor

Arredondamento de nmeros reais para baixo.

ceil(2.3)

abs ou fabs

Valor absoluto de um nmero.

abs(4)

exp

Logaritmo natural (x elevado potncia y).

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

Cosseno de ngulos em radianos.

cos(3.1415)

sin

Seno de ngulos em radianos.

sin(3.1415)

tan

Tangente de ngulos em radianos.

tan(3.1415)

O Cdigo 24 ilustra algumas das principais funes disponveis na biblioteca math.h.


Lembre-se de que, para utilizar essa biblioteca, voc dever adicionar a diretiva #include <math.
h>:
Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

Cdigo 24
1

/*

* Programa para demonstrar algumas

* funes da biblioteca math.h

* Autor: Joo da Silva

*/

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

printf(\n=> Arredondamento \n);

18

printf(Informe um numero: );
scanf(%f, &numero);

19
20

printf(Arredondamento para cima = %.2f \n, ceil(numero));

21

printf(Arredondamento para baixo = %.2f \n, floor(numero));

22
23

printf(\n=> Valor Absoluto \n);

24

printf(Informe um numero negativo: );


scanf(%f, &numero);

25
26

printf(Valor absoluto = %.2f \n, fabs(numero));

27
28

printf(\n=> Logaritmo \n);

29

printf(Informe um numero: );
scanf(%f, &numero);

30
31

printf(Log natural e^x = %.2f \n, exp(numero));

32

printf(Log natural = %.2f \n, log(numero));

33

printf(Log de base 10 = %.2f \n, log10(numero));

34
35

printf(\n=> Potenciacao \n);

36

printf(Informe um numero: );
scanf(%f, &numero);

37
38

printf(%.2f ao quadrado = %.2f \n, numero, pow(numero,2));

39

printf(%.2f ao cubo = %.2f \n, numero,pow(numero,3));

40
41

printf(\n=> Raiz Quadrada \n);

42

printf(Informe um numero: );
scanf(%f, &numero);

43
44

printf(Raiz quadrada de %.2f= %.2f \n,numero,sqrt(numero));

45
46
47

return 0;

Fim cdigo 24

93

94

Computao

Resultado da execuo do programa:

===== Biblioteca Matematica =====


=> Arredondamento
Informe um numero: 8.62
Arredondamento para cima = 9.00
Arredondamento para baixo = 8.00
=> Valor Absoluto
Informe um numero negativo: -4.23
Valor absoluto = 4.23
=> Logaritmo
Informe um numero: 2.5
Log natural e^x = 12.18
Log natural = 0.92
Log de base 10 = 0.40
=> Potenciacao
Informe um numero: 2
2.00 ao quadrado = 4.00
2.00 ao cubo = 8.00
=> Raiz Quadrada
Informe um numero: 25
Raiz quadrada de 25.00 = 5.00

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

/*

* Programa para demonstrar algumas

* funes da biblioteca math.h

* Autor: Joo da Silva

*/

7
8
9
10
11
12

#include <stdio.h>
#include <math.h>
int main()
{

13
14
15

const float PI = 3.1415;


float graus, radianos;

16
17
18
19
20
21

Claretiano -

printf(Informe um angulo em graus: );


scanf(%f, &graus);

radianos = (graus*PI)/180;
printf(%.2f graus = %.2f radianos \n,graus,radianos);

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

22
23

95

printf(Cosseno %.2f graus = %.2f \n,graus, cos(radianos));

24

printf(Seno %.2f graus = %.2f \n,graus, sin(radianos));

25

printf(Tangente %.2f graus = %.2f \n,graus, tan(radianos));

26
27

28

return 0;

Fim cdigo 25

Resultado da execuo do programa:


Informe um angulo em graus: 180
180.00 graus = 3.14 radianos
Cosseno 180.00 graus = -1.00
Seno 180.00 graus = 0.00
Tangente 180.00 graus = -0.00

Outra biblioteca importante da linguagem C a string.h. Essa biblioteca especializada


na manipulao de conjuntos de caracteres e algumas das suas principais funes esto listadas
no Quadro 14.
Quadro 14 Principais funes da biblioteca matemtica.
PRINCIPAIS FUNES DA BIBLIOTECA MATEMTICA
FUNO

UTILIZAO

EXEMPLO

RESULTADO

strcat

Concatenar duas strings.

strcat("Joo",da Silva);

"Joo da Silva"

strcpy

Copiar o contedo de uma string para


outra.

strcpy("Jos", Carlos);

Carlos

strcmp

Comparar duas strings.

strcmp("Joo", Joo");
strcmp("Joo", Jos");

0
1

strlen

Retornar o tamanho de uma string.

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

/*

* Programa para demonstrar algumas

* funes da biblioteca string.h

* Autor: Joo da Silva

*/

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

printf(Nome = %s \n, nome);

19

printf(Sobrenome = %s \n, sobrenome);

20
21

strcat(nome,sobrenome);

22

printf(Nome = %s \n, nome);

23
24

printf(O nome e Joao da Silva? %i\n,strcmp(nome,Joao da Silva));

25

printf(O nome e Joao da Silva? %i\n, strcmp(nome,Jose da Silva));

26
27

printf(O nome %s possui %i caracteres \n, nome, strlen(nome));

28
29

return 0;

30

Fim cdigo 26

Resultado da execuo do programa:

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

11. EXERCCIOS RESOLVIDOS


No final desta e das prximas unidades, voc encontrar um tpico chamado Exerccios
Resolvidos. Nele, voc poder visualizar a implementao de programas completos e que funcionam perfeitamente.
Os problemas propostos nesses tpicos so os mesmos vistos no material da disciplina de
Algoritmos e Programao. No entanto, aqui, voc encontrar as solues escritas na linguagem
de programao C.
1) Construa um programa que calcule a rea de um tringulo. Lembre-se de que para
base * altura
realizar esse clculo necessrio utilizar a frmula: rea =
.
2

Cdigo 27
1

/*

* Programa para calcular a rea de

* um tringulo

* Autor: Joo da Silva

*/

7
8
9

//declarao das bibliotecas


#include <stdio.h>

10

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

11
12

97

int main()
{

13

float base, altura, area;

14
15

printf(Calculo da Area do Triangulo\n);

16
17

printf(Informe a base: );

18

scanf(%f, &base);

19

printf(Informe a altura: );

20

scanf(%f,&altura);

21
22

//clculo da rea do tringulo

area = (base*altura)/2;

23
24
25

//resultado

26

printf(A area do triangulo e = %.2f, area);

27
28
29

return 0;

Fim cdigo 27

Resultado da execuo do programa:


Calculo da Area do Triangulo
Informe a base: 6.5
Informe a altura: 2.2
A area do triangulo e = 7.15

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

/*

* Programa para determinar o sucessor

* e o antecessor de um nmero inteiro.

* Autor: Joo da Silva

*/

7
8
9
10
11
12
13

//declarao das bibliotecas


#include <stdio.h>
int main()
{

int numero;

14
15

//leitura das informaes

16

printf(Informe um numero: );

17
18

scanf(%i, &numero);

98

Computao

19

//escrita do resultado na tela

printf(Sucessor = %i \n, (numero+1));

20

printf(Antecessor = %i \n, (numero-1));

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

/*

* Programa para demonstrar algumas

* funes da biblioteca math.h

* Autor: Joo da Silva

*/

7
8
9
10
11
12

#include <stdio.h>
#include <math.h>
int main()
{

13
14

float numero, raizquadrada;


float quadrado, cubo;

15
16
17

printf(Informe um numero: );
scanf(%f, &numero);

18
19
20

//raiz quadrada

raizquadrada = sqrt(numero);

21
22
23

//nmero elevado ao quadrado

quadrado = pow(numero, 2);

24
25
26

//nmero elevado ao cubo

cubo = pow(numero,3);

27
28

//resultado

29

printf(Raiz quadrada = %.2f \n, raizquadrada);

30

printf(Quadrado = %.2f \n, quadrado);

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

31

printf(Cubo = %.2f \n, cubo);

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

/*

* Programa para calcular o restante do

* salrio de um trabalhador

* Autor: Joo da Silva

*/

7
8

#include <stdio.h>

9
10
11
12

int main()
{

13

float salario, agua, luz, telefone;


float restante;

14
15
16

printf(Informe seu salario: );

17

scanf(%f,&salario);

18

printf(Valor da conta de Agua: );

19

scanf(%f,&agua);

20

printf(Valor da conta de Luz: );

21

scanf(%f,&luz);

22

printf(Valor da conta de Telefone: );

23

scanf(%f,&telefone);

24
25

//clculo do restante

restante = salario - (agua+luz+telefone);

26
27
28

//resultado

29

printf(O restante do seu salario R$ %.2f , restante);

30
31
32

return 0;

Fim cdigo 30

100

Computao

Resultado da execuo do programa:

Informe seu salario: 950.00


Valor da conta de Agua: 32.45
Valor da conta de Luz: 88.50
Valor da conta de Telefone: 42.30
O restante do seu salario e R$ 786.75

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

/*

* Programa para converter moedas

* Autor: Joo da Silva

*/

6
7
8
9
10

#include <stdio.h>
int main()
{

11

float valor_reais, cotacao_dolar, cotacao_euro;


float valor_dolar, valor_euro;

12
13
14

printf(Informe um valor para conversao (em reais): );

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

//converso real para dlar

valor_dolar = valor_reais / cotacao_dolar;

22
23
24

//converso real para euro

valor_euro = valor_reais / cotacao_euro;

25
26
27

//resultado

28

printf(Valor em dolar = %.2f \n , valor_dolar);

29

printf(Valor em euro = %.2f \n, valor_euro);

30
31
32

return 0;

Fim cdigo 31

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

101

Resultado da execuo do programa:

Informe um valor para converso (em


reais): 100.00
Cotao do Dlar: 2.07
Cotao do Euro: 2.85
Valor em dlar = 48.31
Valor em euro = 35.09

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

* Exemplo de aplicao com o objetivo de calcular o valor de um

04

* polinmio.

05

06

* Autor: Joo da Silva

07

08

*--------------------------------------------*/

09
10

/*----------------------------------------------

11

12

*--------------------------------------------*/

13

BIBLIOTECAS

#include <stdio.h>

//instrues de entrada e sada (printf e scanf)

14
15

/*---------------------------------------------*

16

17

PROGRAMA PRINCIPAL

*--------------------------------------------*/

18

int main()

19

20

// declarao das variveis globais

21

float x;

22

float resultado;

24

printf(-------------------------------\n);

25

printf(| CALCULO DE POLINOMIO

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

printf(\nO resultado do calculo do polinomio eh = %0.2f \n,resultado);

34
35
36

return 0;
}

Fim cdigo 32

// fim da aplicao

102

Computao

Observe, na captura de tela a seguir, o resultado da execuo do programa no ambiente


de desenvolvimento. Neste caso, foi utilizado o ambiente Code::Blocks. No entanto, a sada ser
semelhante em outros ambientes, como, por exemplo, no NetBeans. Este resultado obtido
com a compilao e a execuo do cdigo-fonte apresentado no Cdigo 32.
Resultado da execuo do programa:

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

* Autor: Joo da Silva

07

08

*-------------------------------------------*/

* Exemplo de uma aplicao com o objetivo de calcular as condies de pagamento de um

09
10

/*---------------------------------------------

11

12
13

BIBLIOTECAS

*-------------------------------------------*/
#include <stdio.h>

//instrues de entrada e sada (printf e scanf)

14
15

/*--------------------------------------------*

16

17

PROGRAMA PRINCIPAL

*-------------------------------------------*/

18

int main()

19

20

// declarao das variveis globais

21

float peso_atual;

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

22

103

float peso_novo;

23
24

printf(------------------------------\n);

25

printf(| CALCULO DO PESO

26

printf(------------------------------\n);

27

printf(\n);

28

printf(Informe seu peso atual: );

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

Observe, na captura de tela a seguir, o resultado da execuo do programa no ambiente


de desenvolvimento. Neste caso, foi utilizado o ambiente Code::Blocks. No entanto, a sada ser
semelhante em outros ambientes, como, por exemplo, no NetBeans. Este resultado obtido
com a compilao e a execuo do cdigo-fonte apresentado no Cdigo 33.

Resultado da execuo do programa:

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)

1 + 6 sem juros, e sem desconto no valor do produto;


1 + 7 sem juros, e sem desconto no valor do produto;
1 + 8 sem juros, e sem desconto no valor do produto;
1 + 9 sem juros, e sem desconto no valor do produto.

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

* Exemplo de aplicao com o objetivo de calcular o valor de um

04

* polinmio.

05

06

* Autor: Joo da Silva

07

08

*-----------------------------------------------*/

09
10

/*-------------------------------------------------

11

12
13

BIBLIOTECAS

*-----------------------------------------------*/
#include <stdio.h>

//instrues de entrada e sada (printf e scanf)

14
15

/*------------------------------------------------*

16

17

PROGRAMA PRINCIPAL

*-----------------------------------------------*/

18

int main()

19

20

// declarao das variveis globais

21

float preco_produto;

22

float condicao_pagamento_01, condicao_pagamento_02;

23

float condicao_pagamento_03, condicao_pagamento_04;

24

float condicao_pagamento_05, condicao_pagamento_06;

25

float condicao_pagamento_07, condicao_pagamento_08;

26

float condicao_pagamento_09, condicao_pagamento_10;

27
28

printf(----------------------------------\n);

29

printf(| LOJA DE DEPARTAMENTOS

30

printf(----------------------------------\n);

31

printf(\n); //pular uma linha

32

printf(Informe o preco total do produto: );

33

scanf(%f,&preco_produto);

\n);

34
35
36
37
38
39
40

Claretiano -

// calculo das condies de pagamento


// a.

vista com 20% de desconto no valor do produto

condicao_pagamento_01 = preco_produto-(preco_produto*0.20);
//b.

REDE DE EDUCAO

1 + 1 sem juros com 10% de desconto no valor do produto

Fundamentos da Linguagem de Programao C

41
42
43
44
45
46
47
48
49
50

105

condicao_pagamento_02 = (preco_produto- (preco_produto*0.10))/2;


//c.

1 + 2 sem juros com 5% de desconto no valor do produto

condicao_pagamento_03 = (preco_produto-(preco_produto*0.05))/3;
//d.

1 + 3 sem juros e sem desconto no valor do produto

condicao_pagamento_04 = (preco_produto/4);
//e.

1 + 4 sem juros e sem desconto no valor do produto

condicao_pagamento_05 = (preco_produto/5);

51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

//f.

1 + 5 sem juros e sem desconto no valor do produto

condicao_pagamento_06 = (preco_produto/6);
//g.

1 + 6 sem juros e sem desconto no valor do produto

condicao_pagamento_07 = (preco_produto/7);
//h.

1 + 7 sem juros e sem desconto no valor do produto

condicao_pagamento_08 = (preco_produto/8);
//i.

1 + 8 sem juros e sem desconto no valor do produto

condicao_pagamento_09 = (preco_produto/9);
//j.

1 + 9 sem juros e sem desconto no valor do produto

condicao_pagamento_10 = (preco_produto/10);

66
67
68
69

//apresentao dos resultados do programa (sada)

70

printf(\n); //pular uma linha

71

printf(\n); //pular uma linha

72
73

printf(--------------------------------\n);

74

printf(--------------------------------\n);

75

printf(\n); //pular uma linha

76
77

printf(>>>Condicao 01: \n);


printf(..............: A vista com 20%% de desconto = R$ %0.2f \n,condicao_
pagamento_01);
printf(\n); //pular uma linha

78
79
80
81
82
83
84
85
86
87
88
89
90

printf( >>> CONDICOES ESPECIAIS DE PAGAMENTO <<< \n);

printf(>>>Condicao 02: \n);


printf(..............: 1 + 1 sem juros com 10%% de desconto no valor do produto
\n);
printf(.......Entrada: 1x de R$ %0.2f \n, condicao_pagamento_02);
printf(......Restante: 1x de R$ %0.2f (uma parcela)\n, condicao_pagamento_02);
printf(\n); //pular uma linha
printf(>>>Condicao 03: \n);
printf(..............: 1 + 2 sem juros com 5%% de desconto no valor do produto
\n);
printf(.......Entrada: 1x de R$ %0.2f \n, condicao_pagamento_03);
printf(......Restante: 2x de R$ %0.2f (duas parcelas)\n, condicao_pagamento_03);
printf(>>>Condicao 04: \n);
printf(..............: 1 + 3 sem juros e sem desconto no valor do produto \n);
printf(.......Entrada: 1x de R$ %0.2f \n, condicao_pagamento_04);

106

Computao

91

printf(......Restante: 3x de R$ %0.2f (tres parcelas)\n, condicao_pagamento_04);

92

printf(\n); //pular uma linha

93
94

printf(>>>Condicao 05: \n);


printf(..............: 1 + 4 sem juros e sem desconto no valor do produto \n);

95

printf(.......Entrada: 1x de R$ %0.2f \n, condicao_pagamento_05);


printf(......Restante: 4x de R$ %0.2f (quatro parcelas)\n, condicao_
pagamento_05);
printf(\n); //pular uma linha

96
97
98
99

printf(>>>Condicao 06: \n);


printf(..............: 1 + 5 sem juros e sem desconto no valor do produto \n);

100

printf(.......Entrada: 1x de R$ %0.2f \n, condicao_pagamento_06);


printf(......Restante: 5x de R$ %0.2f (cinco parcelas)\n, condicao_
pagamento_06);
printf(\n); //pular uma linha

101
102
103
104

printf(>>>Condicao 07: \n);


printf(..............: 1 + 6 sem juros e sem desconto no valor do produto \n);

105

printf(.......Entrada: 1x de R$ %0.2f \n, condicao_pagamento_07);

106

printf(......Restante: 6x de R$ %0.2f (seis parcelas)\n, condicao_pagamento_07);

107

printf(\n); //pular uma linha

108
109

printf(>>>Condicao 08: \n);


printf(..............: 1 + 7 sem juros e sem desconto no valor do produto \n);

110

printf(.......Entrada: 1x de R$ %0.2f \n, condicao_pagamento_08);

111

printf(......Restante: 7x de R$ %0.2f (sete parcelas)\n, condicao_pagamento_08);

112

printf(\n); //pular uma linha

113
114

printf(>>>Condicao 09: \n);


printf(..............: 1 + 8 sem juros e sem desconto no valor do produto \n);

115

printf(.......Entrada: 1x de R$ %0.2f \n, condicao_pagamento_09);

116

printf(......Restante: 8x de R$ %0.2f (oito parcelas)\n, condicao_pagamento_09);

117

printf(\n); //pular uma linha

118
119

printf(>>>Condicao 10: \n);


printf(..............: 1 + 9 sem juros e sem desconto no valor do produto \n);

120

printf(.......Entrada: 1x de R$ %0.2f \n, condicao_pagamento_10);

121

printf(......Restante: 9x de R$ %0.2f (nove parcelas)\n, condicao_pagamento_10);

122

printf(\n); //pular uma linha

123
124

return 0;

// fim da aplicao

125
126

Fim cdigo 34

Observe, na captura de tela a seguir, o resultado da execuo do programa no ambiente


de desenvolvimento. Neste caso, foi utilizado o ambiente Code::Blocks. No entanto, a sada ser
semelhante em outros ambientes, como, por exemplo, no NetBeans. Este resultado obtido
com a compilao e a execuo do cdigo-fonte apresentado anteriormente.

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

107

Resultado da execuo do programa:

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

* Exemplo de uma aplicao capaz de construir interfaces grficas

04

* com o usurio utilizando os caracteres da tabela ASCII. Essa

05

* aplicao demonstra os principais caracteres utilizados

06

* na elaborao de interfaces grficas.

07

08

* Autor: Joo da Silva

09

10

*-------------------------------------------------*/

11
12 /*--------------------------------------------------13

BIBLIOTECAS

14

*-------------------------------------------------*/

15 #include <stdio.h>

//instrues de entrada e sada (printf e scanf)

16
17 /*--------------------------------------------------*
18

19

*-------------------------------------------------*/

PROGRAMA PRINCIPAL

108

Computao

20 int main()
21 {
22

// declarao das variveis globais

23
24
25

printf(------------------------------------\n);

26

printf(| INTERFACES GRFICAS COM A TABELA ASCII

27

printf(----------------------------------------\n);

28

printf(\n); //pular uma linha

29

printf(\n); //pular uma linha

30

printf(>>>Caracteres para preenchimento\n);

31

printf(\n);

32

printf(Codigo da Tabela 176, caractere resultante %c \n, 176);

33

printf(......................Exemplo: %c%c%c%c%c \n\n,176,176,176,176,176);

34

printf(Codigo da Tabela 177, caractere resultante %c \n, 177);

35

printf(......................Exemplo: %c%c%c%c%c \n\n,177,177,177,177,177);

36

printf(Codigo da Tabela 178, caractere resultante %c \n, 178);

37

printf(......................Exemplo: %c%c%c%c%c \n\n,178,178,178,178,178);

\n);

38
39

printf(\n); //pular uma linha

40

printf(>>>Caracteres para construcao de janelas (simples)\n);

41

printf(\n);

42

printf(Codigo da Tabela 218, caractere resultante %c \n, 218);

43

printf(Codigo da Tabela 196, caractere resultante %c \n, 196);

44

printf(Codigo da Tabela 191, caractere resultante %c \n, 191);

45

printf(Codigo da Tabela 179, caractere resultante %c \n, 179);

46

printf(Codigo da Tabela 217, caractere resultante %c \n, 217);

47

printf(Codigo da Tabela 192, caractere resultante %c \n, 192);

48

printf(Codigo da Tabela 180, caractere resultante %c \n, 180);

49

printf(Codigo da Tabela 193, caractere resultante %c \n, 193);

50

printf(Codigo da Tabela 194, caractere resultante %c \n, 194);

51

printf(Codigo da Tabela 195, caractere resultante %c \n, 195);

52

printf(Codigo da Tabela 197, caractere resultante %c \n, 197);

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

printf(>>>Caracteres para construcao de janelas (duplo)\n);

59

printf(\n);

60

printf(Codigo da Tabela 201, caractere resultante %c \n, 201);

61

printf(Codigo da Tabela 205, caractere resultante %c \n, 205);

62

printf(Codigo da Tabela 187, caractere resultante %c \n, 187);

63

printf(Codigo da Tabela 186, caractere resultante %c \n, 186);

64

printf(Codigo da Tabela 188, caractere resultante %c \n, 188);

65

printf(Codigo da Tabela 200, caractere resultante %c \n, 200);

66

printf(Codigo da Tabela 185, caractere resultante %c \n, 185);

67

printf(Codigo da Tabela 202, caractere resultante %c \n, 202);

68

printf(Codigo da Tabela 203, caractere resultante %c \n, 203);

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

69

printf(Codigo da Tabela 204, caractere resultante %c \n, 204);

70

printf(Codigo da Tabela 206, caractere resultante %c \n, 206);

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

Observe, na captura de tela a seguir, o resultado da execuo do programa no ambiente


de desenvolvimento. Neste caso, foi utilizado o ambiente Code::Blocks. No entanto, a sada ser
semelhante em outros ambientes, como, por exemplo, no NetBeans. Este resultado obtido
com a compilao e a execuo do cdigo-fonte apresentado no Cdigo 35.

110

Computao

Resultado da execuo do programa:

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

Fundamentos da Linguagem de Programao C

Quadro 15 Informaes Pessoais.


INFORMAES PESSOAIS
NOME

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

* Exemplo de aplicao com o objetivo de apresentar

02

04

* um conjunto de informaes na tela de maneira tabulada

05

* por meio dos cdigos de barra invertida

06

07

* Autor: Joo da Silva

08

09

* Importante: Como a apresentao de informaes na

10

tela em modo console (ou prompt de

portuguesa, TODAS as sadas e informaes textuais

11

12
13

14
15
16
17
18

comando) no

demonstra adequadamente os acentos da

foram propositalmente codificadas SEM acento.

*----------------- ---------------------------------*/
/*----------------------------------------------------*

BIBLIOTECAS

*---------------------------------------------------*/

19

#include <stdio.h>

21

/*----------------------------------------------------*

23

*---------------------------------------------------*/

20
22
24
25
26
27
28

//instrues de entrada e sada (printf e scanf)

PROGRAMA PRINCIPAL

int main()
{

// declarao das variveis globais

char titulo_do_programa[30] = INFORMACOES PESSOAIS;

29

char pessoa1_nome[20] = Joao da Silva;

31

char pessoa1_telefone[20] = (11) 3323-2233;

30
32

char pessoa1_datanascimento[20] = 03/04/1968;

33

char pessoa2_nome[20] = Carlos Antonio;

35

char pessoa2_telefone[20] = (12) 8342-4432;

34
36

char pessoa2_datanascimento[20] = 08/10/1976;

37

char pessoa3_nome[20] = Francisco Jose;

39

char pessoa3_telefone[20] = (11) 3334-5533;

38
40
41
42

lngua

char pessoa3_datanascimento[20] = 12/12/1982;

char pessoa4_nome[20] = Ana Maria;

char pessoa4_datanascimento[20] = 11/09/1980;

111

112

Computao

43

char pessoa4_telefone[20] = (11) 2342-4336;

45

// APRESENTAO DAS INFORMAES NA TELA

44

// Construo de uma interface grfica utilizando cdigos da tabela ASCII e os


cdigos de barra invertida

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

// Tabulao dos dados com os cdigos de barra invertida

66

printf(%s \t %s \t %s \n, pessoa1_nome, pessoa1_datanascimento,pessoa1_


telefone);

65

printf(NOME \t \t DT.NASC. \t TELEFONE \n);

printf(%s \t %s \t %s \n, pessoa2_nome, pessoa2_datanascimento,pessoa2_


telefone);

67

printf(%s \t %s \t %s \n, pessoa3_nome, pessoa3_datanascimento,pessoa3_


telefone);

68

printf(%s \t %s \t %s \n, pessoa4_nome, pessoa4_datanascimento,pessoa4_


telefone);

69
70
71
72

return 0;

// fim da aplicao

Fim cdigo 36

Observe, na captura de tela a seguir, o resultado da execuo do programa no ambiente


de desenvolvimento. Neste caso, foi utilizado o ambiente Code::Blocks. No entanto, a sada ser
semelhante em outros ambientes, como, por exemplo, no NetBeans. Este resultado obtido
com a compilao e a execuo do cdigo-fonte apresentado no Cdigo 36.

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

113

Resultado da execuo do programa:

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

* Exemplo de aplicao com o objetivo de apresentar

04

* um conjunto de informaes na tela de maneira tabulada

05

* por meio dos cdigos de barra invertida

06

07

* Autor: Joo da Silva

08

09

* Importante: Como a apresentao de informaes na tela

10

em modo console (ou prompt de comando) no

11

demonstra adequadamente os acentos da lingua

12

portuguesa, TODAS as sadas e informaes textuais

13

foram propositalmente codificadas SEM acento.

14

*------------------------------------------*/

15
16

/*--------------------------------------------

17

18
19

BIBLIOTECAS

*------------------------------------------*/
#include <stdio.h>

//instrues de entrada e sada (printf e scanf)

20
21

/*-------------------------------------------*

22

23

*------------------------------------------*/

PROGRAMA PRINCIPAL

24

int main()

25

26

// declarao das variveis globais

27

char titulo_do_programa[30] = INFORMACOES PESSOAIS;

28

114

Computao

29

char pessoa1_nome[20] = Joao da Silva;

30

char pessoa1_datanascimento[20] = 03/04/1968;

31

char pessoa1_telefone[20] = (11)3323-2233;

32
33

char pessoa2_nome[20] = Carlos Antonio;

34

char pessoa2_datanascimento[20] = 08/10/1976;

35

char pessoa2_telefone[20] = (12) 8342-4432;

36
37

char pessoa3_nome[20] = Francisco Jose;

38

char pessoa3_datanascimento[20] = 12/12/1982;

39

char pessoa3_telefone[20] = (11) 3334-5533;

40
41

char pessoa4_nome[20] = Ana Maria;

42

char pessoa4_datanascimento[20] = 11/09/1980;

43

char pessoa4_telefone[20] = (11) 2342-4336;

44
45

// APRESENTAO DAS INFORMAES NA TELA

46

// Construo de uma interface grfica utilizando cdigos da tabela ASCII

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

// Tabulao dos dados com os cdigos de barra invertida

68

printf(%c

69

NOME \t \t%c DT.NASC. \t%c TELEFONE \t

%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

printf(%c %s \t%c %s \t%c %s %c \n,179, pessoa1_nome, 179, pessoa1_


datanascimento, 179,pessoa1_telefone,179);

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

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

printf(%c %s \t%c %s \t%c %s %c \n,179, pessoa2_nome, 179, pessoa2_


datanascimento,179,pessoa2_telefone,179);

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

printf(%c %s \t%c %s \t%c %s %c\n,179, pessoa3_nome, 179, pessoa3_


datanascimento,179,pessoa3_telefone,179);

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

printf(%c %s \t\t%c %s \t%c %s %c \n,179, pessoa4_nome, 179, pessoa4_


datanascimento,179,pessoa4_telefone,179);

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

Observe, na captura de tela a seguir, o resultado da execuo do programa no ambiente


de desenvolvimento. Neste caso, foi utilizado o ambiente Code::Blocks. No entanto, a sada ser
semelhante em outros ambientes, como, por exemplo, no NetBeans. Este resultado obtido
com a compilao e a execuo do cdigo-fonte apresentado no Cdigo 37.

116

Computao

Resultado da execuo do programa:

12) O Imposto sobre a Propriedade de Veculos Automotores, conhecido comumente


como IPVA, um tributo aplicado a todos os proprietrios de veculos automotores. A
alquota utilizada para o clculo do imposto determinada por cada governo estadual
com base em um critrio prprio. A base de clculo do imposto o valor venal do veculo. Dentro desse contexto, escreva, na linguagem C, um programa capaz de calcular
o valor do IPVA de um veculo do tipo automvel. Para isso, o programa dever solicitar ao usurio o valor venal do veculo e em seguida a alquota do imposto. O imposto
pago dever ser calculado e apresentado na tela.
Cdigo 38
01

/*---------------------------------------------------

02

03

* Exemplo de aplicao com o objetivo de calcular o valor do

04

* IPVA de uma automvel de passeio.

05

06

* Autor: Joo da Silva

07

08

*-------------------------------------------------*/

09
10

/*---------------------------------------------------

11

12

*-------------------------------------------------*/

13

BIBLIOTECAS

#include <stdio.h>

//instrues de entrada e sada (printf e scanf)

14
15

/*--------------------------------------------------*

16

17

PROGRAMA PRINCIPAL

*-------------------------------------------------*/

18

int main()

19

20

// declarao das variveis globais

21

char titulo_do_programa[30] = CALCULO DO IPVA;

22

float valor_venal_veiculo;

23

float aliquota_ipva;

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

24

117

float total_imposto;

25
26

// APRESENTAO DAS INFORMAES NA TELA

27

// Construo de uma interface grfica utilizando cdigos da tabela ASCII

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

printf(Informe o valor venal do veiculo: );

45

scanf(%f,&valor_venal_veiculo);

46
47

printf(Informe a aliquota do imposto (Exemplo 4% = 0.04): );

48

scanf(%f,&aliquota_ipva);

49
50

//calculo do imposto

51

total_imposto = valor_venal_veiculo*aliquota_ipva;

52
53
54

//apresentao dos resultados (sada na tela)

55

printf(\n\n>>> RESULTADO <<< \n);

56

printf(......Total de imposto a ser pago R$ %0.2f \n, total_imposto);

57
58
59

return 0;

// fim da aplicao

60
61

Fim cdigo 38

Observe, na captura de tela a seguir, o resultado da execuo do programa no ambiente


de desenvolvimento. Neste caso, foi utilizado o ambiente Code::Blocks. No entanto, a sada ser
semelhante em outros ambientes, como, por exemplo, no NetBeans. Este resultado obtido
com a compilao e a execuo do cdigo-fonte apresentado no Cdigo 38.

118

Computao

Resultado da execuo do programa:

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

* Exemplo de aplicao com o objetivo de calcular a velocidade

04

* de um maratonista em metros por segundo

05

06

* Autor: Joo da Silva

07

08

*-------------------------------------------------*/

09
10

/*---------------------------------------------------

11

12

*-------------------------------------------------*/

13

BIBLIOTECAS

#include <stdio.h>

//instrues de entrada e sada (printf e scanf)

14
15

/*--------------------------------------------------*

16

17

PROGRAMA PRINCIPAL

*-------------------------------------------------*/

18

int main()

19

20

// declarao das variveis globais

21

char titulo_do_programa[30] = MARATONA;

22

float distancia_quilometros;

23

float distancia_metros;

24

float tempo_minutos;

25

float tempo_segundos;

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

26

119

float velocidade_maratonista;

27
28

// APRESENTAO DAS INFORMAES NA TELA

29

// Construo de uma interface grfica utilizando cdigos da tabela ASCII

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

printf(Informe a distancia em Km: );

44

scanf(%f,&distancia_quilometros);

45
46

printf(Informe o tempo em minutos: );

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

//apresentao dos resultados (sada na tela)

56

printf(\n\n>>> RESULTADO <<< \n);

57

printf(......Velocidade do maratonista em Metros por segundo = %0.2f \n,


velocidade_maratonista);

58
59
60
61

return 0;

// fim da aplicao

Fim cdigo 39

Observe, na captura de tela a seguir, o resultado da execuo do programa no ambiente


de desenvolvimento. Neste caso, foi utilizado o ambiente Code::Blocks. No entanto, a sada ser
semelhante em outros ambientes, como, por exemplo, no NetBeans. Este resultado obtido
com a compilao e a execuo do cdigo-fonte apresentado no Cdigo 39.

120

Computao

Resultado da execuo do programa:

12. QUESTES AUTOAVALIATIVAS


A elaborao de programas de computador envolve questes tericas e prticas. Por isso,
essencial que voc esteja sintonizado com os assuntos tericos e, principalmente, que saiba
como aplic-los em problemas prticos. As questes autoavaliativas dessa unidade abordam aspectos fundamentais da construo de programas. O conhecimento desses aspectos ser essencial ao longo do estudo das outras unidades. Aproveite para realizar uma reviso. Bons estudos!
1) Relate a importncia de Dennis Ritchie no desenvolvimento de programas.
2) Qual a estrutura bsica de um programa na linguagem C?
3) Nos cdigos de programao, reflita sobre a utilidade da diretiva #include e do bloco main{ .... }.
4) Quais relaes podem ser definidas em uma anlise comparativa entre a estrutura bsica de algoritmos e programas na linguagem C?
5) Considerando que os dados se dividem em tipos especficos em funo das caractersticas das informaes que
eles armazenam, explique os tipos de dados int, char, float e void.
6) O que uma varivel? Apresente um exemplo de declarao de uma varivel do tipo int, uma do tipo char, uma
do tipo float e uma do tipo void.
7) O que um operador de atribuio?
8) Refletindo sobre a sintaxe de um comando de atribuio, ilustre, por meio de um cdigo na linguagem C, a atribuio do valor 42 para uma varivel do tipo int.
9) Ilustre, por meio de um cdigo na linguagem C, a atribuio do valor 25.98 para uma varivel do tipo float.
10) Explique o que ocorre quando um valor do tipo 25.66 atribudo para uma varivel do tipo int.
11) Apresente um exemplo de um comentrio de uma nica linha e um exemplo de um comentrio com mltiplas
linhas.
12) Qual a utilidade da inicializao das variveis? E qual sua relao com o lixo de memria?
13) Pensando na definio de constantes, explique a sintaxe de declarao de uma constante.
14) Explique o conceito case-sensitite.

Claretiano -

REDE DE EDUCAO

Fundamentos da Linguagem de Programao C

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).

14. REFERNCIA BIBLIOGRFICA


SCHILDT, H. C completo e total. So Paulo: Makron Books, 1997.

Claretiano -

REDE DE EDUCAO

Vous aimerez peut-être aussi