Você está na página 1de 139

PROF.

SOLIMARA RAVANI DE SANTANNA

PROGRAMAO I

VITRIA
2009

2
Governo Federal
Ministro de Educao
Fernando Haddad
Ifes Instituto Federal do Esprito Santo
Reitor
Dnio Rebello Arantes
Pr-Reitora de Ensino
Cristiane Tenan Schlittler dos Santos
Coordenadora do CEAD Centro de Educao a Distncia
Yvina Pavan Baldo
Coordenadoras da UAB Universidade Aberta do Brasil
Yvina Pavan Baldo
Maria das Graas Zamborlini
Curso de Tecnologia em Anlise e Desenvolvimento de Sistemas
Coordenao de Curso
Isaura Nobre
Designer Instrucional
Danielli Veiga Carneiro
Professor Especialista/Autor
Solimara Ravani SantAnna

Catalogao da fonte: Rogria Gomes Belchior - CRB 12/417


S231 SantAnna, Solimara Ravani
Programao I. / Solimara Ravani SantAnna. Vitria: CEFETES, 2007.
139 p. : il.
1. Algoritmos. 2. C (linguagem de programao de computadores).

3. Programao de computadores. I. Centro Federal de Educao
Tecnolgica do Esprito Santo. II. Ttulo.
CDD 005.133
005.1

DIREITOS RESERVADOS
Ifes Instituto Federal do Esprito Santo
Av. Vitria Jucutuquara Vitria ES - CEP - (27) 3331.2139
Crditos de autoria da editorao
Capa: Juliana Cristina da Silva
Projeto grfico: Juliana Cristina da Silva / Nelson Torres
Iconografia: Nelson Torres
Editorao eletrnica: Duo Translations
Reviso Tcnica:
Henrique Monteiro Cristovo
Reviso de texto:
Ilioni Augusta da Costa
Maria Madalena Covre da Silva
COPYRIGHT proibida a reproduo, mesmo que parcial, por qualquer meio, sem autorizao escrita dos autores
e do detentor dos direitos autorais.
Tecnologia em Anlise e Desenvolvimento de Sistemas

Ol, Aluno(a)!

um prazer t-lo(a) conosco.


O Ifes oferece a voc, em parceria com as Prefeituras e com o Governo
Federal, o Curso Superior de Tecnologia em Anlise e Desenvolvimento
de Sistemas, na modalidade a distncia. Apesar de este curso ser ofertado
a distncia, esperamos que haja proximidade entre ns, pois, hoje, graas
aos recursos da tecnologia da informao (e-mails, chat, videoconferncia, etc.), podemos manter uma comunicao efetiva.
importante que voc conhea toda a equipe envolvida neste curso: coordenadores, professores especialistas, tutores a distncia e tutores presenciais,
porque, quando precisar de algum tipo de ajuda, saber a quem recorrer.
Na EaD - Educao a Distncia, voc o grande responsvel pelo sucesso da
aprendizagem. Por isso, necessrio que voc se organize para os estudos e
para a realizao de todas as atividades, nos prazos estabelecidos, conforme
orientao dos Professores Especialistas e Tutores.
Fique atento s orientaes de estudo que se encontram no Manual do Aluno.
A EaD, pela sua caracterstica de amplitude e pelo uso de tecnologias modernas, representa uma nova forma de aprender, respeitando, sempre, o
seu tempo.

Desejamos-lhe sucesso e dedicao!

Equipe do Ifes

Programao I

ICONOGRAFIA
Veja, abaixo, alguns smbolos utilizados neste material para gui-lo em seus estudos.

Fala do Professor

Conceitos importantes. Fique atento!

Atividades que devem ser elaboradas por voc,


aps a leitura dos textos.

Indicao de leituras complemtares, referentes


ao contedo estudado.

Destaque de algo importante, referente ao


contedo apresentado. Ateno!

Reflexo/questionamento sobre algo importante referente ao contedo apresentado.

Espao reservado para as anotaes que voc


julgar necessrias.

Tecnologia em Anlise e Desenvolvimento de Sistemas

PROGRAMAO I
Cap. 1 - ALGORITMOS 9
1.1 Entendendo Algoritmos 9
1.2 Construindo Algoritmos 10
1.3 Construindo Algoritmos Para Computadores 13
1.3.1 Reservando Memria 13
1.3.2 Variveis 13
1.3.3 Constantes 17
1.4 Operadores 19
1.4.1 Operadores Aritmticos 19
1.4.2 Operadores Relacionais 19
1.4.3 Operadores Lgicos 19
1.5 Expresso Aritmtica e Expresso Lgica 21
1.5.1 Expresso Aritmtica 21
1.5.2 Expresso Lgica 21
1.6 Comandos de Atribuio, de Entrada, de Sada e
Comentrio 24
1.6.1 Comando de Atribuio 24
1.6.2 Comando de Entrada 25
1.6.3 Comando de Sada 25
1.6.4 Comentrios 26
1.6.5 Como Construir Algoritmo 29

Cap. 2 - LINGUAGEM C 35
2.1 As Telas do Bloodshed Dev-C++ 36
2.2 Viso Geral da Linguagem C 41
2.3 Comandos da Linguagem de Programao C 42
2.4 Constantes e Variveis na Linguagem de
Programao C 47
2.4.1 Tipos de Variveis na Linguagem de
Programao C 48
2.5 Alguns dos Cdigos para Impresso Formatada
de Printf( ) 49
2.6 Cdigos Utilizados Pela Funo Scanf( ) 50
2.7 Como fazer Comentrios 50
2.8 Comandos de Seleo 54
2.8.1 Comando If 54
2.8.2 Comando If-Else 60
2.8.3 Comando Switch 67
2.9 Comandos de Repetio 74
Programao I

2.9.1 O Comando For 74


2.9.2. O Comando While 81
2.9.3. O Comando do while 86

Cap. 3 - VETORES E MATRIZES 93


3.1 Entendendo Vetor 93
3.1.1 Declarando Vetor 93
3.1.2 Atribuindo Valores ao Vetor (Inicializao) 94
3.1.3 Vetor de String 99
3.1.4 Leitura de Vetor de String 100
3.2 Matriz 102
3.2.1 Matriz de String 105

Cap. 4 - ESTRUTURAS(STRUCT) 111


4.1 Declarando uma Estrutura 111
4.2 Utilizando Estrutura no Programa 114
4.3 Vetores de Estrutura (Struct) 116

Cap. 5 - PROCEDIMENTOS E FUNES 123


5.1 Modularizao 123
5.2 Funes 124
5.2.1 Entendendo Funes 124
5.3 Procedimentos 126
5.3.1 Entendendo Procedimentos 126
5.4 Escopo de Variveis 129
5.1.4 Passagem de Parmetro 129
5.1.5 Funes Recursivas 134
5.1.6 Prottipo de Funo 136

REFERNCIAS BIBLIOGRFICAS 139

Tecnologia em Anlise e Desenvolvimento de Sistemas

APRESENTAO

Ol,
Nessa disciplina vamos conhecer o que Algoritmo e aprender a resolver problemas de forma que o computador possa
entender e executar.
Vamos aprender os conceitos bsicos da linguagem de programao C, que ser utilizada para desenvolvimento dos programas.
O material impresso que voc utilizar nessa disciplina foi preparado valorizando os detalhes, no intuito de amenizar as dificuldades que possam aparecer em nosso percurso, na sala de aula.
importante que voc o tenha sempre ao alcance, aproveitando o tempo disponvel para leitura, reviso ou execuo
das atividades.
Todas as atividades aqui propostas, apesar de no serem avaliativas, devero ser realizadas individualmente, pois s dessa forma
voc adquirir auto confiana, e prtica na soluo de problemas
que envolvem computadores.
Para valorizar o estudo of-line, sero encontradas ao longo do
material, Ilustraes demostrando digitao, compilao e execuo (no DEV C++), dos exemplos apresentados, j que alguns alunos no dispem de computador com facilidade.
Apesar de a equipe EaD ser composta por profissionais compromissados com o seu aprendizado, importante que voc
faa a sua parte com o mesmo comprometimento; s assim
todos, voc e a equipe EaD, podero desfrutar do sucesso ao
final dessa caminhada.
Bom estudo!!!!

Programao I

Tecnologia em Anlise e Desenvolvimento de Sistemas

ALGORITMOS

Caro aluno,
Vamos iniciar o primeiro captulo, em que voc estudar o conceito de Algoritmo. Nessa fase, trabalharemos com exemplos da nossa
vida diria no intuito de um entendimento correto desse conceito.
importante que ao final deste Captulo, voc tenha clareza a respeito do significado de Algoritmo, a fim de iniciarmos nossa trajetria no mundo computacional.
Bom estudo!

Quando criamos um Algoritmo, o que fazemos, apontar uma dentre


muitas solues possveis a um problema qualquer.
Para que a soluo por ns apontada possa solucionar corretamente o
problema, ela dever ser pensada, planejada, executada e, por fim, testada. Somente aps passarmos por essas etapas, teremos garantia mnima
da soluo do problema. Todas as etapas sero utilizadas por voc no
decorrer do nosso curso.

1.1 Entendendo Algoritmos


Exemplo: Suponha o seguinte problema: como proceder para NO obter sucesso nos cursos a distncia.
Receita: Como NO obter sucesso nos Cursos EaD
1. No administre seu tempo de forma a estudar pelo menos 2
horas por dia.
2. S participe das discusses nos fruns quando o assunto lhe interessar.
3. Nunca tenha o material impresso ao alcance de forma a aproveitar qualquer tempo para leitura.
4. Avance para o Captulo seguinte na certeza de que entender
melhor o anterior.
5. Nunca tente resolver os exerccios sozinho, resolva-os sempre
com a ajuda do tutor.
Programao I

10
Captulo 1

Certamente que NO seguiremos esses passos, mas fica claro que


basta qualquer pessoa segu-los para obter o resultado.

Exemplo: Suponha outro problema: como fazer um bolo.


Receita: Bolo Festa
1. Separe os seguintes ingredientes: ovos, trigo, sal, leite, acar e fermento.
2. Bata em uma tigela a manteiga com o acar.
3. Acrescente as gemas, o leite, o trigo e o sal.
4. Misture bem.
5. Acrescente o fermento.
6. Coloque a massa na assadeira.
7. Asse por 30 minutos.
Os dois exemplos acima so Algoritmos, pois enumeram passos que levam soluo de problemas especficos.

1.2 Construindo Algoritmos


Vamos construir Algoritmos para resolver problemas propostos em
alguns sites.
1. Tente conduzir a vaquinha at o trofu. Acesse o link: http://
www.q-lympics.de/iq-marathon/
Clique em Starten e depois em Ok. Agora, arraste as setas para
determinar o caminho da vaquinha e em seguida aperte Go. Observe o cdigo que aparece em cada mudana de fase. Ele permite
que voc depois continue daquele ponto em diante.
Obs.: as setas azuis, diferentemente das vermelhas, no se apagam
quando a vaquinha passa.
Copie aqui o cdigo da ltima fase que voc conseguiu chegar. Ao
todo so 43 fases. _____________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

11
Algoritmos

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
2. Acesse o link: http://rachacuca.com.br/calculadora-quebrada/
Nesse link encontraremos uma calculadora quebrada e problemas a resolver.
Clicando no boto <PRXIMO>, teremos acesso ao primeiro problema.
Lembre-se de descrever a soluo passo a passo, como fizemos
nos exemplos acima. ___________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
3. Vamos acessar o link: http://rachacuca.com.br/jarros/
Nesse link encontraremos jarros e problemas a resolver.
Clicando no boto <JOGAR>, teremos acesso ao primeiro problema.
Resolva-o.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Programao I

12
Captulo 1

Ol,
Com a concluso dos exerccios, podemos observar que cada um
aponta uma soluo, para os problemas apresentados. Cada soluo
criada um Algoritmo.
Vamos em frente!!!

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

Nosso objetivo, no entanto, criar Algoritmos compostos de passos que o computador seja capaz de entender e executar e no
Algoritmos com passos que as pessoas sejam capazes de entender e
executar. Ento, precisaremos somar mais conhecimentos aos vistos
at aqui, uma vez que o computador no poderia executar os passos
descritos em nossos exemplos acima.

Tecnologia em Anlise e Desenvolvimento de Sistemas

13
Algoritmos

Algoritmo: uma sequncia no ambgua e finita de instrues,


cuja a execuo, em tempo finito, resolve um problema computacional. (SEBESTA, 2003).

1.3 Construindo Algoritmos Para Computadores


Construir Algoritmos para computadores requer, em primeiro lugar, a transformao do nosso passo a passo em uma estrutura que
possa ser entendida e executada pelo computador. Para isso, utilizaremos inicialmente uma linguagem conhecida como Portugol e
mais tarde, assim que os principais conceitos tenham sido assimilados, a Linguagem C.
Para entender essa estrutura, vamos estudar o que memria, variveis
e constantes.
1.3.1 Reservando Memria
na memria do computador que o nosso programa ser executado.
Quando vamos usar a memria em um Algoritmo para armazenar dados inerentes soluo de um problema como o resultado de uma
operao ou mesmo um nmero ou uma palavra, necessrio informar primeiro ao computador que precisaremos dessa memria. Essa
informao passada ao computador por meio de comando, que veremos posteriormente.

Memria: Meio fsico para armazenar dados temporariamente ou


permanentemente.(TANENBAUM, 1997, p.212).

1.3.2 Variveis
Sintaxe: tipo identificador <ou Lista-de-identificadores>;
Alm de reservar a memria, temos que informar ao computador como
vamos nos referir a essa reserva, ou seja, como denominaremos, o espao de memria reservado.

Programao I

14
Captulo 1

O nome dado a esse espao seu endereo.


