You are on page 1of 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


3

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, videoconfern-
cia, etc.), podemos manter uma comunicao efetiva.

importante que voc conhea toda a equipe envolvida neste curso: coor-
denadores, 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 mo-


dernas, representa uma nova forma de aprender, respeitando, sempre, o
seu tempo.

Desejamos-lhe sucesso e dedicao!

Equipe do Ifes

Programao I
4

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


tante referente ao contedo apresentado.

Espao reservado para as anotaes que voc


julgar necessrias.

Tecnologia em Anlise e Desenvolvimento de Sistemas


5

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
6

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


7

APRESENTAO

Ol,

Nessa disciplina vamos conhecer o que Algoritmo e apren-


der a resolver problemas de forma que o computador possa
entender e executar.

Vamos aprender os conceitos bsicos da linguagem de programa-


o C, que ser utilizada para desenvolvimento dos programas.

O material impresso que voc utilizar nessa disciplina foi prepa-


rado valorizando os detalhes, no intuito de amenizar as dificulda-
des que possam aparecer em nosso percurso, na sala de aula.

importante que voc o tenha sempre ao alcance, aprovei-


tando o tempo disponvel para leitura, reviso ou execuo
das atividades.

Todas as atividades aqui propostas, apesar de no serem avaliati-


vas, 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 exe-
cuo (no DEV C++), dos exemplos apresentados, j que al-
guns alunos no dispem de computador com facilidade.

Apesar de a equipe EaD ser composta por profissionais com-


promissados 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
8

Tecnologia em Anlise e Desenvolvimento de Sistemas


9

ALGORITMOS

Caro aluno,
Vamos iniciar o primeiro captulo, em que voc estudar o concei-
to 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 res-
peito do significado de Algoritmo, a fim de iniciarmos nossa trajet-
ria 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, testa-
da. 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 ob-


ter 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 apro-
veitar 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, a-


car 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 le-


vam 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. Ob-
serve 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 pro-
blemas 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 pas-


sos 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 computa-
cional. (SEBESTA, 2003).

1.3 Construindo Algoritmos Para Computadores

Construir Algoritmos para computadores requer, em primeiro lu-


gar, a transformao do nosso passo a passo em uma estrutura que
possa ser entendida e executada pelo computador. Para isso, utili-
zaremos inicialmente uma linguagem conhecida como Portugol e
mais tarde, assim que os principais conceitos tenham sido assimi-
lados, 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 da-


dos inerentes soluo de um problema como o resultado de uma
operao ou mesmo um nmero ou uma palavra, necessrio infor-
mar primeiro ao computador que precisaremos dessa memria. Essa
informao passada ao computador por meio de comando, que ve-
remos 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 espa-
o 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 necess-
rios, possam ser identificados corretamente.
Uma correta declarao de variveis que disponibilizar uma iden-
tificao 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 ma-


nipulados 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 lgi-
cos (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 ne-
gativos) 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, armaze-


naremos 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 Masculi-
no 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 ar-


mazenar 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 EXEMPLO
No inicie com nmero; 1NUM
No utilize caracteres especiais. 1Num; Nome(M); N*B
No coloque espaos em branco B Letra B-Letra
ou hfen entre nomes.
Utilize, se necessrio, underline B_Letra
(ou underscore)
Crie suas variveis com nomes Se vai guardar nome de funcio-
sugestivos (no uma regra, mas nrios, crie a varivel utilizando a
bom seguir). palavra NOME.

Varivel: Uma Varivel uma posio nomeada de memria, que


usada para guardar um valor que pode ser modificado pelo pro-
grama. (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 acom-
panhar o desenvolvimento.
Bom Estudo!!!

3. Aprendemos que, ao declarar uma varivel precisamos se-


guir 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 vari-


vel. 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 pro-
grama que efetuar o clculo.
Nossa constante ficaria assim declarada: const TAXA= 0.10;

O nome da empresa tambm ser uma constante, ele ser impres-


so 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 modifica-


do 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 Q P ou Q
V V V
V F V
F V V
F F 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 l-


gico utilizado for o E:

P Q PeQ
V V V
V F F
F V F
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 No P
V F
F V

Ordem de precedncia das operaes:

Prioridade Operador
1 aritmtico
2 relacional
3 lgico - no
4 lgico - e
5 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 aritmti-
cos, os quis estudamos no item 1.4.

Exemplo: x + y

Ordem de precedncia das operaes:

Prioridade Operador Operao


1 * / multiplicao, diviso
2 + - adio, subtrao

Utilizando vrios nveis de parnteses, quebraremos a prioridade e ob-


teremos 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 VER-


DADEIRO 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 resul-


tado 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 e NUM2 < NUM3 ou NUM3 <
NUM4;
b) ( ) NUM1 * NUM2 > 10 e NUM1 > NUM4 ou NUM3
- NUM1 > NUM4;
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 Sa-


