Professional Documents
Culture Documents
UNIASSELVI
Tcnicas de
programao
TCNICAS DE PROGRAMAO
ISBN 978-85-68075-94-4
C M Y K CL ML LB LLB
99575-978-85-6875-94-4-UNOPAR_tecnicas_programacao.pdf, page 1 @ Preflight ( 9788568075944_UNOPAR_tecnicas_programacao.indd ) - 04:36:54 - August 22, 2014 - PG-1
UNOPAR
Tcnicas de
programao
TCNICAS DE PROGRAMAO
ISBN 978-85-68075-94-4
C M Y K CL ML LB LLB
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:41 - August 22, 2014 - PG-1
Tcnicas de
programao
Todos os direitos reservados. Nenhuma parte desta publicao poder ser reproduzida
ou transmitida de qualquer modo ou por qualquer outro meio, eletrnico ou mecnico,
incluindo fotocpia, gravao ou qualquer outro tipo de sistema de armazenamento e
transmisso de informao, sem prvia autorizao, por escrito, da Editora
e Distribuidora Educacional S.A.
Freitas, Veronice de
F866t Tcnicas de programao / Veronice de Freitas,
Anderson Emdio de Macedo Gonalves. Londrina:
Editora e Distribuidora Educacional S.A., 2014.
192 p.
ISBN 978-85-68075-94-4
CDD 005.133
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:42 - August 22, 2014 - PG-3
Sumrio
iv TCNICAS DE PROGRAMAO
S u m r i o v
Apresentao
Unidade 1
Lgica proposicional
Anderson Emdio de Macedo Gonalves
Veronice de Freitas
Seo 1: Proposies
Todo conjunto de palavras ou smbolos que exprimem
um pensamento de sentido completo. As proposies
podem ser classificadas em simples ou atmicas e com-
postas ou moleculares. Chama-se proposio simples ou
proposio atmica aquela que no contm nenhuma
outra proposio como parte integrante de si mesma.
As proposies simples so geralmente designadas pe-
las letras latinas minsculas p, q, r, s ..., chamadas letras
proposicionais.As proposio composta ou proposio
molecular aquela formada pela combinao de duas
ou mais proposies. As proposies compostas so ha-
bitualmente designadas pelas letras latinas P, Q, R, S...,
tambm chamadas de letras proposicionais.Estas pro-
posies so unidas por conectivos: e, ou, se ...
ento, se e somente se etc.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:42 - August 22, 2014 - PG-10
Seo 2: Conectivos
Conectivos lgicos so palavras que usamos para
formar novas proposies a partir de outras exis-
tentes. As proposies compostas so formadas
por proposies simples interligadas por conectivo.
Usando conectivos, possvel criar proposies maio-
res (ditas compostas) a partir de menores, de modo
que o valor da proposio obtida dependa apenas do
valor das proposies iniciais. Os principais conectivos
lgicos so: no; e; ou; se ... ento, e se e somente
se, simbolizados respectivamente por: , , , , .
Lgica proposicional 3
Introduo ao estudo
Em lgica e matemtica, umalgica proposicional(ou clculo sentencial) umsis-
tema formalno qual as frmulas representamproposiesque podem ser formadas
pela combinao de proposies atmicas usandoconectivos lgicose um sistema
deregras de derivao, que permite que certas frmulas sejam estabelecidas como
teoremas do sistema formal. As proposies so sentena declarativa com valores
verdadeiro ou falso. Por exemplo: Maria gosta de Joo e de Pedro; Todos os seres
humanos tm uma me; Cinco maior que quatro.
As proposies transmitem pensamentos, isto , afirmam fatos ou exprimem juzos
que formamos a respeito de determinados entes. Exemplos:
O Japo est situado no continente africano.
A lmpada da sala est acesa.
A cidade de Recife a capital de Pernambuco.
4 TCNICAS DE PROGRAMAO
Seo 1 Proposio
Sentena declarativa afirmativa sobre a qual tenha sentido afirmar que seja
verdadeira ou falsa. Ou seja, conjunto de palavras ou smbolos que exprimem um
pensamento de sentido completo.
Exemplos:
A Lua um satlite da Terra. (V)
A copa do mundo em 2014 ser realizada na Alemanha. (F)
Recife a capital de Pernambuco. (V)
3/5 um nmero inteiro. (F)
3 2 = 9 (V)
Princpios ou axiomas: a lgica matemtica adota, como regras fundamentais do
pensamento, os dois seguintes princpios (GENEROSO, 2013):
Princpio da no negao: uma proposio no pode ser verdadeira ou falsa
ao mesmo tempo.
Princpio do terceiro excludo: toda proposio ou verdadeira ou falsa, isto
, verifica-se sempre um destes casos e nunca um terceiro.
Quando pensamos, efetuamos muitas vezes certas operaes sobre proposies,
chamadas de operaes lgicas. Estas obedecem a regras de um clculo, denominado
CLCULO PROPOSICIONAL. A linguagem de um clculo proposicional consiste em:
um conjunto de smbolos primitivos, definidos comofrmulas atmicas, pro-
posies atmicas, ou variveis; e
um conjunto de operadores, interpretados comooperadores lgicosouconec-
tivos lgicos.
Lgica proposicional 5
6 TCNICAS DE PROGRAMAO
p: Joo competente. p q
q: Maria bonita. V V
A tabela ao lado representa todas as possveis combina- V F
es entre os valores lgicos (verdadeiros ou falsos) das
proposies p e q. A partir dela, possvel utilizar F V
diversos operadores para unir as duas proposies. F F
Lgica proposicional 7
8 TCNICAS DE PROGRAMAO
Atividades de aprendizagem
1. Quais das sentenas abaixo so proposies?
a) A lua feita de queijo verde.
b) Dois um nmero primo.
c) O jogo vai acabar logo?
d) X 2 4 = 0.
2. Determinar o valor lgico de cada uma das seguintes proposies:
a) Tiradentes morreu afogado.
b) As diagonais de um paralelogramo so iguais.
c) O nmero 125 cubo perfeito.
d) O produto de dois nmeros mpares um nmero mpar.
3. Determinar o valor lgico ( V ou F ) de cada uma das seguintes proposies.
a) Goinia a capital de Tocantins.
b) O nmero 25 quadrado perfeito.
c) Todo nmero divisvel por 5 termina com 5.
4. Determine se as proposies so Simples (S) ou Compostas (C):
a) Maria estuda e trabalha.
b) Mrio feio.
c) 3 um nmero mpar.
d) Mrcia jogadora ou estudante.
e) Paulo rico e feliz.
f) 32 mltiplo de 4.
g) Paris a capital da Frana.
h) Pedro estudioso e Maria bonita.
i) Celso pobre ento infeliz.
j) Joo velho.
k) Ou Carla vai festa ou fica em casa.
l) 13 nmero e primo.
5. Marque as sentenas abaixo que so proposies, simples ou compostas.
Para as sentenas que no so proposies, explique porque no o so:
a) Joo alto.
b) Ela bonita.
c) A casa pequena.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:42 - August 22, 2014 - PG-17
Lgica proposicional 9
10 TCNICAS DE PROGRAMAO
Seo 2 Conectivos
Em Lgica Simblica, a ao de combinar proposies chamada operao,
e os conectivos so chamados operadores, e so representados por smbolos es-
pecficos; apresentamos a seguir as cinco operaes lgicas, com seus respectivos
conectivos e smbolos:
2.1 Negao
Chama-se de negao de uma proposio p a proposio representada por ~p
(no p) cujo valor lgico verdadeiro (V) quando p falsa e falso (F) quando p
verdadeiro. A negao tambm pode ser representada por : . Simbolicamente:
~ p = no p.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:42 - August 22, 2014 - PG-19
Lgica proposicional 11
p ~p
V F
F V
Fonte: Do autor (2014).
Para uma proposio p, podemos formar a sua negao de qualquer um dos se-
guintes modos (JNIOR, 2013):
no verdade que p
falso que p
no em p
Exemplo:
p: Ldia estudiosa.
~p: No verdade que Ldia estudiosa.
~p: falso que Ldia estudiosa.
~p: Ldia no estudiosa.
p: Hoje Quarta.
~p: Hoje no Quarta.
2.2 Conjuno
Chama-se conjuno de duas proposies p e q a proposio representada por p e
q cujo valor lgico verdadeiro quando ambas as proposies p e q so verdadeiras
e falsas nos demais casos. Simbolicamente: p q = p e q.
p Q pq
V V V
V F F
F V F
F F F
Fonte: Do autor (2014).
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:42 - August 22, 2014 - PG-20
12 TCNICAS DE PROGRAMAO
Exemplo 1:
p: Braslia a capital do Brasil.
q: Hoje sexta-feira.
p q: Braslia a capital do Brasil e hoje sexta-feira.
Exemplo 2:
p: Hoje sexta.
q: Est chovendo hoje.
p ^: Hoje sexta e est chovendo hoje.
2.3 Disjuno
Chama-se disjuno de duas proposies p e q a proposio representada por
p ou q cujo valor lgico verdadeiro quando ao menos uma das proposies p e
q verdadeira e falso quando ambas as preposies so falsas. Simbolicamente:
p q = p ou q.
p Q pq
V V V
V F V
F V V
F F F
Fonte: Do autor (2014).
Exemplo:
p: Ele cursar Clculo.
q: Ele cursar lgebra linear.
p q: Ele cursar Calculo ou lgebra linear.
Exemplo:
p: Braslia a capital do Brasil.
q: Hoje sexta feira.
p v q: Braslia a capital do Brasil ou hoje sexta-feira.
Lgica proposicional 13
p Q pvq
V V F
V F V
F V V
F F F
Fonte: Do autor (2014).
p Q pq
V V V
V F F
F V V
F F V
Fonte: Do autor (2014).
14 TCNICAS DE PROGRAMAO
p Q pq
V V V
V F F
F V F
F F V
Fonte: Do autor (2014).
2.7 Exemplos
O Quadro 1.11 representa vrias formas juntamente com a interpretao e seu
correspondente valor lgico.
L g i c a p r o p o s i c i o n a l 15
Atividades de aprendizagem
1. D a negao das seguintes proposies:
a) O processador rpido, mas a impressora lenta.
b) O processador rpido ou a impressora lenta.
c) Pepinos so verdes e no tm sementes.
d) A comida boa ou o servio excelente.
e) Nem a comida boa nem o servio excelente.
2. D o valor verdade das proposies abaixo:
a) Se a Lua um satlite ento a terra um planeta.
b) Um corpo celeste no um satlite se gira em torno de um planeta.
c) Se Lilo um gato, ento tem quatro patas. (considere que existe um
gato chamado Lilo).
d) Se a Terra uma estrela ento a Lua um planeta.
3. D o valor verdade das seguintes proposies:
a) Amarelo ser preto se, e somente se, vermelho for branco.
b) 3 + 4 = 7 se e somente se 8 x 5 = 50.
c) 1 + 1 = 4 se, e somente se, 7 + 3 = 10.
d) Azul no verde se, e somente se, preto for lils.
e) No verdade que 1 + 1 = 3 se, e somente se, 2 + 2 = 5.
4. Sejam as proposies:
p: Marcos alto e q: Marcos elegante.
Traduzir para a linguagem simblica as proposies abaixo:
a) Marcos alto e elegante.
b) Marcos alto, mas no elegante.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-24
16 TCNICAS DE PROGRAMAO
a) ~p d) q p g) ~p ^ ~q
b) p ^ q e) p ~q h) p ~q
c) p v q f) p v ~q i) p ^ ~q p
9. Sejam as proposies p e q, traduzir para a linguagem corrente as seguintes
proposies:
p: Eduardo rico e q: Murilo feliz.
a) q p c) q ~p e) ~p ^ q p
b) p v ~q d) ~p q
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-25
L g i c a p r o p o s i c i o n a l 17
18 TCNICAS DE PROGRAMAO
L g i c a p r o p o s i c i o n a l 19
Exemplo: 3 proposies
p q r
Exemplo: 2 proposies V V V
p q V V F
V V V F V
V F V F F
F V F V V
F F F V F
F F V
F F F
2 proposies 3 proposies
22 = 4 combinaes 23 = 8 combinaes
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-28
20 TCNICAS DE PROGRAMAO
Exemplo: 4 proposies
9 r s t
V V V V
V V V F
V V F V
V V F F
V F V V
V F V F
V F F V
V F F F
F V V V
F V V F
F V F V
F V F F
F F V V
F F V F
F F F V
F F F F
4 proposies
24 = 16 combinaes
Resoluo:
p q ~p p ~q ~(p ~q)
V V F F V
V F V V F
F V F F V
F F V F V
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-29
L g i c a p r o p o s i c i o n a l 21
Resoluo:
p q r pq pr ~r (pr) ~r ~ ((p r) ~r) (p q) ~ ((p r) ~r)
V V V V V F F V V
V V F V F V V F V
V F V F V F F V V
V F F F F V V F F
F V V V F F V F V
F V F V V V V F V
F F V V F F V F V
F F F V V V V F V
22 TCNICAS DE PROGRAMAO
Atividades de aprendizagem
1. Construa a tabela verdade para as proposies a seguir:
a) p ~q
p q ~q p ~q
b) ~p v q
p q ~p ~p v q
c) (p ^ q) ~(p v q)
d) (p ^ q) (p v r)
p q r p^q pvr (p ^ q) (p v r)
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-31
L g i c a p r o p o s i c i o n a l 23
24 TCNICAS DE PROGRAMAO
4.2 Tautologias
Chama-se tautologia toda proposio composta cuja ltima coluna da sua tabela
verdade seja totalmente verdadeira, ou seja, toda proposio composta que assume
somente o valor V para todas as combinaes possveis de suas proposies simples.
As tautologias so tambm denominadas proposies tautolgicas ou proposies
logicamente verdadeiras.
Exemplos:
a) p v ~p: Hoje vai chover ou hoje no vai chover. Neste caso, a proposio
apresentada tem que ser sempre verdadeira, j que uma ou outra das duas
coisas tem que acontecer ( o chamado princpio do terceiro excludo).
p ~p p v ~p
V F V
F V V
L g i c a p r o p o s i c i o n a l 25
c) pv (q ~ q) p
p q ~q q ~ q pv (q ~ q) p v (q ~ q) p
V V F F V V
V F V F V V
F V F F F V
F F V F F V
4.3 Contradio
chamada de contradio toda proposio composta cuja ltima coluna da sua
tabela verdade contenha somente a letra F (falsidade), ou seja, toda proposio
composta que assume somente o valor F para todas as combinaes possveis de suas
proposies simples.
As contradies so tambm denominadas proposies contravlidas ou propo-
sies logicamente falsas.
Exemplos:
a) p ^ ~p: hoje sbado e hoje no sbado
p ~p p ~p
V F F
F V F
b) p ~p
p ~p p ~p
V F F
F V F
c) ~ p (p ~ q)
p q ~q p ~ q ~p ~ p (p ~ q)
V V F F F F
V F V V F F
F V F F V F
F F V F V F
Portanto, dizer que uma proposio pode ser simultaneamente verdadeira e falsa
sempre falso.
4.4 Contingncia
Chama-se contingncia toda proposio composta em que em sua tabela ver-
dade, na ltima coluna, aparecem as letras V e F, pelo menos uma vez cada uma, ou
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-34
26 TCNICAS DE PROGRAMAO
seja, contingncia toda proposio composta que no pode ser classificada como
tautologia nem como contradio.
As contingncias so tambm denominadas proposies contingentes ou propo-
sies indeterminadas.
Exemplos:
a) p ~p
p ~p p ~p
V F F
F V V
b) p v q p
p q pvq pvqp
V V V V
V F V V
F V V F
F F F V
p q c ~q p ~ q p ~ q c pq (p ~ q c) (p q)
V V F F F V V V
V F F V V F F V
F V F F F V V V
F F F V F V V V
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-35
L g i c a p r o p o s i c i o n a l 27
a) ~~ p p
Resoluo: a tabela verdade para a proposio dada como:
p ~p ~p
V F V
F V F
idnticas
b) ~ p p p
Resoluo: a tabela verdade para a proposio dada como:
p ~p ~ p p
V F V
F V F
idnticas
c) p q ~ p v q
Resoluo: a tabela verdade para a proposio dada como:
p q ~p ~pvq pq
V V F V V
V F F F F
F V V V V
F F V V V
idnticas
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-36
28 TCNICAS DE PROGRAMAO
d) p q (p q) (q p)
Resoluo: a tabela verdade para a proposio dada como:
p q p q ~pvq (p q) (q p) pq
V V V V V V
V F F V F F
F V V F F F
F F V V V V
idnticas
L g i c a p r o p o s i c i o n a l 29
Atividades de aprendizagem
1. Exerccios Tautologia:
Preencha as tabelas a seguir:
a) P(p) = ~(p ~p)
Tabela verdade:
p ~q p ~p ~(p ~p)
V
F
b) P(p, q) = p ~(p q)
Tabela verdade:
p q pq ~(p q) p ~(p q)
V V
V F
F V
F F
2. Exerccios Contradio:
Preencha as tabelas a seguir:
a) P(p) = p ~p
Tabela verdade:
p ~p p ~p
V
F
b) P(p, q) = ~p (p ~q)
Tabela verdade:
p q ~p ~q p ~q ~p (p ~q)
V V
V F
F V
F F
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-38
30 TCNICAS DE PROGRAMAO
3. Exerccios Contingncia:
Preencha as tabelas abaixo:
a) P(p) = p ~p
Tabela verdade:
p ~p p ~p
V
F
b) P(p, q) = p q p
p q pq pqp
V V
V F
F V
F F
b) p q (p q) v (~ p ~ q) : ____________________________
p q p q pq ~p ~q ~ p ~ q (p q) v (~ p ~ q)
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-39
L g i c a p r o p o s i c i o n a l 31
Fique ligado!
A lgica matemtica (ou lgica simblica) trata do estudo das sentenas de-
clarativas, tambm conhecidas como proposies, que devem satisfazer aos
dois princpios fundamentais seguintes: Princpio do terceiro excludo, uma
proposio s pode ser verdadeira ou falsa, no havendo outra alternativa.
Princpio da no contradio, uma proposio no pode ser ao mesmo tempo
verdadeira e falsa.
Diz-se ento que uma proposio verdadeira possui valor lgico V (verdade)
e uma proposio falsa possui valor lgico F (falso). Os valores lgicos tambm
costumam ser representados por 0 (zero) para proposies falsas (0 ou F) e 1
(um) para proposies verdadeiras (1 ou V).
As proposies podem se classificadas como simples ou compostas. A pro-
posio simples aquela que no contm nenhuma outra proposio como
parte integrante de si mesma. A proposio composta formada pela combi-
nao de duas ou mais proposies simples atravs de um elemento de ligao
denominado conectivo.
Exemplos de proposies simples e proposies compostas:
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-40
32 TCNICAS DE PROGRAMAO
p q p^q
V V V
CONJUNO: p e q V F F
F V F
F F F
continua
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-41
L g i c a p r o p o s i c i o n a l 33
continuao
p q pvq
V V V
DISJUNO: p ou q V F V
F V V
F F F
p q pq
V V V
DISJUNO EXCLUSIVA:
V F F
ou p ou q, mas no ambos
F V V
F F V
p q pvq
V V F
CONDICIONAL: Se p, ento q V F V
F V V
F F F
p q pq
V V V
BICONDICIONAL: p se e
V F F
somente se q
F V F
F F V
p q
1 V V
2 V F
3 F V
4 F F
Neste caso, as combinaes entre os elementos so: VV, VF, FV e FF. As tabelas
verdade so construdas como arranjos dos elementos componentes, e como um
elemento pode receber somente os valores V ou F, o tamanho de uma tabela
dado pela quantidade de elementos combinados. No caso de uma proposio
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-42
34 TCNICAS DE PROGRAMAO
p q r
1 V V V
2 V V F
3 V F V
4 V F F
5 F V V
6 F V F
7 F F V
8 F F F
p ~p p ~p
V F V
F V V
p ~p (p ~p)
V F F
F V F
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-43
L g i c a p r o p o s i c i o n a l 35
p q ~q p ~q
V V F F
V F V V
F V F F
F F V F
NEGAO CONJUNO
p q pq
p ~p V V V
V F V F F
F V F V F
F F F
p q pq p q pq
V V V V V F
V F V V F V
F V V F V V
F F F F F F
continua
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-44
36 TCNICAS DE PROGRAMAO
continuao
CONDICIONAL BICONDICIONAL
p q pq p q pq
V V V V V V
V F F V F F
F V V F V F
F F V F F V
Bloco 1:
1. Extraia a concluso dos raciocnios a seguir:
a) Se Carlos estudar, ento no ir ao jogo. Se Carlos no for ao jogo, seu
time ficar desfalcado. Como o time de Carlos no ficou desfalcado,
conclui-se que...
b) Se Raquel viajar nas frias, ento sua conta no banco ficar descoberta.
Como Raquel viajou nas frias, conclui-se que...
c) Se os eclipses so previsveis, ento a rbita dos planetas exata. Se
a rbita dos planetas exata, ento o sistema solar funciona como um
relgio. Ora, os eclipses no so previsveis, portanto...
d) Se meu time for campeo, darei uma festa. Se der uma festa, gastarei
muito dinheiro agora. Se gastar muito dinheiro agora, terei dificuldades
para viajar. Meu time no foi campeo, logo...
2. Indicar a estrutura dos seguintes enunciados usando a linguagem lgica:
a) Meu gato amarelo ou meu gato preto, mas o gato de Maria branco.
b) Eu no irei festa, mas Pedro ir ou Antnio ir.
c) V com a famlia ou v s; e divirta-se.
d) Costumo ir ao cinema ou visitar os amigos, mas hoje no irei ao cinema.
e) No verdade que Pedro no tenha ido ver a famlia.
3. Verificar se os raciocnios so vlidos ou no vlidos.
Se Maria casar com Jos, Vilma ficar contente. Se Vilma ficar contente,
Marcos poder descansar. Como Marcos no pode descansar, Maria no
casou com Jos.
Se Paulo comear a trabalhar na feira, Vilma ficar em casa. Se Vilma
ficar em casa, Zezinho no ir escola. Ora, Zezinho continua indo
escola, portanto Paulo comeou a trabalhar na feira.
4. Traduzir para a linguagem corrente as seguintes proposies:
p: Pel atacante.
q: Dida goleiro.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:43 - August 22, 2014 - PG-45
Lgica proposicional 37
Bloco 2:
Analise as proposies abaixo:
As seguintes proposies so verdadeiras:
O time do Bahia perdeu o jogo no domingo.
O time do Remo ganhou o jogo no domingo.
Marcos gosta de cantar peras.
Jlia no come beterraba.
38 TCNICAS DE PROGRAMAO
b) P (p, q): ( p ~ q) v (~ p q)
p q ~p ~q ( p ~ q) (~ p q) ( p ~ q) v (~ p q)
V V
V F
F V
F F
c) P (p,q): p v ( p q) p
p q ( p q) p v ( p q) p v ( p q) p
V V
V F
F V
F F
Bloco 3:
b) P (p, q, r): (p v q r) q v ~ r
p q r ~r pvq pvqr qv~r (p v q r) q v ~ r
V V V
continua
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:44 - August 22, 2014 - PG-47
Lgica proposicional 39
continuao
V V F
V F V
V F F
F V V
F V F
F F V
F F F
Sejam as proposies:
p: Tuca assistiu ao filme.
q: Joca assistiu ao filme.
r: Kika assistiu ao filme.
40 TCNICAS DE PROGRAMAO
2. Dadas s proposies:
P Adriana bonita
Q Adriana inteligente
Escrever na linguagem simblica as seguintes proposies:
a) Adriana bonita e inteligente.
b) Adriana bonita, mas no inteligente.
c) No verdade que Adriana no bonita ou inteligente.
d) Adriana no bonita nem inteligente.
e) Adriana bonita ou no bonita e inteligente.
f) falso que Adriana no bonita ou que no inteligente.
3. Sejam as proposies p: est frio e q: est chovendo. Traduzir para a lin-
guagem corrente as seguintes proposies:
a) ~ p
b) p q
c) p v q
d) q p
e) ~ p ~ q
f) p ~ q
g) p ~q
h) p v ~ q
i) p ~ q p
4. Sejam as proposies p: Jorge rico e q: Carlos feliz. Traduzir para lin-
guagem corrente as seguintes proposies:
a) p v q
b) p q
c) p ~ q
d) ~ p ~q
5. Verificar se as proposies a seguir so tautologias:
a) p v ~(p ^ q)
b) p ^ q (p q)
c) p v (q ^ ~q) p
d) p ^ r ~q v r
6. Determine quais proposies so tautologias, contradies ou contingncias:
a) (p p) v (p ~p)
b) (p q) ^ p q
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:44 - August 22, 2014 - PG-49
L g i c a p r o p o s i c i o n a l 41
c) p (q (q p))
d) ~p v q (p q)
e) p (p q ^ ~q)
f) (p ^ q r) (p (q r))
7. Determinar o valor lgico de P em cada um dos casos abaixo, considerando
a informao fornecida.
a) Q falsa e P ^ Q falsa.
b) Q falsa e P v Q falsa.
c) Q falsa e P Q falsa.
d) Q falsa e P Q verdadeira.
e) Q falsa e P Q verdadeira.
f) Q verdadeira e P Q falsa.
8. Construir a tabela verdade para as seguintes proposies:
a) p q p q
b) ~p (q p)
c) (p ~q) q p
9. Determinar P(VV, VF, FV, FF) em cada um dos seguintes casos:
a) P(p,q) = ~(~p q)
b) P(p,q) = (p q) ~(p q)
c) P(p,q) = ~((p q) (~p ~q))
10. Determinar P(VFV) em cada um dos seguintes casos:
a) P(p,q,r) = p ~q ~q
b) P(p,q,r) = ~p (q ~r)
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:44 - August 22, 2014 - PG-50
42 TCNICAS DE PROGRAMAO
Referncias
ARAMAM, Eliana MariaOliveira. Matemtica discreta. Curso de Graduao Unopar
Virtual,2011.
JNIOR, Walteno Martins Parreira. Lgica matemtica e computacional. 2013. Disponvel
em: <http://www.waltenomartins.com.br/lmc_apo.pdf>. Acesso em: 25 mar. 2014.
PINHO, Antonio A. Introduo lgica matemtica. 1999. Disponvel em: <ftp://ftp.
cefetes.br/cursos/Matematica/Oscar/introducao_logica/Apostila%20de%20Logica.pdf>.
Acesso em: 29 mar. 2014.
REIS, Joaquim. Introduo lgica simblica. 2013. Disponvel em: <http://iscte.pt/~luis/
aulas/ia/IA-LogicaSimbolica.pdf>. Acesso em: 29 mar. 2014.
GENEROSO. Ruy Alexandre. Clculo proposicional. 2013. Disponvel em: <http://
ruyalexandre.zzl.org/arquivos/lmintrologica.pdf>. Acesso em: 29 mar. 2014.
Leitura complementar
DIDTICA dos Concursos. Raciocnio lgico. Disponvel em: <http://www.
guiadoconcursopublico.com.br/apostilas/24_81.pdf>. Acesso em: 29 mar. 2014.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:44 - August 22, 2014 - PG-51
Unidade 2
Introduo a
algoritmos
Veronice de Freitas
I n t r o d u o a a l g o r i t m o s 45
Introduo ao estudo
Um algoritmo formalmente uma sequncia finita de passos que levam execu-
o de uma tarefa. Essas tarefas no podem ser redundantes nem subjetivas na sua
definio, devem ser claras e precisas. So exemplos de algoritmos: instrues de
montagem, receitas, manuais de uso etc.
At mesmo as coisas mais simples podem ser descritas por sequncias lgicas.
Por exemplo:
Algoritmo 1 Chupar uma bala.
Pegar a bala.
Retirar o papel.
Chupar a bala.
Jogar o papel no lixo.
Algoritmo 2 "Troca de pneu do carro".
Desligar o carro.
Pegar as ferramentas (chave e macaco).
Pegar o estepe.
Suspender o carro com o macaco.
Desenroscar os 4 parafusos do pneu furado.
Colocar o estepe.
Enroscar os 4 parafusos.
Baixar o carro com o macaco.
Guardar as ferramentas.
46 TCNICAS DE PROGRAMAO
Onde temos:
ENTRADA: so os dados de entrada do algoritmo, os valores que ele vai usar
no processamento para chegar soluo do problema. So fornecidos pelo
usurio, fazendo uso de algum dispositivo de entrada de dados, tal como um
teclado, um mouse ou um leitor de cdigo de barras.
PROCESSAMENTO: so os procedimentos utilizados para chegar ao resultado
final, para alcanar a resoluo do problema. Esses procedimentos so execu-
tados no processador do computador e os valores parciais so armazenados
na memria (memria RAM).
SADA: So os dados j processados. o resultado do processamento. Estes
dados de sada so apresentados em algum dispositivo de sada. Por exemplo,
a tela de um monitor.
Para se criar um programa que seja executvel dentro de um computador, deve ter
em mente trs pontos de trabalho: a entrada de dados, o seu processamento e a sada
dos mesmos. Sendo assim, todo programa estar trabalhando com esses trs conceitos.
I n t r o d u o a a l g o r i t m o s 47
48 TCNICAS DE PROGRAMAO
I n t r o d u o a a l g o r i t m o s 49
50 TCNICAS DE PROGRAMAO
DESVANTAGENS:
Impreciso: pode ser interpretado de forma diferente exemplo: afrouxar a
porca na troca do pneu.
Smbolo Funo
I n t r o d u o a a l g o r i t m o s 51
continuao
PROCESSAMENTO
SADA
SETAS
FIM Final
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:44 - August 22, 2014 - PG-60
52 TCNICAS DE PROGRAMAO
Introduo a algoritmos 53
algoritmo "Calcula-mdia
var
N1, N2, N3, N4, MDIA, SOMA: real
incio
// ---------- ENTRADA DE DADOS---------
leia(N1,N2,N3,N4)
// ------------ PROCESSAMENTO-----------
SOMA <- N1 + N2 + N3 + N4
MDIA <- SOMA / 4
// --------------- SADA--------------
escreva("Mdia Final: ", MDIA)
fim Algoritmo
Algoritmo Maioridade
var
idade: inteiro
incio
// --------------- SADA--------------
se (idade > 0) ento
seno
Escreva ( Idade incorreta. )
Fimse
fimalgoritmo
VANTAGENS:
Independncia fsica da soluo (soluo lgica apenas).
Usa o portugus como base.
Pode-se definir quais e como os dados vo estar estruturados.
Passagem quase imediata do algoritmo para uma linguagem de programao.
DESVANTAGENS:
Exige a definio de uma linguagem no real para trabalho.
No padronizado.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:44 - August 22, 2014 - PG-62
54 TCNICAS DE PROGRAMAO
Rafael
Rafael a informao
NOME a varivel do tipo caractere
NOME
55
55 a idade
IDADE a varivel do tipo inteiro
IDADE
Memria
Introduo a algoritmos 55
Tipo Descrio
Representa valores inteiros.
INTEIRO
Exemplos: 15, 25, -15, -25
Representa valores reais (com a parte decimal).
REAL
Exemplos: 20.555, 40.4, -13.58
Representa uma sequncia de um ou mais caracteres.
CARACTERE Exemplos: Esse um exemplo de caractere, A, 2540, Unopar
OBS: sempre colocamos os caracteres entre (aspas duplas)
Representa valores lgicos, os quais possuem apenas 2 estados:
LGICO
VERDADEIRO (true) ou FALSO (false)
Fonte: Do autor (2014).
56 TCNICAS DE PROGRAMAO
Fimalgoritmo
Imprime a MDIA
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:44 - August 22, 2014 - PG-65
Introduo a algoritmos 57
Como exemplo, pode-se representar a memria como uma matriz, como a Figura
2.2, onde cada clula possui tamanho de 1 byte (8 bits):
Exemplo:
Var
NUMDEP: INTEIRO // ir utilizar dois bytes
SALRIO: REAL // ir utilizar quatro bytes
NUMDEP SALRIO
2 BYTES 4 BYTES
Exemplos: algoritmo em portugol para somar dois valores inteiros (20 + 10).
58 TCNICAS DE PROGRAMAO
0 1 2 3 4 6 6 7 8 ..
A B C
20 10 30
Endereos representados no
sistema decimal para facilitar
a anlise.
I n t r o d u o a a l g o r i t m o s 59
Atividades de aprendizagem
1. Escreva um algoritmo na forma narrativa para fazer uma salada de frutas.
2. A tabela abaixo contm algumas instrues que tm por objetivo calcular
o total de uma venda. Na coluna tipo, identifique os dados de entrada (E),
processamento (P) e sada (S). Na coluna sequncia lgica, estabelea a
sequncia numrica das instrues (ordem para serem executadas).
Algoritmo venda
Instruo (Identifique a ordem correta) Tipo Sequncia lgica
Calcular o valor total da pea (Quantidade * Valor da pea)
Mostrar o cdigo da pea e seu valor total
Receber valor da pea
Receber quantidade de peas
var
PRECO_UNIT, PRECO_TOT : real
QUANT : inteiro
Incio
escreva(Digite o preo unitrio: )
leia (PRECO_UNIT)
60 TCNICAS DE PROGRAMAO
() Verdadeiro () Maria
() c*d () -23
() Falso () 35.23
() 1 2 3 4 () -18.589
() aula () 345
() 897 () 0.342
I n t r o d u o a a l g o r i t m o s 61
62 TCNICAS DE PROGRAMAO
algoritmo exemploAtriuicao
var INICIO
QTDE <- 5
TOTAL <- PRECO_UNITRIO * QTDE
TOTAL QTDE * PRECO_UNITARIO
fimAlgoritmo
FIM
I n t r o d u o a a l g o r i t m o s 63
algoritmo exemploSaida
var INICIO
incio
FIM
algoritmo exemploEntradaSaida
var INICIO
fimAlgoritmo
FIM
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:44 - August 22, 2014 - PG-72
64 TCNICAS DE PROGRAMAO
Atividades de aprendizagem
1. Analise os algoritmos abaixo e diga o que ser impresso na tela ao serem
executados:
Algoritmo Simulao
algoritmo "teste01"
a) var
A , B: inteiro Memria Vdeo
incio
A <-10
B <- 20
escreva(B)
B <- 5
Escreva( A, B)
fimalgoritmo
b) algoritmo "teste02"
var
A , B,C: inteiro Memria Vdeo
Incio
A <- 30
B <- 20
C <- A + B
escreva(C)
B <- 10
escreva( B, C)
C <- A + B
escreva(A, B, C)
fimalgoritmo
c) algoritmo "teste03"
var
X: inteiro Memria Vdeo
Z, Y: real
incio
X <- 30
Y <- 40
Z <- Y X * 2
Escreva(Z)
X <- 10
Y <- X + Z /2
escreva(X, Y, Z)
fimalgoritmo
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:44 - August 22, 2014 - PG-73
I n t r o d u o a a l g o r i t m o s 65
var
PRECO_UNIT, PRECO_TOT : real
QUANT : inteiro
Incio
escreva(Digite o preo unitrio: )
leia (PRECO_UNIT)
66 TCNICAS DE PROGRAMAO
Introduo a algoritmos 67
68 TCNICAS DE PROGRAMAO
Operador Comparao
> Maior que
< Menor que
>= Maior ou igual
<= Menor ou igual
= Igual
<> Diferente
Operao Operador
Negao No
Conjuno E
Disjuno (no exclusiva) Ou
Disjuno (exclusiva) Xou
A B AeB A ou B No A A xou B
F F F F V F
F V F V V V
V F F V F V
V V V V F F
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:45 - August 22, 2014 - PG-77
I n t r o d u o a a l g o r i t m o s 69
Expresso Resultado
a) No A No V = F
b) A e B VeF=F
c) A ou B V ou F = V
d) No (B ou C) No (F ou F) = No F = V
Atividades de aprendizagem
1. Os pares de instrues abaixo produzem o mesmo resultado?
(4 / 2) + (2 / 4) e 4/2+2/4
4 / (2 + 2) / 4 e 4/2+2/4
(4+2)*2-4 e 4+2*2-4
70 TCNICAS DE PROGRAMAO
I n t r o d u o a a l g o r i t m o s 71
72 TCNICAS DE PROGRAMAO
Pseudocdigo Fluxograma
...
<comando 1> COMANDO 1
<comando 2>
<comando n>
... COMANDO 2
COMANDO N
Pseudocdigo Fluxograma
Obs: antes de desenvolver o pseudocdigo identifique: INICIO
Quais so as entradas? NUMERO1 e NUMERO2
Qual o processamento? Calcular a soma
Qual a sada? Apresentar a soma Entre com o 1
nmero:
algoritmo SomaNmeros
var
NUMERO1, NMERO2: inteiro NUMERO1
SOMA: inteiro;
Incio Entre com o 2
// --------- Entrada --------- nmero:
escreva(Entre com o 1 nmero: )
leia(NMERO1)
NUMERO2
escreva(Entre com o 2 nmero: )
leia(NMERO2)
SOMA <- NUMERO1 + NUMERO2
I n t r o d u o a a l g o r i t m o s 73
Pseudocdigo Fluxograma
Dados de entrada:
INICIO
Obter o valor da altura do retngulo.
Obter o valor da largura do retngulo.
Entre com a
Processamento: altura:
Calcular a rea.
Calcular o permetro.
ALTURA
Sada:
Mostrar os clculos realizados.
algoritmo reaPermeto Entre com a
Var largura
REA, PERMETRO, ALTURA, LARGURA: real
Incio
// --------- Entrada -------- LARGURA
escreva(Entre com a altura: )
Leia(ALTURA)
AREA <- ALTURA * LARGURA
PERIMETRO <- 2 * ALTURA + 2 * LARGURA
escreva(Entre com a largura: )
leia(LARGURA)
A rea : ,
// --------- Processamento -------- AREA
REA = ALTURA * LARGURA
PERMETRO <- 2 * ALTURA + 2 * LARGURA
O permetro : ,
// --------- Sada -------- PERIMETRO
escreva(A rea : , AREA)
escreva (O permetro : , PERMETRO)
FIM
fimalgoritmo
Pseudocdigo Fluxograma
Dados de entrada: Sada:
INICIO
Obter o valor do lado. Mostrar o valor da rea.
Processamento:
Informe a media
Calcular a rea. do lado:
algoritmo reaPermeto
Var
LADO, REA: real
Incio LADO
// --------- Entrada --------
escreva(Informe a medida do lado:)
lEIA(LADO) AREA LADO * LADO
74 TCNICAS DE PROGRAMAO
Algoritmo Simulao
algoritmo "exemplo01"
var
Memria Vdeo
A <- 20 Digite o
A, B, TROCA: inteiro
valor(numrico)
B <- 30
da varivel A:
incio
TROCA <- 20 20
//========ENTRADA ===========
escreva("Digite o valor(numrico) da A <- 30
Digite o valor
varivel A: ")
B <- TROCA (numrico) da
leia(A)
varivel A: 30
escreva("Digite o valor(numrico) da
O novo valor de
varivel B: ")
A : 30
leia(B)
O novo valor de
// =====PROCESSAMENTO ========
B : 20
TROCA <- A
A <- B
B <- TROCA
//==========SADA ============
escreva("O novo valor de A : ",A)
escreva("O novo valor de B : ",B)
fimalgoritmo
Exemplo 2: tem por funo efetuar a leitura de trs nmeros e calcular a mdia
aritmtica.
Pseudocdigo Simulao
algoritmo MdiaAritmetica
Var
N1, N2, N3: real
Memria Vdeo
MDIA: real Entre com os
Incio
// --------- Entrada -------- N1 <- 10 nmeros:
escreva(Entre com os nmeros: ) N2 <- 20 10
Leia(N1, N2, N3)
N3 <- 30 20
MDIA <- (10 + 20 30
// --------- Processamento --------
MDIA = (N1 + N2 + N3) / 3 + 30) / 3 A Mdia : 20
fimalgoritmo
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:45 - August 22, 2014 - PG-83
I n t r o d u o a a l g o r i t m o s 75
algoritmo "exemplo01"
var
custo, venda, percent: real
incio
// ===============ENTRADA ==============
escreva("Digite o custo do produto: ")
leia(custo)
// ===============PROCESSAMENTO ==============
percent <- (percent/100) * custo
venda <- custo + percent
// ===============SADA ==============
escreval("O valor de venda : ",venda)
fimalgoritmo
algoritmo "exemplo2"
var
custoFbrica, custoFinal: real
incio
// ===============ENTRADA ==============
escreva("Informe o custo de fbrica do veculo: ")
leia(custoFbrica)
// ===============PROCESSAMENTO ==============
custoFinal <- custoFbrica + (0.28 * custoFbrica) + (0.45 *
custoFbrica)
custoFinal <- custoFinal + (0.45 * custoFinal)
// ===============SADA ==============
escreva("O custo para o consumidor final de: ",custoFinal)
fimalgoritmo
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:45 - August 22, 2014 - PG-84
76 TCNICAS DE PROGRAMAO
Atividades de aprendizagem
1. Analise os blocos de cdigo dos algoritmos abaixo e represente o que ser
impresso ao serem executados:
a)
escreva( B)
B <- 40
!
escreva (A, B)
b)
A <- 20
B <- 45 Memria Vdeo
C <- A + B
escreva ( C )
B <- 30
escreva ( B, C)
C <- A + B
escreva ( A, B, C)
!
c)
A <- 15
B <- A + 1 Memria Vdeo
A <- B + 2
B <- A + 1
escreva ( A )
A <- B + 1
B <- B - 2
escreva ( A ) !
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:45 - August 22, 2014 - PG-85
I n t r o d u o a a l g o r i t m o s 77
d)
A <- 40
B <- 30 Memria Vdeo
C <- A + B
escreva (C)
B <- 10
escreva (B, C)
C <- A + B
B <- A - C
A <- (5 + B) * 2
!
escreva (A, B, C)
78 TCNICAS DE PROGRAMAO
Fique ligado!
Para representar um algoritmo, so utilizadas diversas tcnicas e cabe ao progra-
mador adotar aquela que melhor se adapte a suas necessidades (UNISAL, 2014).
As formas mais conhecidas de algoritmos so: a) narrativa: nessa representao
os algoritmos so expressos diretamente em linguagem natural (em portugus);
b) fluxograma: o algoritmo representado em formas geomtricas diferentes
que representam aes (instrues, comandos); c) pseudocdigo: a forma de
representao de algoritmos, tambm conhecida como portugus estruturado
ou portugol, bastante rica em detalhes e assemelha-se bastante forma em
que os programas so escritos.
Operadores so sinais utilizados nos algoritmos para indicar a realizao
de operaes que podem ser de trs categorias:
Operadores aritmticos: Servem para realizar operaes com nmeros
inteiros ou reais (exemplo: 5 + 2, 3 - 1, 3 / 2, 4 * 5).
Operadores relacionais: so operadores binrios que devolvem os valores
lgicos (verdadeiro / falso). Estes valores so somente usados quando se
deseja efetuar comparaes. Comparaes s podem ser feitas entre obje-
tos de mesma natureza, isto , variareis do mesmo tipo de dado (exemplo:
tendo duas variveis numricas (N1, N2), respectivamente, os valores 10
e 12, e possvel comparar se o valor de N1 MAIOR que o valor de N2.
Operadores lgicos ou booleanos: so usados para combinar expresses
relacionais e resultam nos valores lgicos: verdadeiro ou falso. Exemplo:
tendo uma varivel MDIA contendo o valor 8 e uma varivel FALTAS
contendo o valor 12, possvel criar uma expresso para comparar se a
MDIA maior ou igual a 7 e se as FALTAS menores que 12, para que o
aluno seja APROVADO.
I n t r o d u o a a l g o r i t m o s 79
Esta uma operao dita destrutiva, pois qualquer valor que a varivel
possua antes do processamento da operao de atribuio se perde, sendo
substitudo pelo novo valor.
Exemplo:
Algoritmo atribuio
var
IDADE: inteiro
NOME: caractere
SALRIO: real
incio
NOME Marcela Reis
IDADE 25
SALRIO 2500,30
fimalgoritmo
Algoritmo entrada_saida
var
NOME: caractere
SALRIO: real
Incio
// ----- SOLICITANDO OS DADOS DE ENTRADA -----
escreva(Entre com seu nome:)
leia(NOME)
80 TCNICAS DE PROGRAMAO
Linguagem de programao C#
C# (Sharp) uma linguagem de programao orientada a objetos desen-
volvida pela Microsoft como parte da plataforma .Net (l-se DOTNET). A sua
sintaxe orientada a objetos foi baseada no C++ mas inclui muitas influncias
de outras linguagens de programao, Delphi e Java.
Visual Studio
O Visual Studio um ambiente de desenvolvimento integrado (IDE) da
Microsoft, ou seja, um programa para desenvolvimento de software. Pode
ser utilizado para desenvolver aplicaes executadas em prompt de comando
(console) e aplicaes com interface grfica para o sistema operacional Win-
dows e para ambiente web. O Visual Studio suporta diferentes linguagens de
programao como as linguagens C, C++,Visual Basic, C#, F#, alm de outras,
e possui inmeros recursos que facilitam o desenvolvimento de aplicaes.
Criar e executar um aplicativo de console:
Passos:
1. Inicie o Visual Studio;
2. No menu File, aponte para New e clique em Project;
3. Na Categorias de modelos de painel, expanda Visual C# e, em seguida,
clique em Windows;
4. No modelo de painel, clique em Aplicativo de Console;
5. Digite um nome para seu projeto no nome campo;
6. Clique em OK. O Novo projeto aparece no Solution Explorer.
7. Se Program.cs no estiver aberto no Editor de cdigo, abra-o clicando
com o boto direito em cima do arquivo na Solution Explorer, em se-
guida, clique em Exibir cdigo.
8. Substitua o contedo do Program.cs com o cdigo a seguir.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:45 - August 22, 2014 - PG-89
I n t r o d u o a a l g o r i t m o s 81
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace exemploHello{
class Hello {
static void Main(string[] args){
Console.WriteLine("Hello World!");
Console.WriteLine("Pressione qualquer tecla para sair.");
Console.ReadKey();
}
}
}
Entrada e sada
Programas C# geralmente usam os ser-
vios de entrada/sada fornecidos pela bi-
blioteca de tempo de execuo do .NET Para saber mais
Framework. A instruo Console.WriteLine
(Hello World!); usa o mtodo WriteLine. C# e .Net guia do desenvolvedores,
Este um dos mtodos de sada da classe de Edwin Lima e Eugnio Reis. Rio de
Console na biblioteca de tempo de execu- Janeiro: Campus, 2002.
o. Ele exibe sua string de parmetro no
fluxo de sada padro seguido por uma nova
linha. Outros mtodos Console esto dis-
ponveis para operaes de sada e entrada
diferente. Se incluir a diretiva using System, Para saber mais
no incio do programa, possvel usar dire- Para obter mais informaes sobre os
tamente as classes e mtodos de System sem mtodos de entrada/sada, consulte
qualific-los totalmente. Por exemplo, voc System.IO <http://msdn.microsoft.
pode chamar Console.WriteLine em vez de com/pt-br/library/system.io.aspx>.
System.Console.WriteLine: Acesso em: 07 junho 2014.
82 TCNICAS DE PROGRAMAO
continuao
Exemplo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace exemploNmero{
class Program{
static void Main(string[] args){
int Nmero = 2;
int OutroNmero = 2;
int MaisUmNmero = Nmero + OutroNmero;
Console.WriteLine(MaisUmNmero);
}
}
}
I n t r o d u o a a l g o r i t m o s 83
Operadores aritmticos
O C# suporta os smbolos aritmticos para as operaes aritmticas bsicas
como adio (+) e subtrao (-), ele utiliza o asterisco (*) para multiplicao e
barra para frente (/) para diviso.
Os operadores aritmticos descritos na tabela:
Exemplos:
int a = 20, b = 10, c = 40, d = 10;
Console.WriteLine(a + b); // resultado = 30
Console.WriteLine(a - d); // resultado = 10
Console.WriteLine(b * d); // resultado = 100
Console.WriteLine(d / b); // resultado = 1
Console.WriteLine(a % b); // resultado = 0
Operadores relacionais
Os operadores relacionais comparam dois valores e retornam um valor booleano
(true ou false).
Os operadores relacionais descritos na tabela:
Exemplos:
84 TCNICAS DE PROGRAMAO
int x = 30;
x += 10; // a mesma coisa que x = x + 10
Console.WriteLine("Valor do x = " + x); // resultado = 40
x -= 20 // a mesma coisa que x = x 20
Console.WriteLine("Valor do x = " + x); // resultado = 20
Operadores lgicos
Exemplos:
I n t r o d u o a a l g o r i t m o s 85
86 TCNICAS DE PROGRAMAO
I n t r o d u o a a l g o r i t m o s 87
Referncias
MSDN. Hello World: seu primeiro programa (guia de programao em C#). Disponvel em:
<http://msdn.microsoft.com/pt-br/library/k1sx6ed2.aspx>. Acesso em: 31 mar. 2014.
UNISAL. Centro Universitrio Salesiano de So Paulo. Algoritmos e fluxogramas: lgica
de programao. Disponvel em: <http://galehp.com.br/doc/tecnologia/linguagem_de_
programacao_I/Logica%20_Total.pdf>. Acesso em: 31 mar. 2014.
Leitura complementar
GUIMARES, ngelo de Moura; LAGES, Newton Alberto de Castilho. Algoritmos e
estruturas de dados. Rio de Janeiro: LTC, 1994.
MANZANO, Jos Augusto N. G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos e lgica para
desenvolvimento de programao de computadores. 21. ed. So Paulo: rica, 2008.
SALIBA, Walter Luiz Caram. Tcnicas de programao: uma abordagem estruturada. So
Paulo: Pearson Makron Books, 1992.
JABOUR. Filippe. Algoritmos computacionais com aplicaes em C. Disponvel em:
<http://www.jabour.com.br/algoritmosJabour.pdf>. Acesso em: 31 mar. 2014.
MOREIRA. Jander. Construo de algoritmos. Disponvel em: <http://livresaber.sead.
ufscar.br:8080/jspui/bitstream/123456789/1008/1/Constru%C3%A7%C3%A3o%20de%20
algoritmos_apostila.pdf>. Acesso em: 31 mar. 2014.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:45 - August 22, 2014 - PG-96
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:45 - August 22, 2014 - PG-97
Unidade 3
Estrutura de controle
Veronice de Freitas
Estrutura de controle 91
Introduo ao estudo
As estruturas de seleo, tambm chamadas de estruturas de deciso, executam
testes por meio dos operados relacionais e lgicos, a fim de decidir qual ao (ou
conjunto de aes) deve ser tomada. Essas estruturas so obtidas por meio dos cha-
mados comandos de desvio condicional para tomar decises.
At o momento, os algoritmos apresentados utilizavam apenas instrues pri-
mitivas de atribuio, de entrada e sada de dados. Quaisquer conjuntos de dados
fornecidos a este tipo de algoritmo so executados sempre na mesma sequncia.
No entanto, na prtica, muitas vezes necessrio executar aes diversas em
funo dos dados fornecidos ao algoritmo. Alm disso, pode ser necessrio executar
um mesmo conjunto de instrues um nmero repetido de vezes. Em resumo, neces-
srio controlar o fluxo de execuo das instrues (a sequncia em que as instrues
so executadas em um algoritmo) em funo dos dados fornecidos como entrada.
A classificao das estruturas de deciso realizada de acordo com o nmero de
condies que devem ser testadas para que se decida qual o caminho a ser seguido,
podendo ser de quatro tipos:
a) Estrutura de deciso simples (se ... ento).
b) Estrutura de deciso composta (se ... ento ... seno).
c) Estrutura de deciso encadeada (se... ento ... seno) com outros testes con-
dicionais encadeados.
d) Estrutura de deciso mltipla do tipo escolha (escolha ... caso ... seno).
92 TCNICAS DE PROGRAMAO
Pseudocdigo Fluxograma
se <condio> ento
<bloco de comandos> comando
fimse
F V
condio
Bloco verdade
Comando
X <- 20
Y <- 10
Se (X > Y) ento
escreva(O valor de X maior que o valor de Y)
fimse
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:46 - August 22, 2014 - PG-101
E s t r u t u r a d e c o n t r o l e 93
Algoritmo exemplo02
Var
idade: inteiro
incio
//-------------- ENTRADA ---------------
escreva (digite a sua idade)
leia(idade)
fimalgoritmo
Atividades de aprendizagem
Indique a sada dos trechos a seguir:
Pseudocdigo Simulao
escreva (X)
b) X <- 10
Y <- 15 Memria Vdeo
se ((X <= 10) e (Y > 13)) ento
X <- 3
fimse
escreva (X)
c) X <- 10
Y <- 15 Memria Vdeo
se ((X < 10) e (Y > 13)) ento
X <- 3
fimse
escreva (X)
94 TCNICAS DE PROGRAMAO
Sintaxe:
Pseudocdigo Fluxograma
se <condio> ento
<bloco de comandos verdade> comando
seno
<bloco de comandos falsidade>
fimse F V
condio
Comando
algoritmo exemplo01
var
idade: inteiro
incio
//-------------- ENTRADA ---------------
escreva (digite a sua idade)
leia(idade)
fimalgoritmo
E s t r u t u r a d e c o n t r o l e 95
Algoritmo exemplo02
var
n1, n2, n3, n4, media : real
incio
//-------------- ENTRADA ---------------
escreva(Digite o valor da primeira nota de 1 a 10: )
leia( n1 )
fimalgoritmo
Atividades de aprendizagem
1. Indique a sada dos trechos abaixo, considerando
A <- 2 B <- 3 C <- 5 D <- 9
Pseudocdigo Simulao
a) se (no (D > 5)) ento
X <- (A + B) * D Memria Vdeo
seno
X <- (A B) / C
fimse
escreva (X)
b) se ((A > 2) e (B < 7)) ento
X <- (A + 2) * (B 2) Memria Vdeo
seno
X <- (A + B) / D * (C + D)
fimse
escreva(X)
c) se ((A = 2) ou (B < 7)) ento
X <- (A + 2) * (B 2) Memria Vdeo
seno
X <- (A + B) / D * (C + D)
fimse
escreva(X)
d) se ((A> 2)ou no (B < 7))ento
continua
X <- A + B 2) Memria Vdeo
seno
X <- A B
Fimse
escreva(X)
e) se (nao (A > 2) ou no (B <7)) ento
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:46 - August 22, 2014 - PG-104
escreva(X)
c) se ((A = 2) ou (B < 7)) ento
X <- (A + 2) * (B 2) Memria Vdeo
96 T C N seno
ICAS DE PROGRAMAO
X <- (A + B) / D * (C + D)
fimse
continuao
escreva(X)
d) se ((A> 2)ou no (B < 7))ento
X <- A + B 2) Memria Vdeo
seno
X <- A B
Fimse
escreva(X)
e) se (nao (A > 2) ou no (B <7)) ento
X <- A + B Memria Vdeo
seno
X <- A / B
Fimse
escreva (X)
escreva (X)
escreva (X)
escreva (X)
incio
A <- 1
B <- 2
se A > B ento
A <- 5
seno
A <-10
fimse
fimalgoritmo
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:46 - August 22, 2014 - PG-105
Estrutura de controle 97
algoritmo calcularMdia
var N1, N2, Mdia : real Memria Vdeo
incio
// ----ENTRADA ----
escreva(Nota 1:)
leia(N1)
escreva(Nota 2:)
leia(N2)
// ----PROCESSAMENTO ----
Mdia <- (N1 + N2)/2
// ----SADA ----
se mdia>=6 ento
escreva(aprovado)
seno
escreva(reprovado)
fimse
fimalgoritmo
98 TCNICAS DE PROGRAMAO
Pseudocdigo
se (<condio_1>) ento
se (<condio_2>) ento
primeiro bloco de instruo
seno
segundo bloco de instruo
fimse
senao
se (<condio_3>) ento
se (<condio_4>) ento
terceiro bloco de instruo
fimse
instruo n
seno
se (<condio_5>) ento
quarto bloco de instruo
seno
quinto bloco de instruo
fimse
fimse
fimse
algoritmo "Exemplo01"
var
nmero: inteiro
incio
Leia (nmero)
Se numero = 0 ento
escreva (" zero")
seno
Se nmero > 0 ento
escreva (" positivo")
seno
escreva (" negativo")
fimse
fimse
fimalgoritmo
E s t r u t u r a d e c o n t r o l e 99
algoritmo SaldoMdio
Var
Salmdio, Vlrcred: real
Nome : caracter
incio
escreva(Entre com nome do cliente:)
leia(Nome)
escreva(Entre com saldo mdio:)
leia (Salmdio)
Atividades de aprendizagem
1. Quais os valores das variveis A, B, C ao executar o algoritmo a seguir:
Pseudocdigo Simulao
algoritmo TesteCondicional a) A = 5, B=10, C=10
Var b) A = 5, B=20, C=10
A,B,C : inteiro c) A = 20, B=5, C=10
incio
d) A = 10, B=5, C=20
A <- 5
B <- 20
C <- 10 Memria Vdeo
Se (A < B) e (B < C) ento
C <- A
Seno
se (B <> C) ento
B <- C
Seno
A <- B
Fimse
Fimse
Fimalgoritmo
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:46 - August 22, 2014 - PG-108
Memria Vdeo
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:46 - August 22, 2014 - PG-109
E s t r u t u r a d e c o n t r o l e 101
Memria Vdeo
Memria Vdeo
Memria Vdeo
Pseudocdigo Fluxograma
incio escolha
inicio escolha
escolha <opo>
Verdadeira
caso <opo 1> opcao 1 Comandos 1
<comandos1> Falsa
<comandos2>
Falsa
caso <opo n>
Verdadeira
opcao n Comandos 2
<comandosn>
Falsa
outrocaso
Comandos
<comandos_padro> Padro
fimescolha
inicio
Observaes:
Apenas um Caso ser executado. Ao executar o bloco de comandos associado
ao Caso selecionado, o algoritmo sair da estrutura de Escolha.
O comando Outrocaso opcional. Se for colocado dentro da estrutura de
escolha, ser executado se a condio no atender a nenhum dos testes do
Caso.
algoritmo ExemploMenu
var
opo:inteiro
incio
escreva(1- Cadastrar)
escreva(2- Alterar)
escreva(3- Excluir)
escreva(4- Imprimir)
escreva(5 6 7 Em implantao aguarde !!)
escreva(Escolha a opo: )
Leia(opo)
Escolha opo
caso 1
escreva(Voc escolheu a primeira opo!)
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:46 - August 22, 2014 - PG-111
escreva(1- Cadastrar)
escreva(2- Alterar)
escreva(3- Excluir)
escreva(4- Imprimir) Estrutura d e c o n t r o l e 103
escreva(5 6 7 Em implantao aguarde !!)
escreva(Escolha a opo: )
Leia(opo)
Escolha opo
caso 1
escreva(Voc escolheu a primeira opo!)
caso 2
escreva(Voc escolheu a segunda opo!)
Caso 3
escreva(Voc escolheu a terceira opo!)
caso 4
escreva(Voc escolheu a quarta opo!)
caso 5,6,7
escreva(Voc escolheu uma opo que no estava disponvel)
outrocaso
escreva(Opo invlida)
fimescolha
fimalgoritmo
Exemplo 2: Este algoritmo funciona como uma calculadora simples, em que algu-
mas operaes aritmticas podem ser executadas sobre dois nmeros, dependendo
da operao selecionada pelo usurio (adio, subtrao, multiplicao, ou diviso).
Caso o usurio tenha digitado um caractere diferente dos tratados pelo algoritmo, o
valor falso ser colocado na varivel verifica (pois nenhum caso vai corresponder a
expresso e a instruo dentro do seno ser executada).
Algoritmo Calculadora
var
num1, num2, result : real
operao : caractere
verifica: lgico
incio
escreva(Digite o primeiro nmero real: )
leia(num1)
escolha operao
caso '+'
resultado <- num1 + num2
caso '-'
resultado <- num1 num2
caso '*'
resultado <- num1 * num2
caso '/'
resultado <- num1 / num2
outrocaso
verifica <- .FALSO.
fimescolha
se verifica ento
escreva (O resultado da operao foi + resultado)
senao
escreva (Operao invalida!)
fimse
fimalgoritmo
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:46 - August 22, 2014 - PG-112
Atividades de aprendizagem
1. Escreva um algoritmo que receba o cdigo correspondente ao cargo de
um funcionrio de uma escola e seu salrio atual e mostre o valor do novo
salrio, com aumento, conforme tabela a seguir.
Cdigo do Cargo Cargo Aumento
1 Secretrio 45%
2 Professor 35%
3 Tesoureiro 25%
4 Coordenador 15%
5 Diretor No tem aumento
E s t r u t u r a d e c o n t r o l e 105
Caractersticas:
Testa a condio antes da execuo do bloco.
Enquanto a condio for verdadeira, o bloco de comandos executado.
Assim, o bloco de comandos pode ser executado 0 ou mais vezes.
Finaliza a execuo do bloco quando a condio se tornar falsa.
Obs: um contador uma varivel (qualquer) que recebe ela mesma mais um va-
lor (uma constante), no caso do exemplo a seguir, a varivel X est recebendo o
valor dela mesma mais 1. Normalmente a constante que ser somada no contador
o valor 1, para contar de 1 em 1, mas pode ser qualquer valor, como, por exemplo,
2, se quisermos contar de 2 em 2.
Exemplo 2: contador para contador de 2 em 2.
Y <- 0 // Y recebe 0
Y <- Y + 2 // Y recebe 0 + 2
Exemplo algoritmo:
...
cont <- 0 // inicializa o contador
enquanto (CONT <= 10) faca // incio da estrutura de repetio
...
cont <- cont + 1 // contador
...
Fimenquanto // final da estrutura de repetio
Exemplo:
Obs: um acumulador (somador) uma varivel (qualquer) que recebe ela mesma
mais uma outra varivel, no caso do exemplo anterior, a varivel SOMA est rece-
bendo o valor dela mesma mais o valor da varivel NUM. A varivel NUM representa
o valor a ser somado, acumulado na varivel SOMA.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:46 - August 22, 2014 - PG-115
E s t r u t u r a d e c o n t r o l e 107
Exemplo algoritmo:
// -- terceira repetio --
3 <= 5 (VERDADEIRO)
SOMA 15 + 20 (35)
CONT 3 + 1 (4)
// -- quarta repetio --
4 <= 5 (VERDADEIRO)
SOMA 35 + 30 (65)
CONT 4 + 1 (5)
// -- quinta repetio --
5 <= 5 (VERDADEIRO)
SOMA 65 + 10 (75)
CONT 5 + 1 (6)
Observao: a varivel de controle nessa verso por meio da varivel RESP, que
contm um valor inicial S para tornar a condio do ENQUANTO verdadeira
para entrar no lao) dentro da estrutura de repetio solicitado para o usurio
se deseja ler mais um peso (caso seja N ir sair da estrutura de repetio) e
imprimir a mdia dos pesos do total de repetio armazenada na varivel CONT).
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:46 - August 22, 2014 - PG-117
E s t r u t u r a d e c o n t r o l e 109
Algoritmo Exemplo2
var
PESO, SOMA : real
CONT : inteiro
RESP : caracter
incio
SOMA <- 0
CONT <- 0
RESP <- S
algoritmo "exemplo_temperatura"
var
CONT, TOTAL_N, TOTAL_P: inteiro
TEMPERATURA, SOMA_P: real
incio
CONT <- 0 // contador
TOTAL_N <- 0 // total de temperaturas negativas
TOTAL_P <- 0 // total de temperaturas positivas
SOMA_P <- 0 // acumula a soma das temperaturas positivas
Enquanto CONT < 10 faca
algoritmo ExemploMdia
var
nome: caractere
nota_1, nota_2, mdia, SomaG, MdiaG: real
contador: inteiro
incio
mdiaG <- 0 // inicializa a varivel MdiaG
contador <- 1 // inicializa o contador
escreva(Segunda nota: )
leia(nota_2)
escreva(Segunda nota: )
E s t r u t u r a d e c o n t r o l e 111
leia(nota_2)
fimse
fimenquanto
Atividades de aprendizagem
1. Qual a funo do algoritmo abaixo?
Pseudocdigo Simulao
Algoritmo exerccio02
Var Memria Vdeo
NUM, SOMA, I : inteiro
incio
SOMA <- 0
I <- 1
enquanto i <= 10 faca
leia(num)
escreva (SOMA)
fimalgoritmo
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:46 - August 22, 2014 - PG-120
escreva (fat)
fimalgoritmo
E s t r u t u r a d e c o n t r o l e 113
REPITA
ao 1 Bloco de comandos
ao 2
...
ao n F
Condio
AT condio
V
Caractersticas:
Testa a condio aps a execuo do bloco.
A sequncia ao 1; ao 2;...; ao n, ser realizada uma vez, sendo em
seguida verificada a condio associada clusula AT. Se a condio for
falsa, o processo se repete, reiniciando pela ao 1. Se a condio for
verdadeira, a repetio cancelada;
Repete as instrues enquanto a condio for falsa.
Para a execuo do bloco quando a condio se tornar verdadeira
(denominada de condio de parada). o bloco de comandos executado
pelo menos uma vez.
E s t r u t u r a d e c o n t r o l e 115
algoritmo "maiorValor"
var
maior: inteiro
N: inteiro
RESP: caracter
incio
MAIOR <- 0 // valor inicial da varivel MAIOR
repita
//validao para entrar com n maior ou igual a zero
repita
escreva("Entre com um nmero: ")
leia(N)
ate N >= 0
ate N >= 0
Atividades de aprendizagem
1. Analise e teste o cdigo de programa abaixo e identifique o problema desse
cdigo (faa a correo do algoritmo).
algoritmo "exerccio_01"
var
contador: inteiro
incio
repita
escreva("Contador: ", contador)
ate contador > 10
fimalgoritmo
somador <- 0
repita
escreva("Digite um nmero qualquer ou zero para sair: ")
leia(opo)
somador <- somador + opo
escreva("Somador: ", somador)
ate opo = 0
fimalgoritmo
escolha opo
caso "+"
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:47 - August 22, 2014 - PG-125
repita
escreva("Digite o primeiro valor: ")
leia(X)
E s t r u t u r a d e c o n t r o l e 117
escreva("Digite o segundo valor: ")
leia(Y)
escolha opo
caso "+"
R <- X + Y
escreva(X, " +", Y, " =", R)
caso "-"
R <- X - Y
escreva(X, " -", Y, " =", R)
caso "*"
R <- X * Y
escreva(X, " *", Y, " =", R)
caso "/"
R <- X / Y
escreva(X, " /", Y, " =", R)
fimescolha
ate (opo = "s") ou (opo = "S")
fimalgoritmo
escreva(Digite um valor)
leia (x)
Se (x > 0) ento
Escreva (X > 0)
Seno
Se (x < 0) Ento
Escreva (X < 0)
ate (x = 0)
escreva (X = 0)
fimalgoritmo
E s t r u t u r a d e c o n t r o l e 119
Pseudocdigo Simulao
Algoritmo Conta_Adultos
Var
IDADE, QTDE, X : Inteiro Memria Vdeo
QTDE <- 0 Idade? 25
incio X <- 1 Idade? 15
25 >= 18 (verdadeiro)
QTDE <- 0 QTDE <- 0 + 1(0) Idade? 40
X <- 2 Idade? 30
Para X de 1 Ate 5 Faca
15 >= 18 (falso)
Idade? 14
Escreva(Idade ?)
X <- 3
Leia (IDADE)
40 >= 18 (verdadeiro)
QTDE <- 1 + 1(2) Total de
se IDADE >=18 Ento adultos: 3
QTDE QTDE + 1 X <- 4
Fimse 30 >= 18 (verdadeiro)
QTDE <- 2 + 1(3)
Fimpara
X <- 5
Escreva (Total de Adultos 14 >= 18 (falso)
: ,QTDE)
X <- 6 (sai do lao)
Fimalgoritmo
Pseudocdigo
Algoritmo tabuada
Var
I, NUM : Inteiro
incio
escreva(Entre com o nmero da tabuada? )
leia(NUM)
fimalgoritmo
Simulao (TESTE DE MESA)
Memria Vdeo
NUM <- 5 Entre com o nmero da
tabuada? 5
I <- 1 Valor de 5 x 1 = 5
I <- 2 NUM 5 x 2 = 10 NUM * I
I <- 3 5 x 3 = 15
I <- 4 5 x 4 = 20
I <- 5 5 x 5 = 25
I <- 6 5 x 6 = 30
I <- 7 5 x 7 = 35
VALORES
I <- 8 5 x 8 = 40
DE I
I <- 9 5 x 9 = 45
I <- 10 5 x 10 = 50
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:47 - August 22, 2014 - PG-128
Pseudocdigo
Algoritmo fatorial
Var
I, FAT, NUM : Inteiro
incio
escreva(Entre com o nmero para calcular o fatorial? )
leia(NUM)
FAT <- 1
para I de 1 ate NUM passo 1 faca
FAT <- FAT * NUM
Fimpara
Memria Vdeo
NUM <- 6 Entre com o nmero para calcular o
fatorial? 6
FAT <- 1
I <- 1
FAT <- 1 * 1 (1)
I <- 2
FAT <- 1 * 2 (2)
I <- 3
FAT <- 2 * 3 (6)
I <- 4
FAT <- 6 * 4 (24)
I <- 5
FAT <- 24 * 5 (120)
I <- 6
FAT <- 120 * 6 (720)
O fatorial de 6 720
E s t r u t u r a d e c o n t r o l e 121
algoritmo "Temperatura_v2"
var
CONT, CONT_P, CONT_N: inteiro
TEMPERATURA, SOMA_P, SOMA_G: real
Incio
// ------ inicializa as variveis ------------
CONT_N <- 0 // contar as temperaturas negativas
CONT_P <- 0 // contar as temperaturas positivas
SOMA_P <- 0 // somar as temperaturas positivas para
// calcular a mdia das temperaturas positivas
Atividades de aprendizagem
1. Qual a funo do algoritmo baixo?
Pseudocdigo Simulao
algoritmo exerccio01
Var
SOMA, IMPAR: inteiro Memria Vdeo
incio
para IMPAR de 1 ate 18 passo 2 faca
SOMA <- SOMA + IMPAR
Fimpara
//Calculando a rea
rea <- Base * altura
Algoritmo exerccio_03
var
L: Inteiro
NOME: caracter
incio
escreva(entre com um nome :)
leia(NOME)
FimAlgoritmo
E s t r u t u r a d e c o n t r o l e 123
Fique ligado!
Estruturas utilizadas para reger o fluxo de execuo de um algoritmo: Estrutura
Sequencial; Estrutura de Seleo; Estrutura de Repetio. A Tabela 3.1 representa
os trs tipos de estrutura.
Tabela 3.1 Tipos de estrutura
ESTRUTURA EXEMPLO
Estrutura sequencial: Algoritmo mdia_aluno
Cada comando executado varnota1,nota2,nota3,media: real
sequencialmente at trmino do incio
algoritmo. leia (nota1,nota2,nota3)
mdia (nota1+nota2+nota3)/3
fimalgoritmo
Estrutura Condicional: algoritmo mdia_aluno
var
Permite a seleo de um grupo nota1,nota2,nota3,mdia: real
de aes (bloco) a ser executado incio
quando determinadas condies leia (nota1,nota2,nota3)
forem satisfeitas. mdia (nota1+nota2+nota3)/3
se mdia >= 7 ento
escreva (Aprovado)
seno
escreva (Reprovado)
fimse
fimalgoritmo
Estrutura de Repetio: Algoritmo mdia_turma
var
Execuo de uma sequencia de nota1,nota2,nota3,mdia,mdia_t: real
aes repetidas vezes. cont: inteiro
incio
mdia 0
mdia_t 0
mdia (nota1+nota2+nota3)/3
se mdia >= 7 ento
escreva (Aprovado)
seno
escreva (Reprovado)
fimse
fimpara
Fimalgoritmo
para o aluno que no esteja no intervalo permitido (de 0 at 10). Nesse caso,
seria necessrio validar o valor informado para a nota usando outra estrutura
de repetio interna.
Existem situaes em que os caminhos para a tomada de uma deciso aca-
bam formando uma espcie de rvore com diversas ramificaes, em que cada
caminho um conjunto de aes. Nesses casos, podemos recorrer utilizao
de vrias estruturas se-ento-seno embutidas umas dentro das outras, comu-
mente chamadas de ninhos. Como exemplificado na Tabela 3.2, tem que ficar
atento para o fechamento adequado dessas estruturas.
Tabela 3.2: encadeando diversas estruturas
E s t r u t u r a d e c o n t r o l e 125
Estrutura de seleo em C#
Estruturas condicionais so comuns e necessrias em todos os programas.
Em C# tambm possvel utilizar estrutura condicional simples (if), composta
(if/else), estrutura condicional encadeada e tambm uso da estrutura de mltipla
escolha (switch). Essa seo aborda a sintaxe da declarao if...else e tambm
explora outras construes condicionais presentes no C#.
Estrutura condicional if/else
A estrutura utilizada no C# semelhante com a estrutura representada nos
algoritmos condicionais.
Sintaxe:
VisuAlg C#
se (<condio>) ento if(<condio>){
... ...
seno //Opcional }
... else //Opcional
fimse {
...
}
namespace Exemplo_if_01{
class Program{
static void Main(string[] args){
int A = 5;
int B = 2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Exemplo_if_02{
class Program{
if (A > B)
{
Console.WriteLine("O valor de A Maior.");
}
else
{
Console.WriteLine("O valor de B Maior.");
}
}
}
}
Obs.: Se dentro de um if/else tiver somente uma linha, o uso das { } opcional.
if-Inline
No C# tambm existe o if-Inline que composto por trs operandos se-
parados pelos sinais ? e : e tem o objetivo de atribuir o valor a uma varivel de
acordo com o resultado de um teste lgico.
Sintaxe:
teste lgico ? valor se verdadeiro : valor se falso;
Onde:
Teste lgico qualquer valor ou expresso, que pode ser verdadeiro ou falso.
Valor se verdadeiro atribudo ao valor true;
Valor se falso atribudo ao valor false.
Exemplo 1a: exemplo usando a condicional composta.
static void Main(string[] args){
var idade = 26;
Switch/case
A instruo switch permite a execuo condicional de instrues de acordo
com os valores de um argumento teste, o qual pode ser uma varivel, uma ex-
presso numrica, uma string ou funes.
Sintaxe:
switch(VARIAVEL){
case VALOR:
//Faz algo se VARIAVEL for igual ao VALOR
break;
default: //(OPCIONAL)
//Faz algo se VARIAVEl no for igual a nenhum CASE
break;
}
VisuALG C#
var int x = 10;
x: inteiro switch(x) {
incio case 1:
x <- 10 Console.Write(Um);
escolha (x) break;
caso 1: case 2:
escreva(Um) Console.Write(Dois);
caso 2: break;
escreva(Dois) default:
outrocaso: Console.Write(Desconhecido);
escreva(Desconhecido) break;
fimescolha }
fimalgoritmo
Exemplo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Exemplo_switch{
class Program{
int Numero = 2;
switch(Numero){
case 1:
Console.WriteLine("Numero igual a 1");
break;
case 2:
Console.WriteLine("Numero igual a 2");
break;
case 3:
Console.WriteLine("Numero igual a 3");
break;
default:
Console.Write(Opo invlida);
break;
}
}
}
}
Estrutura de repetio C#
As estruturas de repetio so muito teis e empregadas quando se deseja
executar uma, ou um bloco, de instrues diversas vezes.
Estruturas de repetio do C#:
a) while
b) do... while
c) for
d) foreach
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:47 - August 22, 2014 - PG-137
E s t r u t u r a d e c o n t r o l e 129
Exemplo:
class Program{
static void Main(string[] args){
int contador = 0;
while (contador < 5){
Console.WriteLine("Anderson Macedo");
contador++;
}
Console.ReadKey();
}
}
No exemplo acima, tem uma varivel chamada contador com seu valor ini-
cial 0. Na CONDIO do bloco while testado se a varivel contador menor
que 5, caso verdadeiro, apresentado na tela o nome Eduardo dos Santos
e incrementado em 1 na varivel contador. Esse processo se repete at que a
CONDIO do while seja falsa.
Estrutura de repetio: do while
O comando do/while tem o mesmo funcionamento que o comando while,
tendo como diferena que a condio da estrutura testada no final e no no
incio como acontece no while.
No while, existe a possibilidade do cdigo no ser executado nenhuma vez,
pois est vinculado ao resultado da condio que testada no incio do bloco.
No do/while, o cdigo escrito dentro da estrutura ser executado pelo menos
uma vez, isso porque a verificao realizada apenas no final da estrutura.
Sintaxe:
do
{
// Cdigo
}
while (CONDIO);
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:47 - August 22, 2014 - PG-138
Exemplo:
Cdigo Teste de Mesa
using System;
class ExemploWhile{ Memria Vdeo
public static void Main(){ cont=0 Numero: 1
int cont = 0; cont 0 < 5 (v) Numero: 2
while (cont <= 5){ cont <- 0 + 1 Numero: 3
console.write(Numero: , numero); (1) Numero: 4
cont++; Numero: 5
} cont 1 <= 5 (v)
Console.WriteLine(); cont <- 1 + 1
} (2)
}
cont 2 <= 5 (v)
cont <- 2 + 1
(3)
Onde:
int i = 0: (inicializao) declarada uma varivel do tipo inteiro (int), onde
tambm definido o seu valor inicial, que nesse exemplo foi o valor 0 (zero).
i <= 5: (condio) definido a condio.
i++: (incremento) um incremento nada mais do que adicionar 1 a uma
varivel, ou seja, se uma varivel vale 0 (zero) e passa por um incremento, vale
1 e, se passa mais uma vez, vale 2, e assim por diante.
Exemplo 1: incremento de 1.
for (i = 1; i <= 10; i++){
Console.WriteLine("{0}", i);
}
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:47 - August 22, 2014 - PG-139
Exemplo 2: decremento de 2
Estrutura: foreach
A estrutura foreach utilizada para percorrer colees ou arrays. Sua estru-
tura formada pelo tipo de dado, o nome da varivel e a lista a ser percorrida.
O exemplo a seguir faz uso de array, que ser o assunto da prxima unidade.
Sintaxe:
foreach(<tipo de dado> <nome> in <lista>)
{
//Cdigo
}
Exemplo:
class Program{
static void Main(string[] args){
// array de strings = declarao e inicializao do array
string[] nomes = { "Maria", "Ana", "Rita", "Pedro","Carlos"};
Visualg C#
Repita do
// bloco de comandos // bloco de comandos
Ate condio (verdadeira) while condio (verdadeira)
Repete o bloco de comandos at que a Repete o bloco de comandos enquanto
condio seja verdadeira. a condio for verdadeira.
E s t r u t u r a d e c o n t r o l e 135
Referncia
CACHO, Nlio Alessandro Azevedo; COELHO, Keivilany Janielle de Lima. Lgica de
programao e algoritmos. Disponvel em: <http://www.metropoledigital.ufrn.br/aulas/
disciplinas/logica/aula_10.html>. Acesso em: 15 jul. 2013.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:48 - August 22, 2014 - PG-144
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:48 - August 22, 2014 - PG-145
Unidade 4
Estrutura de
dados homognea
e heterognea
Veronice de Freitas
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 139
Introduo ao estudo
As estruturas de dados homogneas permitem agrupar diversas informaes dentro
de uma mesma varivel. Este agrupamento ocorre obedecendo sempre ao mesmo tipo
de dado, e por esta razo que estas estruturas so chamadas homogneas.
A utilizao deste tipo de estrutura de dados recebe diversos nomes, como: vari-
veis indexadas, variveis compostas, arranjos, vetores, matrizes, tabelas em memria
ou arrays. Os nomes mais usados e que utilizaremos para estruturas homogneas
so: matrizes (genrico) e vetores (matriz de uma linha e vrias colunas). Quando
possuem um nico ndice, chamada de vetor, tendo dois ou mais, chama-se matriz.
A estrutura contm:
REG_FUNCIONARIO = registro
NOME :caractere
DATA_NASC :dt
DEPARTAMENTO :caractere
SALRIO:real
Fim
Registros e vetores podem ser compostos a fim de resolver problemas mais com-
plexos. Considerando que um vetor um conjunto de elementos do mesmo tipo,
natural que, quando precisarmos agrupar vrios registros (por exemplo, vrias Fichas
Cadastro), utilizaremos vetores (conjuntos) de registros.
Var
// CADASTRO SER UM VETOR REGISTRO REG_FUNCIONRIO
CADASTRO : conjunto [1..20] de REGFUNCIONRIO
DATA_NASC
NOME DIA MS ANO DEPARTAMENTO SALRIO
1
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 141
para X de 1 at 20 faa
leia(CADASTRO[X].NOME)
leia(CADASTRO[X].DATA_NASC.DIA)
leia(CADASTRO[X].DATA_NASC.MS)
leia(CADASTRO[X].DATA_NASC.ANO)
leia(CADASTRO[X].DEPARTAMENTO)
leia(CADASTRO[X].SALRIO)
fim para
para X de 1 at 20 faa
escreva(CADASTRO[X].NOME)
escreva (CADASTRO[X].DATA_NASC.DIA)
escreva (CADASTRO[X].DATA_NASC.MS)
escreva (CADASTRO[X].DATA_NASC.ANO)
escreva (CADASTRO[X].DEPARTAMENTO)
escreva (CADASTRO[X].SALRIO)
fim para
Exemplo:
Do mesmo modo que acontece com variveis simples, tambm possvel operar
com variveis indexadas (matrizes). O acesso individual a cada componente de um
vetor realizado pela especificao de sua posio na mesma por meio do seu ndice.
Na declarao VET: vetor [1.10] de inteiros, foi definido uma varivel VET capaz de
armazenar 10 nmeros inteiros. Para acessar um elemento deste vetor deve-se fornecer
o nome do mesmo e o ndice do componente desejado do vetor (um nmero de 1 a
10). O exemplo a seguir apresenta o vetor VET com a representao dos 10 valores.
VET 10 9 80 75 80 89 41 35 87 55
INDICE 1 2 3 4 5 6 7 8 9 10
Por exemplo, vet [1] indica o primeiro elemento do vetor, vet [2] indica o segundo
elemento do vetor e vet [10] indica o dcimo elemento do vetor.
VET[1] <- 10
VET[2] <- 80
VET[5] <- 20
VET[8]<- 30
VET[10]<- 40
VET 10 80 80 75 20 89 41 30 87 40
INDICE 1 2 3 4 5 6 7 8 9 10
Para acessar cada valor correspondente ao vetor VET, no exemplo acima, deve-se
utilizar um ndice, cujo valor varia de 1 at o tamanho do vetor.
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 143
algoritmo "exemplo_leitura1"
var
nmeros : vetor [1..5] de inteiro
i : inteiro
incio
para i <- 1 ate 5 faca
escreval ("Insira o ", i, " elemento do vetor: ")
leia (nmeros[i])
fimpara
fimalgoritmo
Simulao:
MEMRIA TELA
I=1 Insira o 1 elemento do vetor: 35
nmeros 35
1 2 3 4 5
I=2 Insira o 2 elemento do vetor: 40
nmeros 35 40
1 2 3 4 5
I=3 Insira o 3 elemento do vetor: 25
nmeros 35 40 25
1 2 3 4 5
I=4 Insira o 4 elemento do vetor: 8
nmeros 35 40 25 8
1 2 3 4 5
I=5 Insira o 5 elemento do vetor: 35
nmeros 35 40 25 8 35
1 2 3 4 5
algoritmo "exemplo_leitura_de_vetor"
var
nmeros : vetor [1..10] de inteiro
i : inteiro
incio
// -------------- LEITURA ------------------
para i <- 1 ate 10 faca
escreva("Insira o ", i, "elemento do vetor: ")
leia (nmeros[i])
fimpara
fimalgoritmo
Algoritmo Vetor
Var
V : vetor [1..7] de inteiro
CONT : inteiro
incio
Para CONT de 1 ate 7 passo 1 faca
Escreva(Elemento, Cont, :)
Leia(V[CONT])
Fimpara
fimalgoritmo
Simulao:
MEMRIA VDEO
CONT = 1 Elemento 1: 24
V 24
1 2 3 4 5 6 7
CONT = 2 Elemento 2: 16
V 24 16
1 2 3 4 5 6 7
CONT = 3 Elemento 3: 5
V 24 16 5
1 2 3 4 5 6 7
CONT = 4 Elemento 4: 42
V 24 16 5 42
1 2 3 4 5 6 7
CONT = 5 Elemento 5: 18
V 24 16 5 42 18
1 2 3 4 5 6 7
CONT = 6 Elemento 6: 1
V 24 16 5 42 18 1
1 2 3 4 5 6 7
CONT = 7 Elemento 7: 3
V 24 16 5 42 18 1 3
1 2 3 4 5 6 7
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:48 - August 22, 2014 - PG-153
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 145
algoritmo "exemplo_leitura2"
var
nmeros : vetor [1..5] de inteiro
soma, i : inteiro
incio
soma <- 0
para i <- 1 ate 5 passo 1 faca
escreva ("Insira o ", i, "elemento do vetor: ")
leia (nmeros[i])
soma <- soma + nmeros[i]
fimpara
Simulao:
MEMRIA VDEO
soma = 0
A soma dos
elementos : 138
Algoritmo MdiaTurma
var
mdias: vetor[1..10] de real
i: inteiro;
soma, mdia_turma: real
Inicio
soma <- 0
mdia_turma <- 0
// --------- Entrada de dados no vetor -----
para i de 1 ate 5 passo 1 faca
Simulao:
Memria Vdeo
Soma=0
mdia_turma = 0
I = 1 mdias 9.5 Informe a
Soma=0 + 9.5(9.5) 1 2 3 4 5 mdia do
mdia_turma = 0 aluno 1: 9.5
I = 2 mdias 9.5 8.3 Informe a
Soma=9.5 + 8.3(17.8) 1 2 3 4 5 mdia do
mdia_turma = 0 aluno 2: 8.3
I = 3 mdias 9.5 8.3 9.9 Informe a
Soma=17.8 + 9.9(27.7) 1 2 3 4 5 mdia do
mdia_turma = 0 aluno 3: 9.9
I = 4 mdias 9.5 8.3 9.9 6.0 Informe a
Soma=27.7 + 6.0(33.7) 1 2 3 4 5 mdia do
mdia_turma = 0 aluno 4: 6.0
I = 5 mdias 9.5 8.3 9.9 6.0 7.1 Informe a
Soma=33.7 + 7.1(40.8) 1 2 3 4 5 mdia do
mdia_turma = 0 aluno 4: 7.1
I = 5 (sai do lao) A mdia da
Soma= 40.8 turma : 8.16
mdia_turma=40.8/5
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:48 - August 22, 2014 - PG-155
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 147
Atividades de aprendizagem
1. Qual o resultado da MEMRIA e do VDEO ao executar o algoritmo abaixo?
Informe os valores: 10,5, 8, 20, 35 para efetuar a simulao (complete o teste).
Pseudocdigo Teste de mesa
algoritmo "EXEMPLO01"
var Obs: complete o teste informando os
NMEROS: vetor [1..5] de inteiro demais valores.
I : inteiro
Incio Memria Vdeo
para I de 1 ate 5 faca I 1
leia(NMEROS[i]) ? 10
NMEROS[1] 10
fimpara
fimalgoritmo
fimalgoritmo
escreva(media) LACUNA
cont <- 0
Para i de 1 ate 5 passo 1 faca
se (n[i] > mdia) ento
cont <- cont + 1
fimse
fimpara
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 149
6. Altere o programa a seguir para que o mesmo faa a soma dos 10 nmeros
lidos e ao final apresente a soma obtida.
Algoritmo "VetoresSoma"
Var
nmeros: vetor[1..10] de inteiro
I: inteiro
Incio
// ------ LEITURA 10 NMEROS -------------
para I de 1 ate 10 passo 1 faca
escreva("Valor: ")
leia(nmeros[I])
fimpara
fimalgoritmo
Matriz Mat
1 2 3 4
1 18 15 24 9
2 7 4 3 10 ndice das
3 12 37 1 6 colunas
ndice das
linhas 4 5 13 21 42
Pseudocdigo Simulao
Algoritmo teste
Var Memria Vdeo
L,C: inteiro L C
Incio 1 1 1 - 1
// --------- IMPRESSO ----------- 1 2 1 - 2
para L de 1 ate 4 passo 1 faca 1 3 1 - 3
para C de 1 ate 4 passo 1 faca 1 4 1 - 4
escreval(L , " - " , C) 5(SAI)
fimpara 2 1 2 - 1
fimpara 2 2 2 - 2
Fimalgoritmo
2 3 2 - 3
2 4 2 - 4
Valores impressos no vdeo podem representar os ndices
5(SAI)
da matriz 4 x 4 exemplificada abaixo:
Onde:
li e lf representam respectivamente o ndice inicial e final das linhas;
ci e cf representam respectivamente o ndice inicial e final das colunas.
Exemplos:
Algoritmo exemplo_atribuioo
var
mat : vetor [1..2,1..3] de real
mdia, soma : real
incio Representao da matriz
incio
mat[1,1] <- 9.0 Colunas
mat[1,2] <- 8.0
mat[1,3] <- 7.0
1 2 3
mat[2,1] <- 6.5 1 9.0 8.0 7.0
Linhas
mat[2,2] <- 9.0 2 6.5 9.0 8.5
mat[2,3] <- 8.5
fimalgoritmo
Sintaxe:
Algoritmo leitura_matriz
var
mat : vetor[1..2, 1..3] de inteiro
i, j : inteiro
incio
// ------ leitura da matriz de 2 linhas por 3 colunas -----
para i de 1 ate 2 faca // estrutura para indexar as linhas
para J de 1 ate 3 faca // estrutura para indexar as colunas
fimpara
fimpara
fimalgoritmo
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:48 - August 22, 2014 - PG-161
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 153
Memria Vdeo
i J mat
1 2 mat[1,1] <- 9.0 Digite o valor do
elemento 1 1 : 9
1 2 mat[1,2] <- 8.0 Digite o valor do
elemento 1 2 : 8
1 3 mat[1,3] <- 7.0 Digite o valor do
elemento 1 3 : 7
4(sai - lao)
2 1 mat[2,1] <- 6.5 Digite o valor do
elemento 2 1 : 6.5
2 2 mat[2,2] <- 9.0 Digite o valor do
elemento 2 2 : 9
2 3 mat[2,3] <- 8.5 Digite o valor do
elemento 2 3 : 8.5
4(sai - lao)
3(sai -
lao)
Algoritmo leitura_escrita_matriz
var
mat : vetor[1..2, 1..3] de inteiro
i, j : inteiro
incio
// ------ leitura da matriz de 2 linhas por 3 colunas -----
para i de 1 ate 2 faca // estrutura para indexar as linhas
para J de 1 ate 3 faca // estrutura para indexar as colunas
escreva(Digite o valor do elemento , i , -, :)
leia(mat[i,j] // leitura do elemento i,j
fimpara
fimpara
// ------ impresso da matriz de 2 linhas por 3 colunas -----
para i de 1 ate 2 faca // estrutura para indexar as linhas
para J de 1 ate 3 faca // estrutura para indexar as colunas
escreva(Valor: ,mat[i,j]) // impresso
fimpara
fimpara
fimalgoritmo
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:48 - August 22, 2014 - PG-162
Algoritmo exemplo
var
MatA: vetor[1..2,1..2] de inteiro
MatB: vetor[1..3,1..2] de inteiro
I,J: inteiro
Incio
// ------- leitura da matriz MatA --------
Escreva(preenchendo a matriz a)
Para I de 1 ate 2 faca
Para J de 1 ate 2 faca
Leia(MatA[I, J])
Fimpara
Fimpara
// ----impresso da matriz MatA ----
Escreva(Imprimindo a matriz a)
Para I de 1 ate 2 faca
Para J de 1 ate 2 faca
escreva(MatA[I, J])
Fimpara
Fimpara
// ------- leitura da matriz MatB --------
Escreva(preenchendo a matriz B)
Para I de 1 ate 3 faca
Para J de 1 ate 2 faca
Leia(MatA[I, J])
Fimpara
Fimpara
// ----impresso da matriz MatB ----
Escreva(Imprimindo a matriz B)
Para I de 1 ate 3 faca
Para J de 1 ate 2 faca
escreva(MatA[I, J])
Fimpara
Fimpara
Fimalgoritmo
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 155
Algoritmo "matriz"
var Memria Vdeo
MAT: vetor [1..3, 1..3] de inteiro Leitura da matriz ?3
I, J: integer I 1 ?8
incio J 1 ?5
// --LEITURA ---- MAT [1,1] 3 ?9
para I de 1 ate 3 faca I 1 ?2
para J de 1 ate 3 faca J 2 ?3
leia(MAT[I, J]) MAT[1,2] 8 ?5
I 1 ?3
fimpara
J 3 ?4
fimpara MAT[1,3] 5 //
J 4 (sai do lao impresso
// --IMPRESSO ---- interno) dos
para I de 1 ate 3 faca valores
para J de 1 ate 3 faca // repete o processo impares
//compara se o resto da diviso para linha 2 3
//de cada valor da matriz por 2 I 2 5
//igual a 1 (se for o nmero J 1 8
//impar) MAT[2,1] 9 3
... 5
se MAT[I,J] MOD 2 = 1 ento
3
escreva(MAT[I, J]) // repete o processo
fimse para linha 3
I 3
fimpara J 1
fimpara MAT[3,1] 5
fimalgoritmo ...
1 2 3 Resultado
1 3 8 5 3 2 4
2 9 2 3
3 5 3 4
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:48 - August 22, 2014 - PG-164
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 157
fimalgoritmo J 5
S 17 + 7 (24)
J 6 (sai do lao de J)
para somar a segunda
linha.
Exemplo 4: no exemplo a seguir utilizado uma matriz de trs linhas e duas colu-
nas para armazenar os nomes e endereos de trs pessoas (os nomes so armazenados
na primeira coluna da matriz e os endereos na segunda coluna).
Algoritmo exemplo02
Var
Dados: vetor[1..3, 1..2] de caractere
I : inteiro
Incio
// ---- leitura da matriz dados ----
Para I de 1 ate 3 passo 1 faca
fimpara
Escreva(Dados da , I, pessoa)
Escreva(Nome: , Dados[I,1])
Escreva(Endereo: , Dados[I,2])
Fimpara
fimalgoritmo
Atividades de aprendizagem
1. Considere a matriz M a seguir:
Colunas
1 2 3 4 6
1 2 8 3 7 4
Linhas 2 5 2 1 9 16
3 2 12 7 8 10
4 4 5 3 8 5
5 14 11 5 3 6
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 159
L,C: inteiro
L,C: inteiro
Incio
Incio
// ---------
// --------- LEITURA
LEITURA -----------
-----------
para LL de
para de 11 ate
ate 33 passo
passo 11 faca
faca
para CC de
para de 11 ate
ate 33 passo
passo 11 faca
faca
escreval(digite uma
escreval(digite uma valor)
valor)
leia(MAT[L,C])
leia(MAT[L,C])
fimpara
fimpara
fimpara
fimpara
// ---------
// --------- IMPRESSAO
IMPRESSAO -----------
-----------
para LL de
para de 11 ate
ate 33 passo
passo 11 faca
faca
para CC de
para de 11 ate
ate 33 passo
passo 11 faca
faca
se LL == CC entao
se entao
escreval(MAT[L,C])
escreval(MAT[L,C])
fimse
fimse
fimpara
fimpara
fimpara
fimpara
fimalgoritmo
fimalgoritmo
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:48 - August 22, 2014 - PG-168
using System;
class Teste
{
public static void Main()
{
string[] vetNome = New string[5];
//atribuio
vetNome[0] = Maria;
vetNome[1] = Pedro;
vetNome[2] = Marcio;
vetNome[3] = Carlos;
vetNome[4] = Roberto;
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 161
Arrays podem ter mais de uma dimenso. Por exemplo, a declarao a seguir cria
uma matriz bidimensional de cinco linhas e cinco colunas:
using System;
class Teste{
public static void Main(){
Alm dos arrays multidimensionais possvel criar arrays de arrays. Trata-se de arrays
com mltiplas dimenses de tamanho varivel.
Exemplo:
de alunos dos quais necessita armazenar o cdigo. possvel usar uma matriz on-
de as linhas representariam a turma e as colunas representariam os alunos, porm,
nesse caso estaria utilizando um nmero fixo de alunos, igual para todas as turmas, o
que no atende a nossa necessidade. Aqui entram os jagged arrays, podemos ter um
array que comporte a quantidade de turmas (um nmero conhecido) e cada elemento
um vetor, cujo comprimento varia e podemos definir individualmente. Por exemplo:
class TestArraysClass
{
static void Main()
{
// Declarar uma matriz unidimensional
int[] array1 = new int[5];
// sintaxe alternative
int[] array3 = { 1, 2, 3, 4, 5, 6 };
Quando se faz uso de array, necessrio saber seu tamanho, copiar parte dos
elementos, classificar seus valores. Diante dessa necessidade, as linguagens de
programao dispem de instrues para auxiliar na programao. Seguem alguns
mtodos oferecidos pela classe System.Array (MEDEIROS, 2013):
GetLength: retorna o nmero de elementos da dimenso especfica do array.
Length: Retorna o total de elementos do array.
Sort: Ordena os elementos de um array.
CopyTo: Copia os elementos de um array para outro.
Clone: Cria um novo array que uma copia superficial do array de origem.
Rank: Retorna o nmero de dimenses do array.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:49 - August 22, 2014 - PG-171
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 163
Outros exemplos:
Exemplo 1: o programa efetua a leitura de 10 salrios, calcula a mdia e imprime
os salrios que esto abaixo da mdia.
int[] salrios = new int[10];
decimal soma = 0, media = 0;
Salrios[i] = int.Parse(Console.ReadLine());
soma += salrios[i];
}
Exemplo 4: foreach().
static void Main(string[] args){
string[] nome;
int[] idade = new int[10];
char[] sexo = new char[10];
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 165
Essa seo teve como objetivo fazer uma abordagem geral sobre arrays usando
C#, finalizando com alguns exemplos prticos de utilizao.
Atividades de aprendizagem
1. Dados os seguintes campos de um registro: nome, telefone, dia e ms de
aniversrio, desenvolver um algoritmo que mostre em um dado ms do
ano, quem so as pessoas que fazem aniversrio, exibir tambm o dia.
Considere um conjunto de 40 pessoas.
2. Uma pessoa cadastrou um conjunto de 15 registros contendo o nome da
loja, telefone e preo de um eletrodomstico. Desenvolver um algoritmo
que permita exibir qual foi a mdia dos preos cadastrados e uma relao
contendo o nome e o telefone das lojas cujo preo estava abaixo da mdia.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:49 - August 22, 2014 - PG-174
struct{
int cdigo;
string nome;
string endereo;
string telefone;
float salrio;
int idade;
}vendedor;
Informaes do registro
vendedor Nome do registro
Campos do registro
os campos do registro, linha aps linha. Cada linha deve conter o tipo e o identifica-
dor do campo do registro. Finalizando, ento, as declaraes dos campos do registro
com o smbolo } e, logo depois, informado o nome do identificador. A varivel
do tipo registro com identificador vendedor declarada acima contm seis campos.
possvel declarar outras variveis do tipo registro com os mesmos campos da
varivel vendedor da seguinte forma:
struct{
int cdigo; Outras variveis do
string nome; tipo registro
string endereo;
string telefone;
float salrio;
int idade;
}vendedor, professor, medico;
vendedor. cdigo = 1;
vendedor.nome=Jos,
vendedor. endereo=Rua Par, 33, Exemplo de atribuio no
vendedor.telefone=(43)33253345, registro - vendedor
vendedor. salrio=2500;
vendedor.idade=35;
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 169
struct { struct {
int cdigo; int cdigo; Os dois registros
string nome; string nome;
char tipo; string endereo; possuem campos cdigo
int qtdmin; int nundependentes; e nome
float preco; float salrio;
}produto; }funcionrio;
produto.cdigo=55;
funcionrio.cdigo = 323; Exemplo de atribuio de informao nos
produto.nome = Arroz; campos do registro coleta e registro
funcionrio.nome = Carlos; certido
Vetores de registros
Podemos declarar variveis compostas homogneas a partir de qualquer tipo b-
sico ou ainda de um tipo definido pelo(a) programador(a). Ou seja, podemos decla-
rar, por exemplo, um vetor do tipo inteiro, uma matriz do tipo ponto flutuante, uma
varivel composta homognea de k dimenses do tipo caracter e etc. Por exemplo,
podemos declarar um vetor com identificador produto como mostrado a seguir:
struct {
int cdigo;
string nome; Vetor produto (10 compartimentos de
char tipo; memria com a estrutura do registro)
int qtdmin;
float preo;
}produto[10];
Exemplo 1: algoritmo.
tipo
RegConta=retistro
NumCliente :inteiro;
NomeCliente :caracter[35];
TipoCliente :caracter[1];
SaldoCliente:real;
fim;
var
Cliente : RegConta;
// ------------Entrada ------------
leia(Cliente.NumCliente);
leia(Cliente.NomeCliente);
leia(Cliente.TipoCliente);
leia(Cliente.SaldoCliente);
// ------------ Saida------------
escreva(Cliente.NumCliente);
escreva(Cliente.NomeCliente);
escreva(Cliente.TipoCliente);
escreva(Cliente.SaldoCliente);
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:49 - August 22, 2014 - PG-178
Exemplo 2: algoritmo.
tipo
RegEnder = registro
Rua : caracter[35];
Nmero : inteiro;
fim;
RegConta = registro
NumCliente :integer;
NomeCliente :caracter[35];
Endereo :RegEnder;
TipoCliente :caracter[1];
{1 especial, 2 normal}
SaldoCliente:real;
fim;
var
Cadastro : conjunto [1..20] de RegConta;
Cont :Inteiro;
Cadastro[Cont].NumCliente Cont;
Escreva('Nmero:', Cadastro[cont].NumCliente);
Escreva('Nome:');
Leia(Cadastro[Cont].Nomecliente);
Escreva('Rua:');
Leia(Cadastro[Cont].Endereoo.rua);
Escreva('Nmero:');
Leia(Cadastro[Cont].Endereco.Nmero);
Repita
Escreva('Tipo cliente:');
Leia(Cadastro[Cont].Tipocliente);
Escreva('Saldo:');
Leia(Cadastro[Cont].SaldoCliente);
fim para;
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:49 - August 22, 2014 - PG-179
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 171
Exemplo 3:
#include <stdio.h>
#include <conio.h>
#include <stdio.h>
#include <conio.h>
typedef struct{
char NOME[30];
float NOTA[4];
} CAD_ALUNO;
#include <stdio.h>
#include <conio.h>
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:49 - August 22, 2014 - PG-180
}
mdia = soma / 4;
printf("A mdia do aluno eh: %f", mdia);
172getch();
TCNICAS DE PROGRAMAO
}
#include <stdio.h>
#include <conio.h>
mdia[I] = soma / 4;
}
getch();
}// final - main()
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:49 - August 22, 2014 - PG-181
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 173
Atividades de aprendizagem
1. Criar um algoritmo que leia o nome de um cliente, cdigo e o total em
dbito deste cliente. Mostre os dados lidos.
2. Analise a estrutura a seguir:
a) Crie um vetor para armazenar as informaes dessa tabela.
b) Cadastre os produtos.
c) Imprima os produtos.
Fique ligado!
As variveis compostas homogneas so estruturas de dados que se caracterizam
por um conjunto de variveis do mesmo tipo. Elas podem ser unidimensionais
ou multidimensionais. Essas estruturas so ditas homogneas porque os valores
que sero armazenados so de um mesmo tipo de dado.
Os ndices so as posies que garantem independncia a cada um dos
valores armazenados na estrutura. Por meio destes ndices, tambm chama-
dos de posies seus valores (contedos), podem ser manipulados de forma
independente.
Exemplos: vetor SALRIO (unidimensional) matriz NOTAS (bidimensional).
Quatro colunas
SALRIO NOTAS
que
1 1000 1 2 3 4 Correspondem
as notas dos
2 1500 1 5 10 8 7 quatro
bimestres
3 500 2 6 7 9 10
4 3000 3 7 9 10 10
5 1200 4 9 8 5 9
5 8 10 9 10
Exemplos:
// primeiro elemento Exemplos:
Escreva (SALRIO[1]) // primeiro e segundo elemento da primeira coluna
Escreva (Matemtica bimestre 01: , NOTAS[1,1] )
// terceiro elemento Escreva (Matemtica bimestre 02: , NOTAS[2,1] )
Escreva (SALRIO[3])
// primeiro e segundo elemento da segunda coluna
Escreva (Cincias bimestre 01: , NOTAS[2,1] )
Escreva (Cincias bimestre 02: , NOTAS[2,1] )
...
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 175
SALRIO NOTAS
Quatro colunas
0 1000 0 1 2 3 que
Correspondem
1 1500 0 5 10 8 7 as notas dos
quatro
2 500 1 6 7 9 10
bimestres
3 3000 2 7 9 10 10
4 1200 3 9 8 5 9
4 8 10 9 10
Exemplos:
Exemplos:
// primeiro elemento
Escreva (SALRIO[0]) // primeiro e segundo elemento da primeira coluna
Escreva (Matemtica bimestre 01: , NOTAS[0,0] )
// terceiro elemento Escreva (Matemtica bimestre 02: , NOTAS[1,0] )
Escreva (SALRIO[2])
// primeiro e segundo elemento da segunda coluna
Escreva (Cincias bimestre 01: , NOTAS[0,1] )
Escreva (Cincias bimestre 02: , NOTAS[1,1] )
......
Procedimento
Um procedimento (procedure), tambm chamado de sub-rotina, um
conjunto de instrues que realiza uma determinada tarefa. identificado por
um nome, por meio do qual referenciado em qualquer parte do programa
que o chamou. Quando um procedimento chamado por um programa, ele
executado e, quando termina, o controle do processamento retorna automa-
ticamente para a primeira linha de instruo aps a linha que fez a chamada
do procedimento.
A sintaxe em portugus estruturado :
FIMPROCEDIMENTO
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:49 - August 22, 2014 - PG-185
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 177
Algoritmo "CalculaMdia"
Var
N1, N2, M: Real
Funes
Uma funo tambm um bloco de programa como so os procedimentos,
contendo incio e fim e sendo identificado por um nome por meio do qual tam-
bm ser referenciada em qualquer parte do programa principal. Uma sub-rotina
de funo , na verdade, muito parecida com uma sub-rotina de procedimento.
A sintaxe em portugus estruturado ser tambm idntica ao exemplo anterior.
Observe, a seguir, o cdigo em portugus estruturado de uma funo.
ALGORITMO "FATORIAL"
VAR
NUM:inteiro
retorne FAT
FIMFUNO
retorne FAT
FIMFUNO
Fimalgoritmo
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace calculadora
{
class Program{
int a, b;
Console.Write("Entre com o primeiro valor: ");
a = int.Parse(Console.ReadLine());
switch (Console.Read()) {
case '1': Console.Write("Soma = " + Somar(a,b));
break;
E s t r u t u r a d e{ d a d o s h o m o g n e a e h e t e r o g n e a
switch (Console.Read()) 179
case '1': Console.Write("Soma = " + Somar(a,b));
break;
Escopo
O escopo de uma varivel define a rea do programa onde esta varivel
pode ser referenciada, podendo ser:
Variveis Globais: so as variveis declaradas no programa que so co-
nhecidas em todo programa e inclusive nos subprogramas contidos nele.
Exceto naqueles mdulos onde for declarada outra varivel com o mesmo
nome.
Variveis Locais: so as variveis declaradas em um subprograma, que so
conhecidas em todo o subprograma, mas no no programa que contm o
subprograma. Caso um subprograma contenha a definio de outro sub-
programa, as variveis declaradas no programa e no subprograma sero
visveis no subprograma, mas o contrrio no verdadeiro. No escopo
do programa, no podemos chamar o subsubprograma, assim como no
podemos acessar as variveis do subprograma.
Dados 3 8 10 21 125
Posies 0 3 0 8 12
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:49 - August 22, 2014 - PG-189
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 181
Matrizes
3 3 6
1 14
2 6
B 3 8
4 7
5 10
4. Faa um programa para ler uma matriz M(5 X 5) e gere trs vetores (A, B e C),
onde o vetor:
a) Ir armazenar os elementos acima da diagonal principal.
b) Ir armazenar os elementos da diagonal principal.
c) Ir armazenar os elementos abaixo da diagonal principal.
1 2 3 4 5 Vetor A 2 3 4 5 8 9 10 14 15 20
6 7 8 9 10 Vetor B 1 7 13 19 25
11 12 13 14 15 Vetor C 6 11 12 16 17 18 21 22 23 24
16 17 18 19 20
21 22 23 24 25
5. Faa um programa que leia uma matriz M(5 X 10) e realize a seguinte ope-
rao: procure pelo Dado em cada linha da matriz M e, para cada linha,
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:49 - August 22, 2014 - PG-190
Dado 8
1 2 3 4 5
Freq 2 0 3 1 0
Registros
E s t r u t u r a d e d a d o s h o m o g n e a e h e t e r o g n e a 183
Referncias
MEDEIROS. Higor. Trabalhando com arrays. Disponvel em: <http://www.devmedia.com.
br/trabalhando-com-arrays/5212>. Acesso em: 21 jul. 2013.
MSDN. Arrays de nico dimensional (guia de programao translation from VPE for
Csharp). Disponvel em: <http://msdn.microsoft.com/pt-br/library/0a7fscd0(v=vs.90).aspx>.
Acesso em: 21 jul. 2013a.
MSDN. Matrizes (Guia de programao do C#). Disponvel em: <http://msdn.microsoft.
com/pt-br/library/9b9dty7d(v=vs.90).aspx>. Acesso em: 21 jul. 2013b.
MSDN. Multidimensional arrays (C# Programming Guide). Disponvel em: <http://msdn.
microsoft.com/en-us/library/2yd9wwz4.aspx>. Acesso em: 21 jul. 2013c.
RODRIGUES, Joel. Arrays em C# teoria e prtica. Disponvel em: <http://www.linhadecodigo.
com.br/artigo/3444/arrays-em-csharp-teoria-e-pratica.aspx.>. Acesso em: 21 jul. 2013.
99575-978-85-6875-94-4-TCNICAS_DE_PROGRAMAO_28_07_2014.pdf, page 1 @ Preflight - 04:36:49 - August 22, 2014 - PG-192
Anotaes
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________