Dizemos que os endereos nomeados de memria so as variveis
do programa.
O contedo de uma varivel pode mudar durante a execuo do programa.
Por que precisamos declarar variveis?
Em nosso Algoritmo precisaremos manipular diversos valores de forma
a encontrar a soluo do problema.
Esses valores devero estar armazenados de forma que, quando necessrios, possam ser identificados corretamente.
Uma correta declarao de variveis que disponibilizar uma identificao precisa do valor j que a varivel justamente o endereo do
valor armazenado.
O que so valores?
Os dados necessrios soluo do problema so os valores, que devem ser manipulados de maneira a fornecer resultados que solucionem o problema.
Os valores podero ser inteiros (nmero da matrcula do funcionrio,
nmero de filhos), reais ( valor do salrio e o desconto de IRRF) e lgicos (funcionrio sindicalizado ou no: assume falso ou verdadeiro).
Cada varivel corresponde a uma posio de memria, cujo contedo
pode variar durante a execuo de um programa.
O que so tipos de variveis?
Como dissemos, os valores diferem quanto ao seu tipo, isso significa
que, para cada tipo de dado, teremos um tipo de varivel especfica,
que passamos a ver:
Tipo inteiro: Declararemos variveis do tipo numrico inteiro
para representar uma localizao de memria do computador
utilizada para armazenar os valores inteiros (positivos ou negativos) que constarem em nosso Algoritmo.
Exemplo: 1 2000 -3
Tipo real: Declararemos variveis do tipo numrico real para
armazenar os valores reais (nmeros fracionrios: aqueles
com ponto decimal) que constarem em nosso Algoritmo.
Exemplo: 1,0 2,000 -3,0
Tipo caractere: Declararemos variveis do tipo literal caractere
para armazenar um nico caractere, que pode ser uma letra
ou um smbolo.
Tecnologia em Anlise e Desenvolvimento de Sistemas

15
Algoritmos

Exemplo: Para identificar o sexo do indivduo, armazenaremos apenas o caractere F ou M.


Tipo cadeia: Declararemos variveis do tipo literal cadeia para
armazenar uma seqncia de caracteres, ou seja, uma palavra,
uma mensagem, um nome.
Exemplo: Se decidirmos armazenar a palavra Masculino ou Feminino, para identificar o sexo do indivduo
no lugar do caractere F ou M, teremos que declarar o
tipo da varivel como cadeia.
Tipo lgica: Declararemos variveis do tipo lgico para armazenar valores lgicos, VERDADEIRO ou FALSO, ou
ainda expresses lgicas, cujo resultado seja ou FALSO ou
VERDADEIRO.
Como declarar variveis?
Para criar o nome de uma varivel, precisamos seguir algumas regras.
So elas:
REGRA
No inicie com nmero;
No utilize caracteres especiais.
No coloque espaos em branco
ou hfen entre nomes.
Utilize, se necessrio, underline
(ou underscore)
Crie suas variveis com nomes
sugestivos (no uma regra, mas
bom seguir).

EXEMPLO
1NUM
1Num; Nome(M);
B Letra B-Letra

N*B

B_Letra
Se vai guardar nome de funcionrios, crie a varivel utilizando a
palavra NOME.

Varivel: Uma Varivel uma posio nomeada de memria, que


usada para guardar um valor que pode ser modificado pelo programa. (LAUREANO, 2005, p. 12).

Programao I

16
Captulo 1

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

Ol,
As atividades aqui propostas no so avaliativas. Sugiro, entretanto,
que sejam realizadas sem consultas, dessa forma poderemos acompanhar o desenvolvimento.
Bom Estudo!!!

3. Aprendemos que, ao declarar uma varivel precisamos seguir algumas regras. Assinale, as variveis que obedecem s
regras estabelecidas:
a) ( ) NUM1

e) ( ) TELEFONE

i) ( ) P_Num

b ) ( ) 1 NUM

f) ( ) Nome

j) ( ) Num_RUA

c) ( ) 1NUM

g) ( ) R-2

k) ( ) Certo

d ) ( ) SEXO

h) ( ) Rua

l) ( ) MATR

Tecnologia em Anlise e Desenvolvimento de Sistemas

17
Algoritmos

4. Para cada valor apresentado abaixo, foi definido um tipo de varivel. Marque com X os tipos que foram definidos corretamente:
a)( ) valor= 1.0 tipo= real

b)( ) valor= 23 tipo= real

c)( ) valor= -3 tipo= real

d)( ) valor= -3.0 tipo= real

e)( ) valor= 1000 tipo = inteiro

f)( ) valor= 54 tipo = inteiro

g)( ) valor= -54 tipo = inteiro

h)( ) valor= 54,0 tipo = inteiro

i)( ) valor= F

tipo = cadeia

j)( ) valor= M tipo = caract

k)( ) valor= rua tipo = cadeia

l)( ) valor= * tipo = caract

1.3.3 Constantes
Sintaxe: const identificador = valor;
As constantes so criadas com base nas mesmas regras e tipos j vistos
em varivel. Diferem apenas no fato de armazenar um valor constante,
ou seja, que no se modifica durante a execuo de um programa.
Se voc entendeu como declarar uma varivel, ficar fcil entender como
se cria uma constante.
Vamos tomar como exemplo a folha de pagamento dos funcionrios de
uma determinada empresa:
Se assumirmos que a empresa conceder um aumento de 10%
aos seus funcionrios independentemente do valor do salrio,
a taxa de 10% ser uma constante, durante a execuo do programa que efetuar o clculo.
Nossa constante ficaria assim declarada: const TAXA= 0.10;
O nome da empresa tambm ser uma constante, ele ser impresso em todos os contra-cheques, teremos mais uma constante.
E a declararamos assim: const NOME;
NOME = Empresa X;

Constante: Varivel com valor pr-definido que no pode ser modificado por nenhuma funo de um programa. (LAUREANO, 2005, p.16).

Programao I

18
Captulo 1

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

5. Identifique o tipo de cada uma das constantes abaixo:


Exemplo: a) 35 [ constante tipo inteiro ]
b) 21000 [

] f) 0,10 [

c)falso [

] g) Ifes [

d) TRUE [

] h) 2007 [

e ) FALSO [

] i ) verdadeiro [

O que aprendemos at aqui?


Algoritmos so os passos que levam soluo de um problema.
As variveis armazenaro valores numricos reais e inteiros, valores
literais caractere e cadeia e valores lgicos identificados no
Algoritmo.
O contedo de uma varivel pode variar durante a execuo do
programa.
A diferena entre constante e varivel que o contedo de uma
constante no varia durante a execuo do programa.
Ao fazermos declaraes de variveis e de constantes temos que
seguir regras.
Tecnologia em Anlise e Desenvolvimento de Sistemas

19
Algoritmos

1.4 Operadores
Os operadores so smbolos que representam uma operao aritmtica
ou lgica.
1.4.1 Operadores Aritmticos
Os operadores aritmticos so empregados em expresso aritmtica em
que so utilizados constantes ou variveis do tipo real ou inteira, como
operandos. Vamos ver abaixo a ordem de precedncia:
adio
subtrao
multiplicao
diviso

+
*
/

1.4.2 Operadores Relacionais


Os operadores relacionais realizam comparaes entre variveis. So eles:
igual
maior
menor
maior ou igual
menor ou igual
no igual (ou diferente)

=
>
<
>=
<=
!=

1.4.3 Operadores Lgicos


Os operadores lgicos retornam Falso(F) ou Verdadeiro(V) , de acordo
com seus operandos. So eles:
Operadores
E
OU
NO
Entendendo:
Vamos assumir que existam duas condies para o resultado favorvel
de uma prova:

Programao I

20
Captulo 1

1 proposio: O aluno estudou.


2 proposio: O aluno colou.

Chamaremos a 1 proposio de P.
E chamaremos a 2 proposio de Q.

Vamos verificar na tabela abaixo qual resposta teremos na 3 coluna se o


operador lgico utilizado entre as proposies for o OU:
P
V
V
F
F

Q
V
F
V
F

P ou Q
V
V
V
F

Observe que o aluno s no ter resultado favorvel se as duas proposies


forem falsas, ou seja: Se o aluno no estudar OU se o aluno no colar.
Agora vamos verificar como se comporta a 3 coluna se o operador lgico utilizado for o E:
P
V
V
F
F

Q
V
F
V
F

PeQ
V
F
F
F

Nesse caso, para tirar uma nota favorvel, o aluno, alm de estudar,
ter de colar.
Abaixo, a tabela para o operador lgico NO:
P
V
F

No P
F
V

Ordem de precedncia das operaes:


Prioridade
1
2
3
4
5

Operador
aritmtico
relacional
lgico - no
lgico - e
lgico -ou

Tecnologia em Anlise e Desenvolvimento de Sistemas

21
Algoritmos

1.5 Expresso Aritmtica e Expresso Lgica


1.5.1 Expresso Aritmtica
Expresso aritmtica a que utiliza operandos que sejam constantes ou
variveis, desde que sejam do tipo real ou inteiro e operadores aritmticos, os quis estudamos no item 1.4.
Exemplo: x + y
Ordem de precedncia das operaes:
Prioridade
1
2

Operador
* /
+ -

Operao
multiplicao, diviso
adio, subtrao

Utilizando vrios nveis de parnteses, quebraremos a prioridade e obteremos uma seqncia de clculo diferente.

1.5.2 Expresso Lgica


Expresso lgica utiliza operandos que sejam constantes e/ou variveis
numricas, literais ou lgicas e os operadores lgicos.
Exemplos: (x < y) e (y < z)
(y > t) ou verdade
Observe que nos exemplos acima o resultado obtido sempre VERDADEIRO OU FALSO. Numa expresso lgica, sempre obteremos o
resultado V ou F.
Exemplo: Dadas as variveis e as seguintes atribuies:



var inteiro NUM1=10;


var inteiro NUM2= 5;
var inteiro NUM3=200;
var inteiro NUM4=200;

Vamos verificar se a expresso ( NUM1+ NUM2 > 10 e NUM1+ NUM3 >


NUM4) VERDADEIRA ou FALSA:

Programao I

22
Captulo 1

Vamos analisar todas as etapas necessrias:


1. NUM1+ NUM2 > NUM1 o mesmo que (10+5>10), resposta V, j
que 10+5 maior que 10.
2. NUM1+ NUM3 > NUM4 o mesmo que (10+200>200), resposta
V, j que 10+200 maior que 200.
3. Assim, nossa expresso se resumir em V e V.
4. Na tabela verdade aprendemos que numa proposio V e V, o resultado ser V.
5. Portanto o resultado final : V

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

23
Algoritmos

Ol,
importante que as atividades abaixo sejam realizadas na ordem
proposta, j que o grau de dificuldade vai crescendo na mesma
ordem.
Bom estudo!!

Observe as seguintes declaraes de variveis e suas respectivas


atribuies e responda s questes abaixo:

var inteiro NUM1=10;

var inteiro NUM2= 5;

var inteiro NUM3=200;

var inteiro NUM4=200;

6. Coloque F ou V nas expresses abaixo: Exemplo: ( F )


NUM4 > NUM3;
a) ( ) NUM1 > NUM2;
b) ( ) NUM1 < NUM3;
c) ( ) NUM1 < NUM4;
d) ( ) NUM3 = NUM4;
7. Coloque F ou V nas expresses abaixo: Exemplo: ( F )
NUM1-NUM2 < NUM2;
a) ( ) NUM1+ NUM2 > NUM3;
b) ( ) NUM1* NUM2 < NUM4;
c) ( ) NUM3 - NUM4 != NUM4;
d) ( ) NUM3 / NUM1 < NUM4;
8. Coloque F ou V nas expresses abaixo: Exemplo: ( F ) NUM1+
NUM2 > 10 e NUM3 - NUM4 = NUM3;
a) ( ) NUM1 / NUM2 > 0 e NUM1 + NUM3 > NUM4;
b) ( ) NUM1 * NUM2 > 40 e NUM3 - NUM1 > NUM4;
c) ( ) NUM1 - NUM2 = 10 e NUM2 + NUM3 > NUM4;
d) ( ) NUM1 + NUM2 < 10 e NUM3 - NUM4 = NUM1;

Programao I

24
Captulo 1

9. Coloque F ou V nas expresses abaixo: Exemplo: (V) NUM3 /


NUM2 >55 ou NUM1+ NUM3 > NUM4;
a) ( ) NUM3 / NUM2 > 0 ou NUM1 + NUM3 > NUM4;
b) ( ) NUM2 * NUM1 = 50 ou NUM3 - NUM1 > NUM4;
c) ( ) NUM1 - NUM2 > 10 ou NUM2 + NUM3 > NUM4;
d) ( ) NUM1 + NUM2 > 10 ou NUM3 / NUM1 > NUM4;
10. Coloque F ou V nas expresses abaixo: Ex.: (V) NUM1 >
NUM2 e NUM2 < NUM3 ou NUM3 < NUM4;
a) ( ) NUM1 > NUM2
NUM4;

b) ( ) NUM1 * NUM2 > 10 e


- NUM1 > NUM4;

NUM2 < NUM3 ou NUM3 <


NUM1 > NUM4 ou NUM3

c) ( ) NUM1 > 10 ou NUM1> NUM4 e NUM3 - NUM1


> NUM4;
d) ( ) NUM1 + NUM2 > 10 ou NUM1 / NUM3 > NUM4
e NUM3 < NUM4;

O que aprendemos sobre os operadores?


So smbolos que representam uma operao aritmtica
ou lgica.
Os operadores podem ser: aritmticos, relacionais e lgicos.
Os aritmticos so empregados em expresso aritmtica .
Os relacionais verificam as relaes entre os operadores.
Os lgicos retornam Falso (F) ou Verdadeiro (V).
A ordem de precedncia das operaes.

1.6 Comandos de Atribuio, de Entrada, de Sada e Comentrio


1.6.1 Comando de Atribuio
Na construo de nossos Algoritmos, precisamos constantemente indicar que uma varivel ou uma constante criada por ns armazenar um
determinado valor ou expresso, durante a execuo do programa.
Tecnologia em Anlise e Desenvolvimento de Sistemas

25
Algoritmos

A forma correta de fazer essa indicao por meio do comando de atribuio, representado por uma seta().
Assim: var int NUM;

/*criamos a varivel inteira NUM*/

NUM 10;

/*atribumos o valor 10*/

var caractere SEXO;

/*criamos a varivel caractere SEXO*/

SEXO F;

/*atribumos o caractere F*/


var real SALRIO;

/*criamos a varivel real SALRIO*/

SALRIO 22.000,00 /*atribumos o valor 22.000,00*/


1.6.2 Comando de Entrada
Sintaxe: leia(varivel);
Os dados de que precisaremos para execuo do nosso Algoritmo sero
geralmente informados por meio do teclado.
O comando de entrada ser responsvel pela leitura e armazenamento
desses dados na varivel que indicarmos.
1.6.3 Comando de Sada
Sintaxe: escreva(O nome : , varivel);
O comando de sada ser responsvel pela exibio de mensagens, de
valores processados ou de valores lidos, conforme indicarmos.
Exemplo:
Algoritmo primeiro
var cadeia NOME;
{
NOME Paulo Vitor;

Ol, Paulo Vitor

escreva(Ol, , NOME);
}

Programao I

26
Captulo 1