da e Comentrio

1.6.1 Comando de Atribuio

Na construo de nossos Algoritmos, precisamos constantemente indi-


car 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 atri-


buio, 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 al-
goritmo. 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 correta-
mente, 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 pre-


viamente 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 NUM1 * NUM2;

linha 9 escreva(O resultado da multiplicao :,MULT);

linha 10 }

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 digita-
o 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 digita-
o 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 = HO-
RAS 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 (apli-
cados ao custo de fbrica). Supondo que a porcentagem do dis-
tribuidor 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 trabalha-


das 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 eta-


pa, 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 compu-


tador possa entender e executar. Para isso, vamos conhecer a linguagem
de programao C.

linguagem de programao: Uma Linguagem de Programa-


o 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, destina-
dos 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


37
Linguagem C

Ilustrao 1: Apresentao da primeira tela

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

Programao I
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


39
Linguagem C

3 passo janela 3

Clique no cone <Console Aplication>, no boto <Projeto C> e finalmen-


te no <OK>. Observe a Ilustrao 3, ela o ajudar a executar esses passos:

Ilustrao 3: Apresentao terceira tela

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

Programao I
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


41
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 dispo-


nveis no ambiente Bloodshed Dev-C+. A exposio dos seus recur-
sos 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 desenvol-


vimento dos programas, vamos analisar como ficaria nosso Algoritmo
Soma, na Linguagem C:

Programao I
42
Captulo 2

Exemplo1:

as mudanas de estado do sistema.

Linguagem Portugol Linguagem C

linha 1 Algoritmo soma;


linha 1 #include <stdio.h>
linha 2 {
linha 2 #include <stdlib.h>
linha 3 var int NUM1, NUM2,
SOMA;
linha 3 int main( )
linha 4 escreva ( Digite o primeiro
nmero); linha 4 {

linha 5 leia (NUM1);


linha 5 int num1, num2, soma;
linha 6 escreva ( Digite o segundo
nmero); linha 6 printf( Digite o primeiro
numero: );
linha 7 leia (NUM2);

linha 8 SOMA NUM1 + NUM2; linha 7 scanf (%d, &num1);

linha 9 escreva ( A soma :,


linha 8 printf( Digite o segundo
SOMA);
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 utiliza-
mos nenhum tipo de acentuao.

Tecnologia em Anlise e Desenvolvimento de Sistemas


43
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. Inicia-


mos 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 men-


sagem 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 ar-
mazena 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
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 mo-


nitor, 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 conseguira-
mos v-lo.

A dcima terceira linha - return (0);

Indica o nmero inteiro que est sendo retornado pela funo, em nos-
so 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 lingua-


gem em que o computador possa entender, isto , fazer a sua compila-
o. 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 res-


pectivas mensagens de alerta.

Faa estas simulaes de erro para entender melhor o processo e se fa-


miliarizar com as mensagens do ambiente.

Experimente tambm compilar com outros erros.

Depois desta vivncia voc ficar mais preparado para enfrentar situa-
es reais de erro.

Linha Como foi digitado Mensagem de erro Explicao da mensagem


original de erro

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


<stdio.h> No such file or quivo no foi encontrado.
directory.
int num1, int num1, num2, Linha 7: syntax Sem o ponto-e-vrgula o
num2, soma; soma, error before string compilador deduz que o
constant comando ainda no ter-
minou e por isso vai acu-
sar 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( printe( Digite o undefined refe- No foi encontrada a fun-


Digite o primeiro numero: rence to `printe o printe nas bibliotecas
primeiro
numero: ); ); indicadas

scanf (%d, scanf (%d, Linha 10: mis- Falta o caractere aspas
&num2); &num2); sing terminating como terminador.
character
return (0); return 0); Linha 14: syntax Acusou erro antes do token
error before ) ). Token como o compila-
token dor chama elementos indivi-
duais do programa.

Programao I
46
Captulo 2

Para acertar o erro faa a edio diretamente no ponto desejado e re-


compile: 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 acompanha-


das 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 ar-
mazenar 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 1
int 2
float 4

Exemplo 3:

Tecnologia em Anlise e Desenvolvimento de Sistemas


49
Linguagem C

A Ilustrao 10 vai nos mostrar o resultado da compilao e da execu-


o desse programa.

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

2.5 Alguns dos Cdigos para Impresso Formata-


da de Printf( )

Como j vimos, a funo printf( ) usa o caractere de percentual (%) se-


guido de uma letra para identificar o formato de impresso.

No exemplo acima, utilizamos 3 tipos de caracteres na funo prin-


tf( ). Na tabela abaixo esto relacionados os caractere com tipo de
varivel a ser impresso.

CDIGO SIGNIFICADO

%c 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
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 possibi-
lidades 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 Algorit-


mos. Veja como ele foi colocado no programa abaixo:

Exemplo 4:

Tecnologia em Anlise e Desenvolvimento de Sistemas


51
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 C

E &&
OU ||

NO !

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I
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 cha-
mada MULT;
f) exiba o resultado.
Obs.: Caso encontre dificuldades para fazer esse programa, con-
sulte o exemplo Soma (primeiro exemplo deste captulo).
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas


53
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, con-


sulte o Exemplo 2, visto no item 2.4.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I
54
Captulo 2

O que aprendemos at aqui?


Transformar Algoritmo escrito na linguagem natural para a Lin-
guagem 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 v-


rias 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 necessi-


tar 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


55
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
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 ida-


de igual a 18.

Ilustrao 14: Demostrao do resultado do exemplo6.

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas


57
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 pro-
duto, 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. As-
sim 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 pre-


o igual a 200,00 e taxa de venda igual a 15,00

Ilustrao 15: Demostrao do resultado do exemplo6.

Programao I
58
Captulo 2

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Ol,
Faamos as atividades propostas, a seguir, para verificar como esta-
mos desenvolvendo o nosso aprendizado.
importante que voc digite os exemplos vistos, conforme orienta-
o 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


59
Linguagem C

23. Faa um programa que leia o sexo do usurio e apresente a men-


sagem 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
60
Captulo 2

25. Faa um programa que leia o valor do salrio bruto de um fun-


cionrio. 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 sim-
plesmente no executaria nenhum comando.

Agora, definiremos um bloco de comandos para resultados meno-


res que 2:

Tecnologia em Anlise e Desenvolvimento de Sistemas


61
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
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 proces-
samento 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 ida-


de 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 es-
crito desta forma, com else if ...

Tecnologia em Anlise e Desenvolvimento de Sistemas


63
Linguagem C

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

Programao I
64
Captulo 2

Exemplo 10:

Neste exemplo, o usurio responde o valor do salrio e em seguida rece-


be uma classificao por nvel , variando de 1 a 6. A primeira compara-
o 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 exi-


bir 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


67
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 quan-


do 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
68
Captulo 2

Ilustrao 20: Demonstrao compilao e execuo do Exemplo 11.

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

Tecnologia em Anlise e Desenvolvimento de Sistemas


69
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
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 (n-
meros 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


71
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
72
Captulo 2

30. Faa um programa que leia trs valores distintos a serem di-
gitados 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 devi-
dos aumentos.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Tecnologia em Anlise e Desenvolvimento de Sistemas


73
Linguagem C

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


usurio um valor e o armazene na varivel X. Tal programa de-
ver 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 desen-
volver 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 blo-
cos de comandos existentes.
Que o comando switch utilizado quado temos condies que
no sejam expresses.

Programao I
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 nme-


ro 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


75
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 expres-
so 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
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 1 #include <stdio.h>


linha 2 #include <stdlib.h>
linha 3 int main()
linha 4 {
linha 5 float nota, soma=0, media=0, conta;
linha 6 for(conta=0; conta<=9; conta++)
linha 7 {
linha 8 printf( Digite a nota );
linha 9 scanf(%f,&nota);
linha 10 soma=soma+nota;
linha 11 }//esta chave encerra o comando de repetio for.
Linha 12 media= soma/conta;
linha 13 printf( A media da turma e %f \n,media);
linha 14 system(PAUSE);
linha 15 return 0;
linha 16 }

Vamos entender melhor algumas linhas do cdigo acima.

Tecnologia em Anlise e Desenvolvimento de Sistemas


77
Linguagem C

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


Houve a necessidade de iniciarmos essas variveis com zero, por tratar-
se de variveis que tero valores cumulativos.
J vimos que, ao declararmos uma varivel, estamos reservando um es-
pao na memria, o qual no necessariamente um espao limpo. Isso
significa que nossa varivel no momento da declarao armazena ape-
nas 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 executa-
do, 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
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 ma-


terial 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


79
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
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 de-
cimais. 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


81
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 1 #include <stdio.h>


linha 2 #include <stdlib.h>
linha 3 int main()
linha 4 {
linha 5 float nota, soma=0, media=0;
linha 6 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
82
Captulo 2

A varivel contador guardar a quantidade de vezes que o usurio digi-


tou uma nota, o que corresponder quantidade de alunos. Precisare-
mos 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


83
Linguagem C

Comparando com o exemplo 15, como se houvesse um desmembra-


mento 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 se-
guida ser exibida a maior de todas as notas.

Programao I
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 pos-
sa aproveitar melhor o tempo disponvel quando estiver no ambien-
te 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


85
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 pes-
soas do grupo, permita que o usurio determine o trmino da en-
trada quando ele digitar uma idade negativa. Em seguida exiba a
menor de todas as idades.
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I
86
Captulo 2

40. Faa um programa que leia a data de validade (apenas o n-


mero 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 pro-
grama 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


87
Linguagem C

Nosso cdigo ficar assim:

linha 1 #include <stdio.h>


linha 2 #include <stdlib.h>
linha 3 int main()
linha 4 {
linha 5 float nota, soma=0, media=0;
linha 6 int resp, contador=0;
linha 7 do
linha 8 {
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++; // Esse comando igual a contador=contador + 1;
linha 15 } while(resp==1);
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 7... do
Incio do comando do-while

linha 15... } while(resp= =1);


Enquanto essa condio for verdadeira, o programa continuara em
execuo.

Programao I
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


89
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 condi-


cional par<=500 vai ser feita por ltimo. Neste caso a sada ser a mes-
ma 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
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 veri-
ficar se a quantidade maior do que zero. Melhor mesm usar o coman-
do 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


91
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
92
Captulo 2

O que aprendemos at aqui?


Os comandos for, while e do while so responsveis pela repe-
tio do programa.
Os trs comandos podem ser usados para resolver o mesmo pro-
blema, cabe ao programador decidir qual deles melhor respon-
der 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 repetidamen-
te 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


93
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 comporta-


mento 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 estrutu-


ra 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 de-
vero 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 estru-
tura 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 va-


lores inteiros:

Programao I
94
Captulo 3

NUMEROS

0 1 2 3 4

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 atri-
buies. 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 2 #include <stdlib.h>
linha 3 int main ()
linha 4 {
linha 5 int NUMEROS[10], conta;
linha 6 for(conta=0; conta<10; conta++)
linha 7 {
linha 8 NUMEROS[conta]=conta;
linha 9 }
linha 10 for(conta=0; conta<10; conta++)
linha 11 {
linha 12 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 vari-
vel 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 digita-


dos 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 D U C A C A O \0
0 1 2 3 4 5 6 7 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 2 #include <stdlib.h>
linha 3 int main ( )
linha 4 {
linha 5 char Nome[10];
linha 6 printf(Digite a mensagem: );
linha 7 gets(Nome);
linha 8 printf(A mensagem digitada foi: %s \n,Nome);
linha 9 system(pause);
linha 10 }

Vejamos na Ilustrao 33 como ficar nosso programa, aps ser compi-


lado 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 po-
der armazenar at 9 caracteres.

linha 7... gets(Nome);


Observe que para leitura no utilizamos a funo scanf( ); a funo uti-
lizada 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 cada coluna


as duas notas, logo: 0 80,50 75,90 representa
aluno nota1 nota2 1 70,50 75,30 uma nota, logo:
0 80,50 75,90 2 40,30 60,21 0 = primeira nota
1 70,50 75,30 1 = segunda nota
0 1
2 40,30 60,21

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 #include <stdio.h>
linha 2 #include <stdlib.h>
linha 3 int main ()

Tecnologia em Anlise e Desenvolvimento de Sistemas


103
Vetores e Matrizes

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

linha 9 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 re-
ferncias 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 pes-
soas, 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 printf(nome = %s \n,nomes[lin]);

linha 16 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 limi-


te de 50 nomes com no mximo29 caracteres, pois o ltimo j
reservado ao \0.
O vetor das idades armazena de forma correspondente as po-
sies 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 no-
mes 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 se-
jam 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 ele-
mento 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 da-


dos 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 da-


dos 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 ou-
tra (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


113
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 sa-
lrio de um funcionrio: ________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________
c) Para armazenar o nmero do telefone, o nmero do celular , o va-
lor da compra e o cdigo de um cliente: ____________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
____________________________________________________

Programao I
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 1 #include <stdio.h>


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


115
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 li-
nha 17, informamos que o dado a ser impresso a mdia (aluno.media).

49. Aproveitando as declaraes feitas na atividade 41, vamos ago-


ra 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
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 da-
dos de uma nica pessoa. Vamos, agora, fazer estruturas que arma-
zenem 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 pes-


soas. A estrutura pauta, que declaramos no incio do captulo, e que arma-
zenava 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 re-


presentao da estrutura na Ilustrao 40:

matr matr matr matr


media media media media

0 1 2 3

Ilustrao 40: Representao da estrutura pauta

Vamos desenvolver um programa utilizando essa declarao:

Exemplo 32:

linha 1 #include <stdio.h>


linha 2 #include <stdlib.h>
linha 3 int main()
linha 4 {
linha 5 int lin;
linha 6 struct pauta
linha 7 {
linha 8 int matr;
linha 9 float media;
linha 10 }aluno[4];
linha 11 printf(...LOOP - SOLICITANDO OS DADOS...\n \n);
linha 12 for(lin=0;lin<4;lin++)
linha 13 {
linha 14 printf(Digite a matricula: );
linha 15 scanf(%d, &aluno[lin].matr);
linha 16 printf(Digite a media: );
linha 17 scanf(%f, &aluno[lin].media);
linha 18 }
linha 19 printf( \n...LOOP - MOSTRANDO OS DADOS...\n \n);
linha 20 for(lin=0;lin<4;lin++)
linha 21 {
linha 22 printf(Matricula = %d\n,aluno[lin].matr);
linha 23 printf(Media = %.2f \n, aluno[lin].media);
linha 24 }
linha 25 system(pause);
linha 26 return (0);
linha 27 }

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


119
Estruturas(STRUCT)

50. Aproveitando os mesmos exerccios realizados na atividades


42, vamos agora desenvolver o programa para armazenar os da-
dos de um nmero maior de pessoas:

a) Faa um programa que leia e exiba o nmero do telefone, o n-


mero 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
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 concei-


tos 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 progra-


ma 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. Va-


mos 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 desenvol-

Programao 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 modulariza-


o, denota a construo de programas pela composio de par-
tes 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 entender-


mos melhor como funciona esse bloco de programa.

Exemplo 33: Nesse exemplo vamos fazer o programa apenas do clculo


do INSS.

linha 1 #include <stdio.h>


linha 2 #include <stdlib.h>
linha 3 /*DECLARANDO A FUNCAO*/
linha 4 float CALCULAR_INSS (float salario)
linha 5 { float sal_liq;
linha 6 sal_liq= salario - (salario*0.08);
linha 7 return(sal_liq); }
linha 9 //INICIANDO O PROGRAMA PRINCIPAL
linha 10 int main(){
linha 11 float salario_bruto, salario_novo;
linha 12 printf (Digite o salario do fucionario:);
linha 13 scanf (%f,&salario_bruto);
linha 14 salario_novo = CALCULAR_INSS(salario_bruto);

Tecnologia em Anlise e Desenvolvimento de Sistemas


125
Procedimentos e Funes

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


linha 16 system(PAUSE);
linha 17 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 pro-
grama 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 cal-
culado 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, toda funo que retorna void (vazio) um


procedimento.

5.3.1 Entendendo Procedimentos

Para melhor compreenso, continuaremos utilizando o programa fo-


lha 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 princi-
pal, ou para outra funo.

Exemplo 34: Vamos acrescentar ao exemplo 33 uma funo que impri-


mir 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 { float sal_liq;
linha 5 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 correla-
tos. (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 defini-


o 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 deter-


minam o uso e a validade de variveis nas diversas partes do pro-
grama. (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 te-


nham 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, decla-
rando 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 vari-


veis num1 e num2, por referncia. Para isso, colocaremos um *(aste-
risco), transformado-as em um ponteiro.

Na Ilustrao 45 poderemos verificar que somente os valores das va-


riveis 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 altera-
do dentro da funo SOMA( ).

Programao I
132
Captulo 5

Ilustrao 45: execuo do exemplo 36.

parmetro: o termo parmetro muitas vezes utilizado como sin-


nimo 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 ori-
ginal. (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 re-


torne o valor da diviso de dois nmeros inteiros para o progra-
ma 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 de-
ver 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 possi-
bilidade de escolher uma entre quatro operaes aritmtica. Es-
colhida 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 Algo-
ritmos 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 progra-


ma 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 pro-


grama principal. O prottipo uma declarao de funo, ou seja, decla-
ramos a funo que utilizaremos no programa. Dessa forma, o compila-
dor tomar conhecimento do seu formato, antes da compilao, assim:

Exemplo 38: Vamos utilizar o Exemplo 36 e alterar seu cdigo, incluin-


do 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 progra-
ma 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, lo-
cais 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