Veja o resultado desse Algoritmo no quadro ao lado.


Observe que se o comando de sada fosse:

Ol, ,NOME

escreva(Ol, , NOME);
a sada seria exatamente o contedo entre as aspas.
Portanto, coloque fora das aspas tudo aquilo que deve ser resolvido
pelo computador.
1.6.4 Comentrios
Utilizaremos comentrio para explicar detalhes que julgarmos necessrios
em nosso programa. Desta forma, aumentamos a legibilidade do nosso algoritmo. Lembre-se que no devemos fazer programas apenas para que o
computador execute, mas tambm para outras pessoas possam entend-lo e
assim participarem da sua construo e/ou manuteno.
Exemplo:

var int NUM; /*criamos a varivel inteira NUM*/


NUM 10; /*atribumos o valor 10*/

Observe que existem caracteres especiais( /*) que foram utilizados no


incio e no fim do comentrio.
Tambm possvel utilizar os caracteres // (duas barras). Neste caso,
ele finalizado com um salto de linha.
Assim:

var int NUM; //criamos a varivel inteira NUM


NUM 10; //atribumos o valor 10

O comentrio sempre ser feito com base em um dos modelos acima.


Faa-o sempre que voc sentir necessidade de explicar alguma linha do
seu Algoritmo.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

27
Algoritmos

Ol,
Gostaria de chamar a ateno para a importncia de as atividades
serem realizadas individualmente.
Bom estudo !!!

11. Assinale os comandos de atribuio realizados corretamente:


a) ( ) var cadeia SEXO F;
b) ( ) var inteiro ALTURA 1,80;
c) ( ) var real SALRIO 3.000,00;
d) ( ) var cadeia NOME;
12. No programa abaixo, dois valores inteiros so lidos e somados
e o resultado dessa soma mostrado no final da execuo. Analise
as linhas do programa e assinale as afirmaes corretas:

linha 1 ... Algoritmo soma;

linha 2 ... {

linha 3 ... var int NUM1, NUM2, SOMA;

linha 4 ... escreva( Digite o primeiro nmero);

linha 5 ... leia(NUM1);

linha 6 ... escreva( Digite o segundo nmero);

linha 7 ... leia(NUM2);

linha 8 ... SOMA NUM1 + NUM2;

linha 9 ... escreva( A soma dos nmeros digitados :, SOMA);

linha 10 ... }

a) ( ) linha 5 O primeiro valor digitado no teclado est sendo


lido e armazenado em NUM1;
b) ( ) linha 7 O segundo valor digitado no teclado est sendo
lido e armazenado em NUM2;
c) ( ) linha 8 O resultado da soma dos valores digitados est
sendo atribudo varivel SOMA;
d) ( ) linha 9 No monitor sero exibidas a mensagem que est
entre aspas e a soma dos nmeros digitados;

Programao I

28
Captulo 1

13. O Algoritmo abaixo dever ler duas notas, calcular a mdia e


mostrar o resultado. Para que o Algoritmo seja executado corretamente, complete-o com os comandos que faltam:
linha 1 ... Algoritmo mdia;
linha 2 ... {
linha 3 ...

var _______NOTA1, NOTA2, MDIA;

linha 4 ... __________ ( Digite a primeira nota);


linha 5 ...

_____(NOTA1);

linha 6 ...

escreva( _______________________);

linha 7 ...

leia(________);

linha 8 ...

MDIA (_______ + _______ )/2;

linha 9 ...

escreva( A mdia das notas : , __________);

linha 10 ... }
14. Faa o mesmo no Algoritmo abaixo, cuja finalidade calcular
8% de aumento sobre um salrio. linha 1 ... Algoritmo reajuste;
linha 2 ... {
linha 3 ...

var _______ SALARIO, SALARIO_NOVO;

linha 4 ... __________ ( Digite o salrio);


linha 5 ...

_____(SALARIO);

linha 6 ...

SALARIO_NOVO ____________* 1.08;

linha 7 ...__________( O valor do novo salrio : , ______________);


linha 8 ...

O que aprendemos sobre os comandos de atribuio, de entrada


e de sada?
O comando de atribuio responsvel por atribuir valores
varivel.
O comando de entrada faz a leitura do dado digitado no teclado
e o armazena na varivel.
O comando de sada responsvel por exibir os dados.
O comentrio utilizado para explicar detalhes que julgarmos
necessrios em nosso programa.
Tecnologia em Anlise e Desenvolvimento de Sistemas

29
Algoritmos

atribuio: Consiste em atribuir um valor a uma varivel previamente declarada.(LAUREANO, 2005, p.27).
entrada: Mecanismo de entrada consiste em ler caracteres da
entrada-padro, normalmente teclado. (SCHILDT, 1995, p.15).
sada: Mecanismo de sada consiste em escrever caracteres da
sada-padro, normalmente monitor. (SCHILDT, 1995, p.15).
cometrios: Texto que no interpretado pelo compilador.
(LAUREANO, 2005, p. 6).

1.6.5 Como Construir Algoritmo


Vamos criar um Algoritmo para ler e multiplicar dois nmeros inteiros
e exibir o resultado.
importante observar cada linha dessa seqncia.
linha 1

Algoritmo multiplicao;

linha 2

linha 3

var inteiro NUM1, NUM2, MULT;

linha 4

escreva ( Digite o primeiro nmero);

linha 5

leia (NUM1);

linha 6

escreva ( Digite o segundo nmero);

linha 7

leia (NUM2);

linha 8

MULT

linha 9

escreva(O resultado da multiplicao :,MULT);

linha 10

NUM1 * NUM2;

Vamos entender todas as linhas do nosso Algoritmo:


linha 1 ... Nome do programa.
linha 2 ... A chave indica o incio do programa.
linha 3 ... Declarao das trs variveis do tipo inteiro necessrias ao programa.
linha 4 ... O comando escreva exibir a mensagem que solicita a digitao do primeiro nmero.

Programao I

30
Captulo 1

linha 5 ... O primeiro nmero digitado ser lido e armazenado na


varivel NUM1.
linha 6 ... O comando escreva exibir a mensagem que solicita a digitao do segundo nmero.
linha 7 ...O segundo nmero digitado ser lido e armazenado na
varivel NUM2.
linha 8 ...A varivel MULT receber o resultado da multiplicao do
primeiro pelo segundo nmero.
linha 9 ...O comando escreva exibir uma mensagem com o resultado
da multiplicao.
linha 10...A chave indica o fim do programa.

15. Construa um Algoritmo que efetue o clculo do salrio bruto


de um funcionrio, considerando que SALARIO BRUTO = HORAS TRABALHADAS * VALOR HORA.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
16. Faa um Algoritmo que leia o valor da cotao do dlar (dia),
multiplique pelo valor (em dlar) de um determinado produto e
imprima o valor convertido.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

31
Algoritmos

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
17. O custo ao consumidor de um carro novo a soma do custo de
fbrica com a porcentagem do distribuidor e dos impostos (aplicados ao custo de fbrica). Supondo que a porcentagem do distribuidor seja 12% e a dos impostos 45%, prepare um Algoritmo
para ler o custo de fbrica do carro e imprimir o custo do carro
para o consumidor.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
18. Uma empresa tem fichas que contm o nome, o nmero de
horas trabalhadas e o nmero de dependentes de cada um de
seus funcionrios.
Considerando que:
a empresa paga 12 reais por hora trabalhada e 40 reais
por dependente;
desconta do salrio 8,5% para o INSS e 5% para IRRF.

Programao I

32
Captulo 1

Faa um Algoritmo para ler o nome, o nmero de horas trabalhadas e o nmero de dependentes de um funcionrio.
No final, o programa dever exibir o nome, o salrio bruto, os
valores descontados para cada tipo de imposto e o salrio lquido
do funcionrio.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

33
Algoritmos

19. Dadas as seguintes informaes de um funcionrio: nome,


idade, cargo e seu salrio bruto, considere que:
o salrio bruto teve um reajuste de 38%.
o funcionrio receber uma gratificao de 20% do
salrio bruto.
15% sero descontados do salrio total.
Faa um Algoritmo para imprimir nome, idade, cargo, salrio
bruto e salrio lquido.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

Programao I

34
Captulo 1

Leituras complementares:
SCHILDT, Herbert. C Completo e Total. So Paulo: Pearson,
2006.
KERNIGHAN Brian W. C Linguagem de Programao Paro
ANSI. Rio de Janeiro: Elsevier, 1989.

Tecnologia em Anlise e Desenvolvimento de Sistemas

35

LINGUAGEM C

Caro aluno,
Vamos iniciar o segundo Captulo da nossa disciplina. Nessa etapa, importante que as atividades sejam feitas no computador.
Desenvolveremos programas que nos ajudaro a melhorar nosso
raciocnio lgico e a nossa agilidade na soluo de problemas de
forma que o computador seja capaz de interpretar.
Se voc ainda no fez o download do ambiente Bloodshed Dev-C++,
este o momento.
Vamos em frente!!!!

A partir desta aula, vamos construir Algoritmos de forma que o computador possa entender e executar. Para isso, vamos conhecer a linguagem
de programao C.

linguagem de programao: Uma Linguagem de Programao um mtodo padronizado para expressar instrues para
um computador. (LAUREANO, 2005, p. 4).
programas: Um programa de computador uma coleo de
instrues que descrevem uma tarefa a ser realizada por um
computador. (LAUREANO, 2005, p. 4).
cdigo fonte: Uma linguagem de programao um conjunto
de ferramentas, regras de sintaxe e smbolos ou cdigos que
nos permitem escrever programas de computador, destinados a instruir o computador para a realizao de suas tarefas.
(LAUREANO, 2005, p. 5).

Programao I

36

Captulo 2

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Para compilar nossos programas, usaremos o ambiente Bloodshed
Dev-C++, disponvel gratuitamente no link http://superdownloads.uol.
com.br/download/199/bloodshed-dev-c/, ou no ambiente Moodle.

2.1 As Telas do Bloodshed Dev-C++


1 passo janela 1
Assim que entrarmos no ambiente Dev C++, a tela abaixo(Ilustrao 1)
ser a primeira a que teremos acesso.
Clique o boto <Fechar> da janela Dica do dia.

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Ilustrao 1: Apresentao da primeira tela

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I

37

38

Captulo 2

2 passo janela 2
Clique em meu Arquivo>Novo>Projeto, como apresentado na Ilustrao 2:

Ilustrao 2: Apresentao da segunda tela

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

3 passo janela 3
Clique no cone <Console Aplication>, no boto <Projeto C> e finalmente no <OK>. Observe a Ilustrao 3, ela o ajudar a executar esses passos:

Ilustrao 3: Apresentao terceira tela

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
___________________________________________________
____________________________________________________

Programao I

39

40

Captulo 2

4 passo janela 4
A janela Create new project se abrir para iniciarmos nosso projeto,
conforme Ilustrao 4.
No campo <nome do arquivo>, digite um nome para seu arquivo e
clique em <Salvar>.

Ilustrao 4: Apresentao da quarta tela

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

5 passo janela 5
nessa janela que vamos digitar nosso cdigo, conforme indica a
Ilustrao 5.

Ilustrao 5: Apresentao da quinta tela

Neste primeiro momento, no exploraremos todos os menus disponveis no ambiente Bloodshed Dev-C+. A exposio dos seus recursos se dar medida que avanarmos nos nossos estudos.
Vamos em frente!!!

2.2 Viso Geral da Linguagem C


Para termos uma viso geral da linguagem que usaremos no desenvolvimento dos programas, vamos analisar como ficaria nosso Algoritmo
Soma, na Linguagem C:

Programao I

41

42

Captulo 2

Exemplo1:
as mudanas de estado do sistema.
Linguagem Portugol
linha 1 Algoritmo soma;
linha 2 {
linha 3 var int NUM1, NUM2,
SOMA;
linha 4 escreva ( Digite o primeiro
nmero);
linha 5 leia (NUM1);
linha 6 escreva ( Digite o segundo
nmero);
linha 7 leia (NUM2);

Linguagem C
linha 1 #include <stdio.h>
linha 2 #include <stdlib.h>
linha 3 int main( )
linha 4 {
linha 5 int num1, num2, soma;
linha 6 printf( Digite o primeiro
numero: );

linha 8 SOMA NUM1 + NUM2;

linha 7 scanf (%d, &num1);

linha 9 escreva ( A soma :,


SOMA);

linha 8 printf( Digite o segundo


numero: );

linha 10 }
linha 9 scanf (%d, &num2);
linha 10 soma = num1 + num2;
linha 11 printf( A soma e: %d \n,
soma);
linha 12 system(PAUSE);
linha 13 return(0);
linha 14 }

2.3 Comandos da Linguagem de Programao C


Vamos entender cada uma das 14 linhas que compem o programa
Soma, que foi criado na linguagem de programao C. importante
atentarmos para o fato de que no cdigo do programa Soma no utilizamos nenhum tipo de acentuao.

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Ao salvar seu programa, siga algumas regras: no utilize acentos e nem


deixe espaos entre palavras.
A primeira linha e a segunda linha - #include <stdio.h> #include
<stdlib.h>
As linhas indicam a incluso de biblioteca que possui as funes de
entrada e sada de dados, necessrias execuo do nosso programa
Soma. Veremos mais adiante que outras bibliotecas sero necessrias;
quando isso acontecer, vamos incorpor-las.
A terceira linha - int main( )
A funo main( ) sempre a primeira a ser executada no programa C.
Em todo programa desenvolvido em C, existir uma funo main( ),
em alguma parte do programa.
A quarta linha - {
o incio de um bloco de comandos no programa. Para toda chave que
inicia um bloco de comandos, teremos uma chave que ser responsvel
por informar o fechamento desse bloco.
A quinta linha - int num1, num2, soma;
Foram declaradas as variveis necessrias execuo do programa. Iniciamos a declarao informando que as variveis seriam do tipo inteiro(int).
Observe a existncia de um ponto-e-vrgula; seu emprego indica o final
do comando.
A sexta linha - printf( Digite o primeiro numero: );
A funo printf( ) uma funo de entrada e sada. Permiti que a mensagem entre aspas seja exibida no monitor.
A stima linha - scanf (%d, &num1);
A funo scanf( ) responsvel por ler os dados que forem informados pelo
teclado. Nessa linha a funo ler o primeiro nmero que for digitado e o armazena no endereo da varivel num1, conforme indicado (%d, &num1).
A dcima linha - soma = num1 + num2;
O comando de atribuio (=) atribui o resultado da soma dos valores
contidos no endereo de num1 e num2.
Programao I

43

44

Captulo 2

A dcima primeira linha - printf( A soma e: %d \n, soma);


J vimos que a funo printf( ) permite a exibio da mensagem no monitor, porm nesse comando o contedo da varivel soma, tambm
exibido. Isso possvel porque inclumos na mensagem o cdigo para
impresso de variveis do tipo inteiro o %d.
O cdigo especial \n responsvel por fazer saltar uma linha.
A dcima segunda - system(PAUSE);
Possibilita uma pausa no programa a fim de visualizarmos o resultado,
caso contrrio ele seria exibido to rapidamente que no conseguiramos v-lo.
A dcima terceira linha - return (0);
Indica o nmero inteiro que est sendo retornado pela funo, em nosso caso, o nmero zero. O comando return (0) ser detalhado adiante.
A dcima quarta linha - }
Indica o fim do programa. O fim de main( ).
EXECUO DO PRIMEIRO PROGRAMA APRESENTADO
Antes de executar o programa necessrio traduz-lo para uma linguagem em que o computador possa entender, isto , fazer a sua compilao. Use a tecla F9 ou o boto indicado na ilustrao 6.

lustrao 6: Compilao e Execuo


Tecnologia em Anlise e Desenvolvimento de Sistemas

45

Linguagem C

Na primeira vez solicitado o salvamento do arquivo: informe um nome


qualquer para o arquivo, desde que tenha a extenso .c
A compilao tambm o momento em que os erros de sintaxe (grafia)
so apresentados.
Veja na tabela abaixo alguns exemplos de erro de digitao e suas respectivas mensagens de alerta.
Faa estas simulaes de erro para entender melhor o processo e se familiarizar com as mensagens do ambiente.
Experimente tambm compilar com outros erros.
Depois desta vivncia voc ficar mais preparado para enfrentar situaes reais de erro.
Linha
original

Como foi digitado Mensagem de erro Explicao da mensagem

#include
<stdio.h>

#include <stdioh> Linha 1: stdioh: Sem ponto o nome do ar-

de erro

No such file or quivo no foi encontrado.


directory.

int num1,
num2, soma;

int num1, num2, Linha 7: syntax Sem o ponto-e-vrgula o


soma,

error before string compilador deduz que o


constant

comando ainda no terminou e por isso vai acusar erro na linha posterior,
quando o cdigo j no faz
mais sentido. Outros erros
em linhas mais abaixo so
indicados em funo deste
primeiro erro.

printf(
Digite o
primeiro
numero: );

printe( Digite o undefined

refe- No foi encontrada a funprimeiro numero: rence to `printe o printe nas bibliotecas

scanf (%d,
&num2);

scanf

);
&num2);

indicadas
(%d, Linha

10:

mis- Falta o caractere aspas

sing terminating como terminador.


character

return (0);

return 0);

Linha 14: syntax Acusou erro antes do token


error

before

token

) ). Token como o compilador chama elementos individuais do programa.

Programao I

46

Captulo 2

Para acertar o erro faa a edio diretamente no ponto desejado e recompile: CTRL F9
Quando no houver mais erros ser mostrada a tela da ilustrao 7.

Ilustrao 7: Compilao sem erros

Depois de compilado o programa e execuo feita logo em seguida.


Observe o resultado na ilustrao 8.

Ilustrao 8: Compilao e execuo do cdigo fonte de Soma

Tecnologia em Anlise e Desenvolvimento de Sistemas

47

Linguagem C

Ol,
As explicaes dadas na sequncia do contedo sero acompanhadas de exemplos que voc dever digitar, compilar e executar no
programa DEV C++..
Depois de execut-los, o cdigo fonte dever ser analisado e entendido.
A fim de facilitar o estudo, mesmo longe do computador, a partir daqui
duas telas sero sempre apresentadas abaixo do exemplo. So elas:
A tela branca, que contm o cdigo do programa citado
como exemplo, devidamente digitado no DEV C++.
A tela preta, que o resultado da compilao e da
execuo.
No avance se as dvidas permanecerem.
Bom estudo !!

2.4 Constantes e Variveis na Linguagem de


Programao C
J aprendemos que uma constante tem o valor fixo e que uma varivel
que pode conter, a cada tempo, valores diferentes. Vejamos um exemplo
de declarao de varivel em C.
Exemplo 2: Neste exemplo temos uma varivel do tipo inteira, que armazenar o valor digitado pelo usurio e exibir em seguida esse valor.

Programao I

48

Captulo 2

A Ilustrao 9 vai nos mostrar o resultado da compilao e da execuo


desse programa.

Ilustrao 9: Compilao e execuo do cdigo fonte de Exemplo 2

2.4.1 Tipos de Variveis na Linguagem de Programao C


O tipo de varivel tem o objetivo de informar a quantidade de memria,
que ocupar em bytes. Inicialmente, veremos 3 tipos de variveis:
TIPO

BYTES

char

int

float

Exemplo 3:

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

A Ilustrao 10 vai nos mostrar o resultado da compilao e da execuo desse programa.

Ilustrao 10: compilao e execuo do cdigo fonte do Exemplo 3.

2.5 Alguns dos Cdigos para Impresso Formatada de Printf( )


Como j vimos, a funo printf( ) usa o caractere de percentual (%) seguido de uma letra para identificar o formato de impresso.
No exemplo acima, utilizamos 3 tipos de caracteres na funo printf( ). Na tabela abaixo esto relacionados os caractere com tipo de
varivel a ser impresso.
CDIGO
%c

SIGNIFICADO
usado quando a funo for exibir apenas um caractere (tipo char).
Exemplo: M

%f

usado quando a funo for exibir nmero com ponto flutuante, ou


seja, um nmero real com possibilidade de casas decimais (tipo float).
Exemplo: 1,80

%s

usado quando a funo for exibir uma cadeia de caracteres, ou seja,


uma ou vrias palavras (tipo char[ ]).
Exemplo: azul

%d

usado quando a funo for exibir um nmero inteiro na base decimal


(tipo int).
Exemplo: 25
Programao I

49

50

Captulo 2

2.6 Cdigos Utilizados Pela Funo Scanf( )

CDIGO

FUNO

%c

usado quando a funo for armazenar um caractere (tipo char).

%d

usado quando a funo for armazenar um nmero inteiro (tipo int).

%f

usado quando a funo for armazenar um nmero real, com possibilidades de casas decimais (tipo float).

%s

usado quando a funo for armazenar uma cadeia de caracteres, ou


seja, uma ou vrias palavras (tipo char[ ]).

Agora, volte ao cdigo fonte do Exemplo 3, revise a funo printf( ) e


a funo scanf( ), confrontando os caracteres utilizados no exemplo
com os apresentados nas tabelas.
No siga adiante sem concluir essa verificao, pois as funes sero
empregadas constantemente em nossos exerccios. Compreend-las
de suma importncia.
Bom estudo !!

2.7 Como fazer Comentrios


O comentrio deve ser feito exatamente como aprendemos em Algoritmos. Veja como ele foi colocado no programa abaixo:
Exemplo 4:

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Ilustrao 11: Compilao e execuo do cdigo fonte de Exemplo 4

Observe que o comentrio s apareceu no cdigo fonte.


A tela preta mostra a execuo do programa sem o comentrio.

Vamos ver como ficam os operadores lgicos na linguagem C^?


Portugol

&&

OU

||

NO

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Programao I

51

52

Captulo 2

20. Faa um programa que:


a) pea ao usurio para digitar um nmero inteiro;
b) armazene esse nmero numa varivel chamada NUM1;
c) pea ao usurio para digitar outro nmero inteiro;
d) armazene esse nmero numa varivel chamada NUM2;
e) multiplique os valores e guarde o resultado numa varivel chamada MULT;
f) exiba o resultado.
Obs.: Caso encontre dificuldades para fazer esse programa, consulte o exemplo Soma (primeiro exemplo deste captulo).
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

21. Faa um programa que:


a) pea ao usurio para digitar um nmero inteiro;
b) armazene esse nmero numa varivel chamada A;
c) pea ao usurio para digitar outro nmero inteiro;
d) armazene esse nmero numa varivel chamada C;
e) exiba os valores digitados.
Obs.: Caso encontre dificuldades para fazer este programa, consulte o Exemplo 2, visto no item 2.4.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I

53

54

Captulo 2

O que aprendemos at aqui?


Transformar Algoritmo escrito na linguagem natural para a Linguagem C.
Declarar variveis.
Fazer cometrios em nosso cdigos.
Compilar e executar exemplos apresentados.
Alm disso, conhecemos as particularidades das funes printf e
scanf e obtivemos uma viso geral da Linguagem C.

2.8 Comandos de Seleo


No desenvolvimento de um programa, podemos nos deparar com vrias condies que acarretaram processamentos diferenciados, ou seja,
muitas vezes uma parte do nosso programa s executada se a condio
para essa execuo for verdadeira.
Para testar essa condio, temos os comandos if e switch.
2.8.1 Comando If

Sintaxe: if (condio) declarao

O comando if ser utilizado quando o programa ou parte dele necessitar de uma condio simples para sua execuo.
Vamos ver um exemplo em que o resultado da soma de dois nmeros s
seja exibido se for maior que 2.
Exemplo 5:

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Ilustrao 12: Demonstrao do resultado se a soma for menor que 2.

Ilustrao 13: Demostrao do resultado se a soma for maior que 2.

Observe a Ilustrao 13. O programa no mostrar nada se a soma


dos dois nmeros for menor que dois.
Apenas ser exibida a mensagem default pressione qualquer tecla
para continuar....

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Programao I

55

56

Captulo 2

Exemplo 6:
Este programa indica se o usurio tem o voto obrigatrio.
Para isso ele solicita a sua idade, em seguida verifica se esta idade maior
ou igual a 18 e ao mesmo tempo menor ou igual a 70. Se sim, ento
exibe a mensagem de voto obrigatrio.

Observe na ilustrao 14 a sada na console para uma entrada com idade igual a 18.

Ilustrao 14: Demostrao do resultado do exemplo6.

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Exemplo 7:
Este exemplo exibe o preo de um produto com o acrscimo de uma
taxa de venda. Nem todos os produtos possuem esta taxa.
Observe que a entrada da taxa de venda condicionada a resposta do
usurio. Mas, em ambos os casos o programa exibe o preo final do produto, com ou sem acrscimo.

Por que colocar espao em %c ?


A funo scanf obtm apenas os caracteres selecionados pelo %.
Desta forma, quando o processamento passa pelo %f na entrada do
preo, apenas o nmero digitado ser capturado e no o ENTER. Assim o ENTER colocado disposio no buffer obtido pelo prximo
scanf(%c,&possuiTaxa), se escrito sem espao. Por isso temos a falsa
impresso de que o scanf no foi executado.
Observe na ilustrao 15 a sada no console para uma entrada com preo igual a 200,00 e taxa de venda igual a 15,00

Ilustrao 15: Demostrao do resultado do exemplo6.


Programao I

57

58

Captulo 2

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Ol,
Faamos as atividades propostas, a seguir, para verificar como estamos desenvolvendo o nosso aprendizado.
importante que voc digite os exemplos vistos, conforme orientao dada no incio deste Captulo.
Vamos em frente!!!

22. Desenvolva um programa que leia a matrcula e a nota final de


um aluno de uma escola. Se a nota final for maior ou igual a 60, o
programa deve exibir a mensagem Aluno aprovado.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

23. Faa um programa que leia o sexo do usurio e apresente a mensagem O sexo vlido, se o caractere digitado for M ou F.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
24. Faa um programa que leia um nmero dado como entrada e
apresente a mensagem O nmero est na faixa correta, somente
se o valor fornecido for entre 20 e 90.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I

59

60

Captulo 2

25. Faa um programa que leia o valor do salrio bruto de um funcionrio. Se o salrio for menor ou igual a R$ 500,00, o programa
deve aplicar um aumento de 10%. Em seguida exiba o salrio,
independente se ele sofreu reajuste ou no.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

2.8.2 Comando If-Else




Sintaxe: if (condio) declarao_1

else declarao_2
O comando if-else permite maior agilidade ao programa, quando este
for composto por duas ou mais condies, as quais deve ser avaliadas
antes da execuo das partes (bloco de comandos) que o compem.
No exemplo visto no comando if, o programa s exibiria a mensagem
quando o resultado fosse maior que 2. Para resultados menores que 2,
ns no definimos nenhum bloco de comando; logo, o programa simplesmente no executaria nenhum comando.
Agora, definiremos um bloco de comandos para resultados menores que 2:

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Exemplo 8:

Ilustrao 16: Demonstrao do resultado se a soma for maior que 2.

Ilustrao 17: Demonstrao do resultado se a soma for menor que 2.

Programao I

61

62

Captulo 2

Observe que agora definimos comandos especficos para resultados


maiores que 2 e para resultados menores que 2, conforme demonstrado
nas Ilustraes 16 e 17.
Exemplo 9:
Este exemplo complementa o exemplo 6 exibindo se o usrio tem voto
facultativo ou proibido.
Observe no primeiro if que se a idade no estiver no intervalo de 18 a
70 o algoritmo verifica se a idade menor do que 16 (pois se o processamento chegou at neste ponto porque a idade menor do que 18 ou
maior do que 70) . Quando a idade for menor que 16 o voto proibido.
Caso contrrio ser facultativo, ou seja, 16, 17 ou maior do que 70.

Observe na ilustrao 18 a sada no console para uma entrada com idade igual a 17.

Ilustrao 18: Demostrao do resultado do exemplo 9.

Observe ainda que possvel escrever o comando else em conjunto com


o prximo if de uma forma mais compacta. Veja o mesmo exemplo escrito desta forma, com else if ...

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I

63

64

Captulo 2

Exemplo 10:
Neste exemplo, o usurio responde o valor do salrio e em seguida recebe uma classificao por nvel , variando de 1 a 6. A primeira comparao verifica se o salrio negativo. Neste caso, o programa acusa erro.

Observe na ilustrao 19 a execuo do programa para um salrio


igual a 12 mil

Ilustrao 19: Demostrao de uma execuo do exemplo 10.

Tecnologia em Anlise e Desenvolvimento de Sistemas

65

Linguagem C

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Vamos aproveitar os exerccios de 22 a 25 da seo anterior para


realizar os exerccios desta seo.
Lembre-se de que as atividades devem ser feitas individualmente.
Bom estudo!!!

26. Como complemento do exerccio 22, o programa dever exibir


tambm a mensagem Aluno reprovado, quando a nota final do
aluno for menor que 60.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I

66

Captulo 2

27. Como complemento do exerccio 23, o programa dever exibir tambm a mensagem Sexo invlido, se o caractere digitado
for diferente de M ou F.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
28. Como complemento do exerccio 24, o programa dever exibir
tambm a mensagem O nmero est na faixa incorreta, caso o
valor fornecido no esteja entre 20 e 90.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
29. Como complemento do exerccio 25, o programa dever aplicar
tambm um aumento de 5%, se o salrio for maior do que R$ 500,00.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

2.8.3 Comando Switch


sintaxe:






switch (varivel)
{
case constante 1 : declarao 1; break;
case constante 2 : declarao 2; break;
default:
declarao_default;
}

O comando switch similar ao if-else, mas no poder ser usado quando a condio a ser testada for uma expresso.
S aceitvel uma varivel no switch. Esta varivel deve ser de algum
tipo numrico inteiro, como por exemplo, int e char (char armazena o
cdigo ASCII do caracter, isto , um nmero inteiro).
Exemplo 11:
Neste programa o usurio, alm de digitar 2 nmeros inteiros, poder
escolher a operao a ser realizada.
Este exemplo no condiz com o cdigo!!!

Programao I

67

68

Captulo 2

Ilustrao 20: Demonstrao compilao e execuo do Exemplo 11.

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Exemplo 12:
O usurio informa o nmero do ms e o programa responde com o nome
deste ms. Se o valor no for de 1 a 12 exibida uma mensagem de alerta.

Observe na ilustrao 21 a execuo do programa para o ms igual a 8

Ilustrao 21: Demostrao de uma execuo do exemplo 12.

Programao I

69

70

Captulo 2

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Exemplo 13:
Neste exemplo o usurio informa o nmero do ms e o programa exibe
a quantidade mxima de dias possveis para o referido ms. Observe
que os comandos case podem ser agrupados para disparar uma nica
ao. Por exemplo, os meses abril, junho, setembro e novembro (nmeros 4, 6, 9 e 11) possuem um mximo de 30 dias e assim fazem uma
nica atribuio de 30 para a varivel maximoDias.

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Observe na ilustrao 22 a execuo do programa para o ms de junho


(nmero 6).

Ilustrao 22: Demostrao de uma execuo do exemplo 13.

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

if: Estrutura condicional if assume uma as duas possveis


aes com base no resultado do teste. (SCHILDT, 1995, p.
89)
if-else: Estrutura condicional if assume uma as duas
possveis aes com base no resultado do teste. (SCHILDT,
1995, p. 91)
swith: Testa uma varivel em relao a diversos valores
preestabelecidos.
(SCHILDT, 1995, p. 98)

Programao I

71

72

Captulo 2

30. Faa um programa que leia trs valores distintos a serem digitados pelo usurio e, utilizando o comando if-else , determine
e exiba o menor deles.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
31. Uma empresa dar aumento aos seus funcionrios, de acordo
com sua funo:
a) funo 1 (vendedor) = 0,10(10%) de aumento;
b) funo 2 (gerente) = 0,15(15%) de aumento;
c) funo 3 (diretor) = 0,20(20%) de aumento.
Usando o comando switch, faa um programa que leia o salrio e
a funo do funcionrio, calcule e exiba os salrios com os devidos aumentos.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

32. Usando o comando if, desenvolva um programa que pea ao


usurio um valor e o armazene na varivel X. Tal programa dever efetuar o clculo de C
(A+B) * X se o valor informado
for maior que 5, e efetuar o clculo C
(A-B)*X se o valor for
menor que 5. Se o valor for igual a 5 no faa nada.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

O que aprendemos at aqui?


Que h trs comandos de seleo, os quais nos ajudam a desenvolver programas com mais clareza.
Que o comando if utilizado para deciso simples.
Que o comando if-else utilizado quando, com base em uma
condio, o programa pode executar um entre os variados blocos de comandos existentes.
Que o comando switch utilizado quado temos condies que
no sejam expresses.

Programao I

73

74

Captulo 2

2.9 Comandos de Repetio


At agora, s conseguamos executar o programa uma nica vez. Se
houvesse a necessidade de um novo teste, o que fazamos era executar o
programa novamente.
A partir de agora, conheceremos os comandos de repetio, os quais
nos ajudaro em casos em que a repetio de parte do programa se
fizer necessria.
Os comandos so: for, while e do while
2.9.1 O Comando For
Sintaxe: for (inicializao ; condio ; incremento) declarao;
Usaremos o comando for quando conhecermos antecipadamente o nmero de vezes que uma determinada parte do programa (loop) se repetir.
O comando for avalia primeiramente a expresso inicializao. Depois
avalia a expresso condio que, se verdadeira, passa a executar o corpo
de comandos (declarao). Em seguida avalia a expresso incremento
e recomea tudo novamente na avaliao da expresso condio. Se a
expresso condio no for verdadeira ento o processamento vai para
o prximo comando aps o for.
Exemplo 14:
Uma utilizao do comando for bem simples: exibir no console a frase
Linguagem de Programao C 5 vezes.

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Vamos entender o que fazem as duas linhas:


for(n = 1; n <= 5; n++)

printf(Linguagem de Programacao C \n);


A linha 1 inicialmente faz a varivel n receber 1. Em segundo lugar avalia
se n ainda menor ou igual a 5. Em terceiro lugar, a linha 2 exibe a frase
Linguagem de Programao C. Em quarto lugar , o comando for
avalia n++ (isto o mesmo que fazer n receber n+1, ou seja, uma expresso para incrementar em uma unidade o valor de n). Nesta hora, com n
valendo 2, volta para avaliar se n ainda menor ou igual a 5 e continua.
Quando n receber o valor 6 ento o processamento sai do comando for,
pois a condio n<=5 no ser mais verdadeira.
A ilustrao 23 mostra a sada do exemplo 14.

Ilustrao 23: Demostrao de uma execuo do exemplo 14.

Exemplo 15:
Uma outra utilizao simples: exibir os nmeros pares de 10 a 500.

Programao I

75

76

Captulo 2

Observe que a expresso:


par += 2
equivale a:
par = par + 2
O comando for, desta vez, determina o incio da varivel par em 10 e o
trmino quando a varivel par passar de 500.
A ilustrao 24 mostra a sada do exemplo 15.

Ilustrao 24: Demostrao de uma execuo do exemplo 15.

Exemplo 16: Vamos fazer um programa que leia a nota de 10 alunos e no


final exiba a mdia da turma.
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
Linha
linha
linha
linha
linha

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#include <stdio.h>
#include <stdlib.h>
int main()
{
float nota, soma=0, media=0, conta;
for(conta=0; conta<=9; conta++)
{
printf( Digite a nota );
scanf(%f,&nota);
soma=soma+nota;
}//esta chave encerra o comando de repetio for.
media= soma/conta;
printf( A media da turma e %f \n,media);
system(PAUSE);
return 0;
}

Vamos entender melhor algumas linhas do cdigo acima.

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

linha 5... float nota, soma=0, media=0, conta;


Houve a necessidade de iniciarmos essas variveis com zero, por tratarse de variveis que tero valores cumulativos.
J vimos que, ao declararmos uma varivel, estamos reservando um espao na memria, o qual no necessariamente um espao limpo. Isso
significa que nossa varivel no momento da declarao armazena apenas lixo. Ao atribuirmos o valor zero para ela, garantimos que os valores
sejam acumulados corretamente.
linha 6... for(conta=0;conta<=;conta++)
A linha do comando for controla a quantidade de vezes que o loop ser
executado. Observe que ele inicia a varivel conta de zero (conta=0;),
controla o loop para ser executado 10 vezes (conta<=9) e finalmente
incrementa a varivel conta (conta++).
importante notar que o comando conta ++ o mesmo que: conta
= conta + 1
Observe que o comando for possui um par de chaves envolvendo os
comandos Isto necessrio quando h mais de um comando para ser
repetido. Compare com os exemplos 14 e 15 que no possuem estas
chaves. Isto o mesmo que acontecia com a estrutura if-else.
linha 10... soma=soma+nota;
Nessa linha acumula-se a soma das notas da turma.
linha 12... media= soma/conta;
Observe que essa linha de comando foi colocada aps encerramento
do for, pois s nos interessa calcular a mdia depois que todas as notas
forem somadas.
Como a varivel conta guarda o nmero de vezes que o loop foi executado, que igual quantidade de alunos estipulada no programa, em vez de
dividirmos a soma por 10, fazemos a diviso utilizando a varivel conta.
linha 13... printf( A media da turma e %f \n , media);
Para melhorarmos a exibio dessa mensagem, basta trocar %f por
%.2f , ser exibido apenas 2 casas depois da vrgula.

Programao I

77

78

Captulo 2

Vejamos na Ilustrao 15 o resultado do nosso programa:

Ilustrao 25: compilao e execuo do cdigo fonte do Exemplo 16

Ol,
Para fazer as atividades seguintes, lembre-se de consultar todo material j disponvel e ainda outros materiais, se julgar necessrio.
Tente sempre fazer suas atividades individualmente, pois isso, lhe
dar autoconfiana e voc crescer em conhecimento e agilidade
para resolver problemas.
Bom estudo !!!

33. Desenvolva um programa para exibir os nmeros mpares de 3 a 49.


___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

34. Faa um programa que leia 5 valores reais e escreva o seu


somatrio.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
35. Elabore um programa para exibir a tabuada de um nmero
fornecido pelo usurio.
Por exemplo se o nmero informado for 5, ento ser exibido:
5x1=5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I

79

80

Captulo 2

36. Apresente uma tabela de converso de reais em dlares. Ela


deve ser totalmente configurvel, ou seja o usurio pode informar
o valor inicial e final, o valor de incremento e o valor de 1 dlar.
Apresente os nmeros no formato monetrio com duas casas decimais. Dica: use o formato %.2f na funo printf para obter
exatamente duas casas decimais.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
37. Faa um programa que calcule a mdia de 5 nmeros inteiros
dados como entrada e imprima o resultado.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

2.9.2. O Comando While


sitaxe: while (condio) declarao;
O comando while repete o bloco de comandos (declarao) enquanto a
condio for verdadeira.
Usaremos o comando while quando no soubermos antecipadamente o
nmero de vezes que o programa ser executado. Quem definir o fim
da execuo do programa ser o usurio.
Exemplo 17: Vamos utilizar o mesmo exemplo do comando for, porm o que
faremos ler a primeira nota as demais s sero lidas se o usurio desejar.

Nosso cdigo ficar assim:
linha
linha
linha
linha
linha
linha

1
2
3
4
5
6

#include <stdio.h>
#include <stdlib.h>
int main()
{
float nota, soma=0, media=0;
int resp=1, contador=0;

linha 7

while(resp==1)

linha 8

// esta chave inicia o comando de repetio while

linha 9

printf( Digite a nota );

linha 10

scanf(%f,&nota);

linha 11

soma=soma+nota;

linha 12

printf(Digite 1 para continuar ou digite outra tecla para finalizar..);

linha 13

scanf(%d,&resp);

linha 14

contador++; // Essa linha igual a contador=contador + 1

linha 15

linha 16

media= soma/contador;

linha 17

printf( A media da turma e %.2f \n , media);

linha 18
system(PAUSE);
linha 19
return 0;
linha 20 }

Vamos entender melhor algumas linhas do cdigo acima.


linha 6... int resp=1, contador=0;
A varivel resp ser responsvel por armazenar a resposta do usurio.
Perceba que ela j contm a primeira resposta. Isso se faz necessrio
para que a primeira vez possa ser executada.

Programao I

81

82

Captulo 2

A varivel contador guardar a quantidade de vezes que o usurio digitou uma nota, o que corresponder quantidade de alunos. Precisaremos desse total para calcular a mdia da turma.
linha 7... while (resp= =1)
Observe que enquanto a resp for igual a 1(um) o loop ser executado.
Assim podemos entender o motivo pelo qual iniciamos a varivel resp
no momento da sua declarao. Caso o valor 1 no fosse atribudo
varivel, no incio, o programa nunca seria executado.
linha 14... contador++
A varivel contador est acumulando as entradas.
Vamos ver na Ilustrao 16 o resultado da compilao e da execuo do
nosso programa:

Ilustrao 26: compilao e execuo do cdigo fonte do Exemplo 17

Exemplo 18:
Vamos refazer o exemplo 15 (exibe os nmeros pares de 10 a 500), agora
com o comando while.

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Comparando com o exemplo 15, como se houvesse um desmembramento das trs expresses do comando for. A primera fica logo no incio
pois avaliada apenas uma vez. A segunda permanece no comando pois
a condio para manter a repetio, e a terceira fica no final do bloco
de comandos pois executada somente depois.
A sada no console do exemplo 18 igual a do exemplo 15.
Exemplo 19:
O usurio ir fornecer uma relao de notas dos alunos de uma turma.
Para terminar a entrada ele ter que digitar uma nota negativa. Em seguida ser exibida a maior de todas as notas.

Programao I

83

84

Captulo 2

Observe a importncia da varivel notaMaior. ela que armazena a


maior nota, a cada nova nota que digitada.
A ilustrao 27 mostra a sada do exemplo 19.

Ilustrao 27: Demostrao de uma execuo do exemplo 19.

Ol,
Lembre-se de que as atividades solicitadas neste fascculo, no so
avaliativas. A finalidade delas dar base ao aluno para que ele possa aproveitar melhor o tempo disponvel quando estiver no ambiente virtual. Os exerccios preparam voc para realizar com sucesso as
atividades propostas na sala de aula virtual.
Por isso, aproveite, faa sempre todas as atividades propostas no seu
material impresso.
Bom estudo !!!

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

38. Usando o comando while faa um programa para exibir os


nmeros mltiplos de 5 a partir de 10. A quantidade de nmeros
ser determinada pelo usurio.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
39. Usando o comando while faa um programa para receber as
idades de um grupo de pessoas. No se sabe a quantidade de pessoas do grupo, permita que o usurio determine o trmino da entrada quando ele digitar uma idade negativa. Em seguida exiba a
menor de todas as idades.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I

85

86

Captulo 2

40. Faa um programa que leia a data de validade (apenas o nmero do ms) e o preo das mercadorias de um supermercado.
Considere que:
a) A mercadoria que vencer no ms 7 ter um desconto de 15%.
b) A mercadoria que vencer nos meses 8 e 9 ter um desconto de
10%.
c) As mercadorias com vencimento nos demais meses no tero
desconto.
Exiba o preo da mercadoria j com o desconto.
No se sabe a priori a quantidade de mercadorias, por isso o programa ser executado enquanto o usurio quiser.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

2.9.3. O Comando do while


Sintaxe: do
{

comandos;
} while(condio)
Com esse comando, asseguramos que o programa seja executado pelo
menos uma vez. Depois de executar a primeira, o loop continuar a ser
executado, enquanto a condio for verdadeira.
Exemplo 20: Vamos utilizar o mesmo exemplo do comando while.

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Nosso cdigo ficar assim:


linha 1

#include <stdio.h>

linha 3

int main()

linha 2
linha 4
linha 5

#include <stdlib.h>
{

linha 6
linha 7
linha 8
linha 9

linha 10
linha 11
linha 12
linha 13
linha 14

float nota, soma=0, media=0;


int resp, contador=0;
do
{

printf( Digite a nota );


scanf(%f,&nota);
soma=soma+nota;

printf(Digite 1 para continuar ou digite outra tecla para finalizar..);


scanf(%d,&resp);

contador++; // Esse comando igual a contador=contador + 1;

linha 15

} while(resp==1);

linha 17

printf( A media da turma e %.2f \n , media);

linha 16
linha 18
linha 19

linha 20 }

media= soma/contador;
system(PAUSE);
return 0;

Vamos entender melhor algumas linhas do cdigo acima.


linha 7... do
Incio do comando do-while
linha 15... } while(resp= =1);
Enquanto essa condio for verdadeira, o programa continuara em
execuo.

Programao I

87

88

Captulo 2

Vamos ver na Ilustrao 28 o resultado da compilao e da execuo do


nosso programa:

Ilustrao 28: compilao e execuo do cdigo fonte do Exemplo 20

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

Exemplo 21:
Vamos refazer o exemplo 15 (exibe os nmeros pares de 10 a 500), agora
com o comando do-while.

Comparando com o exemplo 18, observamos que a avaliao da condicional par<=500 vai ser feita por ltimo. Neste caso a sada ser a mesma dos exemplos 18 e 15, mas existem casos em que esta mudana traz
diferenas bem visveis pois a verificao s realizada depois que o
processamento j executou pelo menos uma vez o cdigo. Veja mais
detalhes nos trs prximos exemplos.
Exemplos 22, 23: O objetivo obter a letra inicial do nome do usurio e
imprim-la uma determinada quantidade de vezes.
O exemplo 22, a seguir, mostra uma verso feita com while

Exemplo 22 verso com while.

Programao I

89

90

Captulo 2

O exemplo 23 mostra uma verso feita com do-while, mas, como o


programador apenas substituiu o while pelo do-while sem fazer os
ajustes necessrios, ele no funciona para a quantidade igual a zero,
pois a funo printf executada primeiramente para depois acontecer
a avaliao da expresso.

Exemplo 23 verso com do-while

Para resolver este problema pode-se usar um comando if-else para verificar se a quantidade maior do que zero. Melhor mesm usar o comando apropriado para cada situao, ou seja, neste caso, o comando while
(como no exemplo 22) ou o comando for que ainda mais adequado para
situaes onde j se tem a quantidade de repeties, como neste caso.

Tecnologia em Anlise e Desenvolvimento de Sistemas

Linguagem C

41. Construa um programa capaz de ler uma srie de nmeros at


obter um nmero inferior a 100.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
42. Construa um programa capaz de ler uma srie de nmeros at
que aparea um nmero entre 1 e 5.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
43. Refaa o exerccio 39, agora com o comando do-while.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I

91

92

Captulo 2

O que aprendemos at aqui?


Os comandos for, while e do while so responsveis pela repetio do programa.
Os trs comandos podem ser usados para resolver o mesmo problema, cabe ao programador decidir qual deles melhor responder s necessidades para a soluo do problema.

for: comando de controle de fluxo que executa repetidamente


um conjunto de comandos um numero determinado de vezes.
(LAUREANO, 2005, p. 39)
while: comando de controle de fluxo que executa repetidamente
um conjunto de comandos baseados em uma condio avaliada
antes do comando ser executado. (LAUREANO, 2005, p. 40)
do while: comando de controle de fluxo que executa repetidamente um conjunto de comandos baseados em uma condio avaliada
depois do comando ser executado.(LAUREANO, 2005, p. 41)

Leituras complementares:
KERNIGHAN Brian W. C Linguagem de Programao Paro
ANSI. Rio de Janeiro: Elsevier, 1989.
ROBERT, Sebesta Conceitos de Linguagem de Programao,
BookMan 2003.

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Tecnologia em Anlise e Desenvolvimento de Sistemas

Mtodos e Estratgias de Estudo

VETORES E MATRIZES

Ol,
Neste Captulo ser abordado o conceito de vetor e matriz. Reserve
um tempo maior para estudo e realizao de atividades.
Vamos em frente!!!!

3.1 Entendendo Vetor


Os comandos de repetio nos oportunizaram conhecer o comportamento de armazenagem de uma varivel. Conseguimos constatar que
cada vez que o loop se repetia, os dados eram atualizados nas variveis
e nesse processo, perdamos os dados anteriores ao loop em execuo.
Verificamos, ento, a necessidade de conhecermos uma outra estrutura em que fosse possvel armazenarmos os valores, sem que eles fossem
constantemente atualizados.
O vetor uma estrutura em que poderemos armazenar vrios dados,
mas precisamos ficar atentos ao fato de que os dados armazenados devero ser de um s tipo. Na declarao do vetor j definimos o tipo, ou
seja, indicamos se os valores que sero armazenados nele, so do tipo
float ou inteiro; por isso, conceitua-se o vetor como sendo uma estrutura de dados homognea;
O tipo char ser visto posteriormente.

3.1.1 Declarando Vetor


Sintaxe: tipo_da_varivel nome_da_varivel [tamanho];
Vamos exemplificar o vetor para melhor entender a sua declarao.
A Ilustrao 18 apresenta o vetor NUMEROS capaz de armazenar 5 valores inteiros:
Programao I

93

94
Captulo 3

NUMEROS

Ilustrao 18: Demostrao do Vetor NUMEROS

A declarao do nosso vetor ficar assim: int NUMEROS[5];


Na declarao, estamos informando que:
int - armazenar apenas valores do tipo inteiro;
NUMEROS[5] - poder armazenar at 5 valores.
O fato de termos declarado o vetor com 5 posies , Figura 18, no
significa que estamos livre do controle do ndice.
A linguagem C no verifica se o ndice que voc usou est dentro
dos limites vlidos. Voc quem dever ter o cuidado de controlar
os limites.

3.1.2 Atribuindo Valores ao Vetor (Inicializao)


Para atribuirmos um valor ao vetor, precisaremos indicar em qual posio o
valor ser armazenado. Para essa indicao, utilizaremos o ndice do vetor.
Exemplo 24:

Tecnologia em Anlise e Desenvolvimento de Sistemas

95
Vetores e Matrizes

Vejamos, na Ilustrao 18, como ficaria esse cdigo, aps execuo:

Ilustrao 29: compilao e execuo do cdigo fonte do Exemplo 24

Se a atribuio que fizemos no Exemplo 24, fosse de 10 valores inteiros


para um vetor com 10 posies, teramos que escrever mais cinco atribuies. E se fosse um vetor com 500 posies? Imagine escrever essas
atribuies uma a uma.
Vamos utilizar o comando de repetio for, para nos ajudar a fazer essas
atribuies sem ter que escrev-las.
Exemplo 25:
linha 1

#include <stdio.h>

linha 3

int main ()

linha 2
linha 4
linha 5
linha 6

#include <stdlib.h>
{

int NUMEROS[10], conta;

for(conta=0; conta<10; conta++)

linha 7

linha 9

linha 11

linha 8
linha 10
linha 12

NUMEROS[conta]=conta;

for(conta=0; conta<10; conta++)


printf (%d foi armazenado no vetor.\n, NUMEROS[conta]);

Programao I

96
Captulo 3
linha 13
linha 14

system(pause);

linha 15 }

Vamos entender algumas linhas do cdigo:


linha 5... int NUMEROS[5], conta;
O vetor NUMEROS foi declarado.
A varivel conta foi declarada.
linha 6... for(conta=1;conta<10;conta++)
O comando for ser utilizado para repetir a atribuio enquanto a varivel conta for menor que 10.
linha 8... NUMERO[conta]=conta;
Dentro do bloco do comando for o valor da varivel conta ser atribuda ao vetor.
linha 10 ... for(conta=1;conta<10;conta++)
O comando for ir exibir um a um os valores do vetor NUMEROS[ ].
linha 12 ...printf (%d foi armazenado no vetor.\n, NUMEROS[conta]);
Os valores que foram armazenados no vetor sero exibidos um a um.
Na Ilustrao 19 podemos conferir como se comportou o nosso cdigo:

Ilustrao 30: compilao e execuo do cdigo fonte do Exemplo 25

Tecnologia em Anlise e Desenvolvimento de Sistemas

97
Vetores e Matrizes

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

Exemplo 26: Vamos observar as duas utilizaes de comando for em


nosso programa.
o primeiro for ir preencher o vetor com valores inteiros digitados pelo usurio.
o segundo for ir exibir os valores digitados.
O cdigo ficara assim:

Programao I

98
Captulo 3

A Ilustrao 31 mostrar a compilao e execuo do programa.

Ilustrao 31: Compilao e execuo do cdigo fonte do Exemplo 26

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

99
Vetores e Matrizes

Detalharemos mais as operaes sobre vetores no ambiente da sala


de aula virtual.
Vamos em frente!!!!

44. Faa um programa que:


a) preencha dois vetores A e B de 5 posies, com nmeros inteiros;
b) atribua a um vetor RES a soma do vetor A com B (a primeira
posio de A ser somada primeira posio de B e o resultado
ser atribudo a primeira posio do Vetor RES);
c) mostre os valores do vetor RES. ________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

3.1.3. Vetor de String


Sintaxe: char nome_da_strig [tamanho];
Na Linguagem C, ao declararmos uma string, estaremos, na realidade
declarando um vetor que ir armazenar vrios caracteres, terminando
com um caractere nulo com valor inteiro igual a zero.
Vejamos na Ilustrao 32 uma demostrao de um vetor de 9 posies,
para armazenar a string Educao.
Programao I

100
Captulo 3

NOME
E
0

D
1

U
2

C
3

A
4

C
5

A
6

O
7

\0
8

Ilustrao 32: Demostrao do vetor NOME

A declarao do nosso vetor ficar assim: char NOME[ 9 ];


Observe que declaramos uma posio a mais, garantindo uma posio
para o caractere nulo.
3.1.4 Leitura de Vetor de String
Para armazenar uma string num vetor, a leitura ser feita por meio da
funo gets( ). Essa funo colocar o terminador nulo na string, assim
que a tecla enter for pressionada.
Vejamos um exemplo de leitura de vetor do tipo string.
Exemplo 27:
linha 1

#include <stdio.h>

linha 3

int main ( )

linha 2
linha 4
linha 5

#include <stdlib.h>
{

linha 6

printf(Digite a mensagem: );

linha 7

gets(Nome);

linha 8
linha 9

char Nome[10];

printf(A mensagem digitada foi: %s \n,Nome);

linha 10 }

system(pause);

Vejamos na Ilustrao 33 como ficar nosso programa, aps ser compilado e executado:

Tecnologia em Anlise e Desenvolvimento de Sistemas

101
Vetores e Matrizes

Ilustrao 33: Compilao e execuo do cdigo fonte do Exemplo 27.

Vamos entender algumas linhas do cdigo:


linha 5... char Nome[10];
Declaramos um vetor com 10 posies. Isso significa que esse vetor poder armazenar at 9 caracteres.
linha 7... gets(Nome);
Observe que para leitura no utilizamos a funo scanf( ); a funo utilizada para leitura foi a gets( ).
linha 8... printf(A mensagem digitada foi: %s \n,Nome);
O que nos chama a ateno nessa linha o caractere de impresso %s.
Esse caractere, como j vimos, imprimi uma cadeia de caracteres.

O que aprendemos at aqui?


Vetor uma estrutura indexada que armazenar dados de um
mesmo tipo(homogneos).
string na realidade, um vetor de caractere, que dever ser lida
por meio da funo gets( ).

Programao I

102
Captulo 3

3.2 Matriz
Sintaxe: tipo_da_varivel nome_da_varivel [altura][largura];
Exemplificamos, abaixo, uma matriz para entendermos a sua declarao.
A Ilustrao 34 ir representar a matriz DADOS, capaz de armazenar
as duas notas de 3 alunos.
DADOS
cada linha ir conter
as duas notas, logo:
aluno nota1 nota2
0
80,50 75,90
1
70,50 75,30
2
40,30 60,21

0
1
2

80,50
70,50
40,30
0

75,90
75,30
60,21
1

cada coluna
representa
uma nota, logo:
0 = primeira nota
1 = segunda nota

Ilustrao 34: Demonstrao Matriz

A declarao da nossa matriz ficar assim: float DADOS[3][2];


Na declarao informamos que:
float - armazenar apenas valores do tipo float;
DADOS [3][2] - o ndice da esquerda [3] indexa as linhas;
o ndice da direita[2] indexa as colunas;

Vale a pena lembrar :


Na linguagem C, os ndices iniciam de zero;
Ns que mantemos os ndices na faixa declarada, a Linguagem
C no far o controle automaticamente.

Faamos o cdigo do programa da matriz, representada na Ilustrao 35:


Exemplo 28:
linha 1
linha 2
linha 3

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

Tecnologia em Anlise e Desenvolvimento de Sistemas

103
Vetores e Matrizes
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha

4 {
5
float dados[3][2];
6
int lin,col;
7
printf(INICIANDO O LOOP DE LEITURA \n \n);
8
for(lin=0;lin<3;lin++)
9
for(col=0;col<2;col++)
10
{
11
printf(Digite a nota: );
12
scanf(%f, &dados[lin][col]);
13
}
14
printf(\nINICIANDO O LOOP DE EXIBICAO \n\n);
15
for(lin=0;lin<3;lin++)
16
for(col=0;col<2;col++)
17
printf(nota = %.2f \n,dados[lin][col]);
18
system(pause);
19 }

A execuo do cdigo poder ser analisada, por meio da Ilustrao


24, abaixo:

Ilustrao 35: Compilao e execuo do cdigo fonte do Exemplo 28

Vamos entender algumas linhas do cdigo:

Programao I

104
Captulo 3
linha 8
linha 9

for(lin=0;lin<3;lin++)
for(col=0;col<2;col++)

O primeiro for controlar a linha, e o segundo controlar a coluna.


___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

45.Carregue uma matriz com as 3 notas de 4 alunos. Calcule a


mdia das notas e mostre:
a) quantas notas ficaram abaixo da mdia;
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

105
Vetores e Matrizes

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
46. Carregue uma matriz 3 x 3 com os valores das vendas de uma
loja supondo 3 meses e 3 vendedores. Calcule e mostre: em cada
ms qual foi o vendedor que vendeu mais.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

3.2.1 Matriz de String


Pelo que aprendemos at aqui, podemos deduzir que uma matriz de
string armazena vrios nomes. Precisamos ficar atentos ao fato de que
uma a forma de se declarar a matriz e outra a forma de se fazer referncias a ela.
Ao declararmos a matriz, precisamos informar os dois ndices (linha e
coluna), porm, a referncia ser feita apenas por um ndice.
Programao I

106
Captulo 3

Exemplo 29: Faamos uma matriz para armazenar o nome de trs pessoas, sendo que cada nome poder ter, no mximo, 30 caracteres.

linha 1

#include <stdio.h>

linha 2

#include <stdlib.h>

linha 3

int main ()

linha 4

linha 5

char nomes[3][30];

linha 6

int lin;

linha 7

printf(INICIANDO O LOOP DE LEITURA\n\n);

linha 8

for(lin=0;lin<3;lin++)

linha 9

linha 10

printf(Digite o nome: );

linha 11

gets(nomes[lin]);

linha 12

linha 13

printf(\nINICIANDO O LOOP DE EXIBICAO\n\n);

linha 14

for(lin=0;lin<3;lin++)

linha 15
linha 16

printf(nome = %s

\n,nomes[lin]);

system(pause);

linha 17 }

Vamos entender algumas linhas do cdigo:


linha 5... char nomes[3][30];
Declaramos a matriz para receber 3 nomes de, no mximo, 30 caracteres.
linha 6...int lin;
Declaramos a varivel lin.
linha 7...printf(INICIANDO O LOOP DE LEITURA \n \n);
O printf imprimir uma mensagem avisando o incio da leitura.
linha 8... for(lin=0;lin<3;lin++)
Como a matriz de string, s precisamos de um for para controlar o
ndice linha.

Tecnologia em Anlise e Desenvolvimento de Sistemas

107
Vetores e Matrizes

linha 11...
gets(nomes[lin]);
Utilizamos a funo gets( ) para ler os nomes (os caracteres).
linha 15...
for(lin=0;lin<3;lin++)
Exibindo os nomes digitados.
Acompanhe a Ilustrao 26: digitao, compilao e execuo do
Exemplo 29:

Ilustrao 36: Compilao e execuo do cdigo fonte do Exemplo 29

Exemplo 30:
Neste programa vamos permitir o cadastro de vrios nomes com as suas
respectivas idades. Ao trmino da entrada ser calculada a mdia das
idades e em seguida ser exibida a relao dos nomes cuja idade maior
do que a mdia.

Programao I

108
Captulo 3

Algumas observaes:
Foi declararada uma matriz de char para que houvesse um limite de 50 nomes com no mximo29 caracteres, pois o ltimo j
reservado ao \0.
O vetor das idades armazena de forma correspondente as posies dos nomes, ou seja, a quinta idade (idades[4]) se refere ao
quinto nome (nomes[4]).
O acesso ao nome feito usando-se apenas a primeira dimenso
da matriz nome[n].
A ilustrao 37 mostra uma possvel execuo do exemplo 30.

Ilustrao 37: Demostrao de uma execuo do exemplo 30.


Tecnologia em Anlise e Desenvolvimento de Sistemas

109
Vetores e Matrizes

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

47. Elabore um programa para receber os alunos de uma turma


com as suas respectivas notas finais. Aps a entrada exiba os nomes cuja notas sejam maiores do que a mdia da turma e que ao
mesmo tempo sejam maiores do que a mdia de aprovao que
igual a 7.0
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

Programao I

110
Captulo 3

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

O que aprendemos at aqui?


Na matriz podemos armazenar vrios dados, desde que eles sejam do mesmo tipo.
Uma matriz de string armazenar, por exemplo, vrios nomes.
Para fazer referncia a uma matriz de string basta indicar apenas
um ndice.

vetor: Matrizes unidimensionais. (LAUREANO, 2005, p.69).


matriz: Agregado homogneo de elementos de dados cujo elemento individual identificado por sua posio no agregado em
relao ao primeiro. (LAUREANO, 2005, p.70).

SCHILDT, Herbert. C Completo e Total. So Paulo: Pearson, 2006.


KERNIGHAN Brian W. C Linguagem de Programao Paro
ANSI. Rio de Janeiro: Elsevier, 1989.

Tecnologia em Anlise e Desenvolvimento de Sistemas

111

ESTRUTURAS(STRUCT)

Ol,
Estamos chegando na reta final, importante continuarmos com o
mesmo interesse e com a mesma dedicao.
Este captulo exigir de voc muita dedicao e cumprimento de
todas as tarefas.
Vamos em frente!!!!
Vimos que na Matriz podemos armazenar dados de um mesmo tipo. Na
Estrutura estes dados podem ser de vrios tipos.

4.1 Declarando uma Estrutura


Sintaxe: struct nome_do_tipo_da_estrutura

tipo_1 nome_1;

tipo_2 nome_2;

...

tipo_n nome_n;

} variveis_estrutura;

Vamos declarar uma estrutura chamada pauta, que armazenar a


matrcula e a mdia de um aluno:




struct pauta
{

int matr;

float media;
} aluno;

Temos que: pauta uma estrutura com dois campos ( matr e media).
aluno uma varivel do tipo pauta.
Programao I

112

Captulo 4

Abaixo foi declarada uma estrutura endereo, que guardar os dados referentes ao endereo de uma nica pessoa:

struct tipo_endereco
{
char rua[50];
int numero;
char bairro[20];
char cidade[30];
char sigla_estado[3];
int CEP;
}end;

Criemos, agora uma estrutura chamada ficha_pessoal, com os dados pessoais de uma pessoa:


struct ficha_pessoal




char nome[50];
int telefone;

struct tipo_endereco end;

}agenda;

Vemos, pelo exemplo acima, que uma estrutura pode fazer parte de outra (a struct tipo_endereco usada pela struct ficha_pessoal).

Ol,
Vamos fazer algumas declaraes de estruturas para testar nosso
aprendizado at aqui. As declaraes solicitadas nessa atividade,
devem ser realizadas individualmente.
Consulte a declarao da estrutura pauta, acima. Ela poder
auxili-lo.
Vamos em frente!!!!

Tecnologia em Anlise e Desenvolvimento de Sistemas

Estruturas(STRUCT)

48. Declare as estruturas, conforme solicitado em cada um dos


enunciados:
a) Para armazenar a mdia final e a matrcula de um aluno: ____
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
b) Para armazenar a matrcula, os nmero de dependentes e o salrio de um funcionrio: ________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
c) Para armazenar o nmero do telefone, o nmero do celular , o valor da compra e o cdigo de um cliente: ____________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I

113

114

Captulo 4

4.2 Utilizando Estrutura no Programa


Neste exemplo ser declarada uma estrutura para armazenar e exibir a
matrcula e a mdia de um aluno:
Exemplo 31:
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha

1 #include <stdio.h>
2 #include <stdlib.h>
3 int main() {
4
struct pauta
5
{
6
int matr;
7
float media;
8
}aluno;
9
printf(...SOLICITANDO OS DADOS...\n \n);
10
printf(Digite a matricula: );
11
scanf(%d, &aluno.matr);
12
printf(Digita a media: );
13
scanf(%f, &aluno.media);
14
printf( \n...MOSTRANDO OS DADOS...\n \n);
15
printf(Matricula = %d\n,aluno.matr);
16
printf(Media = %.2f \n, aluno.media);
17
system(pause);
18
return (0); }

Vejamos na Ilustrao 39, como ficou o programa.

Ilustrao 39: Demostrao de uma execuo do exemplo 31.


Tecnologia em Anlise e Desenvolvimento de Sistemas

Estruturas(STRUCT)

Vamos analisar algumas linhas do programa:


linha 11... scanf(%d, &aluno.matr);
Para a leitura correta do dado, precisamos informar em qual campo da
varivel aluno o dado lido ser armazenado: Na linha 12, informamos que
o dado ser armazenado no campo matr da varivel aluno (aluno.matr ).
linha 16... printf(Media = %.2f \n, aluno.media);
Da mesma forma precisamos informar qual o campo ser impresso. Na linha 17, informamos que o dado a ser impresso a mdia (aluno.media).

49. Aproveitando as declaraes feitas na atividade 41, vamos agora desenvolver o programa:
a) Faa um programa que leia e exiba a mdia final e na matrcula
de um aluno: _______________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
b) Faa um programa que leia e exiba a matrcula, os nmeros de
dependentes e o salrio de um funcionrio:
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
Programao I

115

116

Captulo 4

c) Faa um programa que leia e exiba o nmero do telefone, o


nmero do celular, o valor da compra e o cdigo de um cliente
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Ol,
At aqui fizemos vrias atividades de estruturas, armazenando dados de uma nica pessoa. Vamos, agora, fazer estruturas que armazenem os dados de vrias pessoas e alterar os exerccios propostos na
atividade 42 !!
Vamos em frente!!!!

4.3 Vetores de Estrutura (Struct)


Um vetor de estrutura um vetor que armazenar os dados de vrias pessoas. A estrutura pauta, que declaramos no incio do captulo, e que armazenava os dados de um nico aluno, aqui ir armazenar os dados de uma
turma inteira. Para isso temos que fazer uma pequena alterao, assim:

struct pauta
{
int matr;
float media;
} aluno[4];

Tecnologia em Anlise e Desenvolvimento de Sistemas

117

Estruturas(STRUCT)

Pronto, declaramos que a varivel aluno tem 4 posies, verifique a representao da estrutura na Ilustrao 40:

matr

matr

matr

matr

media

media

media

media

1 2 3

Ilustrao 40: Representao da estrutura pauta

Vamos desenvolver um programa utilizando essa declarao:


Exemplo 32:
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

#include <stdio.h>
#include <stdlib.h>
int main()
{
int lin;
struct pauta
{
int matr;
float media;
}aluno[4];
printf(...LOOP - SOLICITANDO OS DADOS...\n \n);
for(lin=0;lin<4;lin++)
{
printf(Digite a matricula: );
scanf(%d, &aluno[lin].matr);
printf(Digite a media: );
scanf(%f, &aluno[lin].media);
}
printf( \n...LOOP - MOSTRANDO OS DADOS...\n \n);
for(lin=0;lin<4;lin++)
{
printf(Matricula = %d\n,aluno[lin].matr);
printf(Media = %.2f \n, aluno[lin].media);
}
system(pause);
return (0);
}

Programao I

118

Captulo 4

Vejamos, na Ilustrao 41, como ficou o programa:

Ilustrao 41: Compilao e execuo do cdigo fonte do Exemplo 32

Vamos analisar algumas linhas do programa:


linha 10... }aluno[4];
Declaramos um vetor do tipo struct com 4 posies.
linha 12... for(lin=0;lin<4;lin++)
Comose trata de um vetor, precisamos do comando for, para controlar
as posies de armazenamento e exibio.
linha 15... scanf(%d, &aluno[lin].matr);
Informamos que a matricula que est sendo lida naquele momento, ou
seja, na posio indicada por lin, ser armazenada nessa posio.
linha 17... scanf(%f , &aluno[lin].media);
Da mesma forma, informamos a impresso.

Tecnologia em Anlise e Desenvolvimento de Sistemas

Estruturas(STRUCT)

50. Aproveitando os mesmos exerccios realizados na atividades


42, vamos agora desenvolver o programa para armazenar os dados de um nmero maior de pessoas:
a) Faa um programa que leia e exiba o nmero do telefone, o nmero do celular, o valor da compra e o cdigo de cinco clientes.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
b) Faa um programa que leia e exiba a matrcula, os nmeros de
dependentes e o salrio de cinco funcionrios.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I

119

120

Captulo 4

c) Faa um programa que leia e exiba a media final e a matrcula


de quatro alunos
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

struct: Agrupa um conjunto de dados no-similares, formando


um novo tipo de dado. (LAUREANO, 2005, p.120)

Leituras complementares:
LAUREANO, Marcos Programando em C. Rio de Janeiro 2005.
SCHILDT, Herbert. C Completo e Total. So Paulo: Makron
Books , 1996.
KERNIGHAN Brian W. C Linguagem de Programao Paro
ANSI. Rio de Janeiro: Elsevier, 1989.

Tecnologia em Anlise e Desenvolvimento de Sistemas

121

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

O que aprendemos at aqui?


Os dados armazenados podem ser de vrios tipos.
Um vetor de estrutura um vetor que armazenar os
dados de vrias pessoas.

Programao I

122

Captulo 4

Tecnologia em Anlise e Desenvolvimento de Sistemas

123

PROCEDIMENTOS E FUNES

Ol,
O Capitulo 5 exigir mais leitura do que os outros, mas os conceitos so necessrios para o entendimento e para a aprendizagem do
contedo.
Esta a reta final.
Vamos em frente!!!!

5.1 Modularizao
uma tcnica de programao que utilizaremos para dividir um programa maior em programas menores. Os programas menores sero feitos
individualmente, at que todo o programa tenha sido desenvolvido.
Para entendermos melhor, vamos imaginar um programa para calcular
a folha de pagamento de uma empresa qualquer.
Podemos dividir esse programa em vrios programas menores. Vamos identificar quais poderiam ser os programas menores da folha
de pagamento:
CALCULAR INSS
CALCULAR DESCONTO DE FGTS
CALCULAR IRRF
CALCULAR SALRIO FAMLIA
CALCULAR FRIAS
CALCULAR SALRIO LQUIDO
IMPRIMIR CONTRA CHEQUE.
Observe que agora o programa folha de pagamento ser composto de
7 programas menores.
Utilizando a tcnica de modularizao, deixaremos o cdigo mais claro
e fcil de ser testado, j que cada programa menor poder ser desenvolProgramao I

124
Captulo 5

vido e testado individualmente, antes de fazer parte do programa maior


(folha de pagamento).
Aos programas menores denominamos funes ou procedimentos.

modularizao: programao modular, tcnica de modularizao, denota a construo de programas pela composio de partes pequenas para formar partes maiores. As partes so chamadas
mdulos. (SEBESTA, 2003, p. 123).

5.2 Funes
Sintaxe: tipo_de_retorno nome_da_funo (declarao_de_parmetros)
{
corpo_da_funo
}
O que difere um procedimento de uma funo o retorno da execuo do
bloco. Uma funo ir retornar um valor para o local onde foi chamada.
5.2.1 Entendendo Funes
Vamos trabalhar com o exemplo da folha de pagamento para entendermos melhor como funciona esse bloco de programa.
Exemplo 33: Nesse exemplo vamos fazer o programa apenas do clculo
do INSS.
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha
linha

1
2
3
4
5
6
7
9
10
11
12
13
14

#include <stdio.h>
#include <stdlib.h>
/*DECLARANDO A FUNCAO*/
float CALCULAR_INSS (float salario)
{
float sal_liq;
sal_liq= salario - (salario*0.08);
return(sal_liq); }
//INICIANDO O PROGRAMA PRINCIPAL
int main(){
float salario_bruto, salario_novo;
printf (Digite o salario do fucionario:);
scanf (%f,&salario_bruto);
salario_novo = CALCULAR_INSS(salario_bruto);

Tecnologia em Anlise e Desenvolvimento de Sistemas

125
Procedimentos e Funes

linha 15
linha 16
linha 17

printf(Salario liquido = %f\n\n,salario_novo);


system(PAUSE);
return 0; }

Vejamos na Ilustrao 42, como ficou o programa:

Ilustrao 42: Compilao e execuo do cdigo fonte do Exemplo 33

Vamos entender algumas linhas:


linha 3... /*DECLARANDO A FUNCAO*/
Comentrio apenas indicando que estamos iniciando a funo.
Linha 4.. float CALCULAR_INSS (float salario)
A funo retornar um valor do tipo float.
A funo dever ser chamada por: CALCULAR_INSS ( ).
linha 5..{float sal_liq;
Declaramos uma varivel chamada sal_liq que utilizaremos dentro
da funo.
linha 6.. sal_liq= salario - (salario*0.08);
Efetuando o clculo do desconto.

Programao I

126
Captulo 5

linha 7.. return(sal_liq);


O comando return( ), retornar o valor da varivel sal_liq, para o programa principal, na linha em que chamamos a funo.
linha 9..//INICIANDO O PROGRAMA PRINCIPAL
Comentrio apenas indicando que estamos iniciando a funo main( ),
ou seja, o programa principal.
linha 11.. float salario_bruto, salario_novo;
Declarando as variveis que sero utilizadas no programa principal.
linha 14.. salario_novo = CALCULAR_INSS(salario_bruto);
Estamos atribuindo varivel salario_novo, o valor que ser calculado pela funo CALCULAR_INSS();
A chamada funo CALCULAR_ INSS( ) feita justamente nesse
momento, ou seja, o seu nome a chamada dela ao programa..

5.3 Procedimentos
Como a funo, o procedimento um bloco de programas, porm ele
no retornar nenhum valor.
Na Linguagem C,
procedimento.

toda funo que retorna void (vazio) um

5.3.1 Entendendo Procedimentos


Para melhor compreenso, continuaremos utilizando o programa folha de pagamento. Identificaremos quais dos programas menores que o
compem, no retornaro nenhum valor.
Observe: o programa IMPRIMIR CONTRA CHEQUE ter void como
retorno, ou seja, no retornar nenhum valor para o programa principal, ou para outra funo.
Exemplo 34: Vamos acrescentar ao exemplo 33 uma funo que imprimir o valor do salrio liquido.
linha 1

#include <stdio.h>

linha 2

/*DECLARANDO A FUNCAO CALCULAR_INSS*/

linha 3

float CALCULAR_INSS (float salario)

linha 4

linha 5

float sal_liq;
sal_liq= salario - (salario*0.08);

Tecnologia em Anlise e Desenvolvimento de Sistemas

127
Procedimentos e Funes

linha 6

return(sal_liq);

linha 7

linha 8

/*DECLARANDO A FUNCAO MOSTRAR*/

linha 9

void MOSTRAR(float salario)

linha 10 {

float salario_novo;

linha 11

salario_novo = CALCULAR_INSS(salario);

linha 12

printf(Salario liquido =%f\n\n,salario_novo);

linha 13 }

linha 14 //INICIANDO O PROGRAMA PRINCIPAL


linha 15 int main() {
linha 16

float salario_bruto, salario_novo;

linha 17

printf(Digite o salario do fucionario:);

linha 18

scanf (%f,&salario_bruto);

linha 19

MOSTRAR(salario_bruto);

linha 20

system(PAUSE);

linha 21

return 0;

linha 22 }

Vamos entender algumas linhas:


linha 8...void MOSTRAR(float salario)
Informamos que a funo MOSTRAR( ) retornar void (retorno vazio).
linha 10... salario_novo = CALCULAR_INSS(salario);
Agora a chamada funo CALCULAR_INSS( ) ser feita dentro da
funo MOSTRAR( ), porque nesse momento que precisaremos do
valor de retorno que ela fornece.
linha 17... MOSTRAR(salario_bruto);
O procedimento chamado apenas pelo nome.
Programao I

128
Captulo 5

Vejamos na Ilustrao 43, como ficou o programa:

Ilustrao 43: Compilao e execuo do cdigo fonte do Exemplo 34

funo e/ou procedimento: Trecho de cdigo que ser utilizado


muitas vezes no programa e/ou agrupamento de cdigos correlatos. (LAUREANO, 1995, p.47).

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

129
Procedimentos e Funes

5.4 Escopo de Variveis


Nos exemplos apresentados pde-se observar a utilizao de variveis
que foram declaradas em diferentes locais, (dentro de parnteses, fora
deles), sem que houvesse preocupao, de nossa parte, de que tipo de
comportamento elas estariam assumindo, quando o bloco de programa
fosse acoplado ao programa maior (folha de pagamento).
Para entendermos esse comportamento, precisamos entender a definio de escopo de variveis, e a passagem de parmetros:
As variveis podem assumir dois tipos de comportamentos:
Locais: permanecem na memria durante a execuo da funo.
Globais: permanecem na memria durante toda execuo do
programa principal e so declaradas fora das funes.
No programa folha de pagamento, a varivel salrio bruto ser global,
j que as funes utilizaro o seu valor para efetuarem os clculos a
que se propem.
As variveis que foram criadas dentro da funo sero locais, s sendo
visveis quela funo.
As variveis globais devem ser evitadas, pois ocupam memria o tempo
todo, tornando o programa mais difcil de ser entendido. O cdigo fica
muito dependente, aumentando o acoplamento da funo e tornando-a
difcil de ser usada por outro programa.

E se for definida uma varivel local com o mesmo nome de uma


varivel global?

escopo de variveis: O escopo o conjunto de regras que determinam o uso e a validade de variveis nas diversas partes do programa. (BRIAN, 1978, p.35).

5.1.4 Passagem de Parmetro


Parmetros so valores que informamos funo, no momento em
que a chamamos.
Chamamos essa informao de passagem de parmetros, que pode ser
feita de duas formas:
Programao I

130
Captulo 5

por valor: mesmo que a varivel sofra alterao, dentro da


funo, para onde foi passada, o valor dela no alterado no
programa principal.
Exemplo 35:

Pela Ilustrao 44 poderemos verificar que, mesmo que os valores tenham sido alterados dentro da funo SOMA, no programa principal
eles ficaram inalterados.

Ilustrao 44: : Compilao e execuo do cdigo fonte do Exemplo 35


Tecnologia em Anlise e Desenvolvimento de Sistemas

131
Procedimentos e Funes

Por referncia: Na Linguagem C, utilizamos um recurso


para simular a passagem de parmetro por referncia, declarando seus parmetros formais como ponteiros. Os ponteiros
so a referncia de que precisamos para alterar a varivel no
programa principal.
O nico inconveniente que, quando chamarmos a funo (no
programa principal, por exemplo), devemos colocar um & na
frente das variveis que estivermos passando para a funo.
Exemplo 36: Usaremos o o Exemplo 34, mas agora passaremos as variveis num1 e num2, por referncia. Para isso, colocaremos um *(asterisco), transformado-as em um ponteiro.

Na Ilustrao 45 poderemos verificar que somente os valores das variveis num1 e num2 foram alterados fora da funo SOMA( ), isso
porque a passagem dessas duas variveis foram feitas por referncia.
A varivel num3, como foi passada por valor, s teve o seu valor alterado dentro da funo SOMA( ).

Programao I

132
Captulo 5

Ilustrao 45: execuo do exemplo 36.

parmetro: o termo parmetro muitas vezes utilizado como sinnimo de argumento, mas geralmente utiliza-se parmetros quando
se faz referncia s variveis situadas na assinatura de um mtodo
ou funo e argumentos aos valores atribudos a esses parmetros.
(BRIAN, 1978, p.25).
passagem de parmetro por referncia: a mudana do valor de
um parmetro dentro de uma funo afeta o valor da varivel original. (BRIAN, 1978, p.26).
passagem de parmetro por valor: Alteraes no parmetro no
afetam a varivel externa. (BRIAN, 1978, p.26).

50. Crie um programa que usando uma sub_rotina de funo retorne o valor da diviso de dois nmeros inteiros para o programa principal e mostre o resultado.
FUNO MAIN pedir os dois nmeros inteiro, chamar a
funo DIVISAO e exibir o resultado.
FUNO DIVISAO dividir os nmeros e retornar o valor da
diviso para main( ). ___________________________________
___________________________________________________
Tecnologia em Anlise e Desenvolvimento de Sistemas

133
Procedimentos e Funes

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
_______.____________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
51. Criar um programa que receba um nmero que corresponda
a um ms do 1 trimestre e escreva o ms correspondente; caso o
usurio digite o numero fora do intervalo dever aparecer uma
mensagem informando que o nmero invlido. O programa dever ser executado enquanto o usurio quiser.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
52. Criar um programa que apresente um menu de selees no
programa principal. Esse menu dever dar ao usurio a possibilidade de escolher uma entre quatro operaes aritmtica. Escolhida a opo desejada, dever ser solicitada a entrada de dois
nmeros. Processada a operao o resultado dever ser exibido. O
programa dever ser executado enquanto o usurio quiser.
Programao I

134
Captulo 5

FUNO MAIN Mostrar um menu de opes (1dividir),



(2-somar) , (3multip)e (4-subtrair).
Pedir dois nmeros inteiros.
Utilizar o comando switch para chamar a
funo que corresponda a opo do usurio.
FUNO DIVIDIR dividir os valores lidos e mostrar o
resultado.
FUNO SOMAR somar os valores lidos e mostrar o resultado.
FUNO MULTIPLICAR multiplicar os valores lidos e mostrar
o resultado.
FUNO SUBTRAIR subtrair os valores lidos e mostrar o
resultado.

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

5.1.5 Funes Recursivas


Podemos chamar uma funo de dentro da prpria funo. Essa tcnica
chamada de recursividade. Se uma funo F chama a prpria funo
F, dizemos que ocorre uma recurso. A implementao de alguns Algoritmos fica muito mais fcil, usando-se a recursividade. Quando uma
funo chamada recursivamente, cria-se um ambiente local para cada
chamada. As variveis locais de chamadas recursivas so independentes
entre si, como se estivssemos chamando funes diferentes.

Tecnologia em Anlise e Desenvolvimento de Sistemas

135
Procedimentos e Funes

Exemplo 37: A srie de Fibonacci muito conhecida na matemtica. A


srie composta assim, o primeiro e o segundo termos so 1. A partir
do terceiro termo, todos os termos so a soma dos dois ltimos.
Srie de Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, 34...
Faamos um programa para encontrar o ensimo termo da seqncia
de Fibonacci.

Na Ilustrao 46, poderemos verificar a compilao e execuo do


Exemplo 37:

Ilustrao 46: execuo do exemplo 37

Programao I

136
Captulo 5

funo recursiva: recurso um mtodo de programao no


qual uma funo pode chamar a si mesma. (LAUREANO,
2005, p. 239).

5.1.6 Prottipo de Funo


Todas as funes que fizemos at aqui foram colocadas antes do programa principal (main( )), dessa forma, quando o compilador chegasse a
ele, j saberia os formatos das funes.
Usando prottipo de funo, poderemos colocar as funes aps o programa principal. O prottipo uma declarao de funo, ou seja, declaramos a funo que utilizaremos no programa. Dessa forma, o compilador tomar conhecimento do seu formato, antes da compilao, assim:
Exemplo 38: Vamos utilizar o Exemplo 36 e alterar seu cdigo, incluindo o prottipo da funo SOMA():

Na Ilustrao 47, poderemos verificar a compilao e execuo do


Exemplo 38. Observe que a declarao da funo (void SOMA(int *x,
int *y, int z);) deu-nos condies para alterarmos a posio do programa principal, colocando-o no incio do cdigo.

Tecnologia em Anlise e Desenvolvimento de Sistemas

137
Procedimentos e Funes

Ilustrao 47: : Compilao e execuo do cdigo fonte do Exemplo 38

prottipo de funo: assinatura da funo ou definio da, indica ao


compilador seu nome e parmetros. (LAUREANO, 2005, p. 47).

O que aprendemos at aqui?


Modularizao uma tcnica de programao que utilizaremos
para dividir um programa maior em programas menores. Aos
programas menores denominamos funes ou procedimentos.
As variveis podem assumir dois tipos de comportamentos, locais e globais.
A passagem de parmetros, pode ser feita de duas formas: por
valor e por referncia.
Os ponteiros so a referncia de que precisamos para alterar
a varivel no programa principal.
Podemos chamar uma funo de dentro da prpria funo.
Essa tcnica chamada de recursividade.
As variveis locais de chamadas recursivas so independentes
entre si, como se estivssemos chamando funes diferentes.
O prottipo uma declarao de funo.

Programao I

138
Captulo 5

53. Refaa os exerccios 50, 51 e 52, usando prottipo de funo.


___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas

139

FARRER, HARRY, Algoritmos Estruturados, LTC, 1999


SCHILDT, Herbert. C Completo e Total. So Paulo: Pearson, 2006.
DEITEL, H.M. Como Programar em C. Rio de Janeiro, 1999
SEBESTA, Robert W. Conceitos de linguagem de programacao. Sao
Paulo: Bookman., 2003.
TANENBAUM, Andrew S. Sistemas Operacionais. Porto Alegre:
Bookman, 2000.
LAUREANO, Marcos Programando em C. Rio de Janeiro 2005,
KERNIGHAN Brian W. C Linguagem de Programao Paro ANSI.
Rio de Janeiro: Elsevier, 1989.

Programao I

Você também pode gostar