Você está na página 1de 69

Lgica de

Programao








2
UNIDADE 1 - INTRODUO LGICA DE PROGRAMAO ........................................................................................... 3
1.1 VISO GERAL DO PROCESSO DE DESENVOLVIMENTO DE APLICAES ........................................................................................ 3
1.2 LGICA DE PROGRAMAO ............................................................................................................................................ 4
1.3 SEQUNCIA LGICA ....................................................................................................................................................... 4
1.4 INSTRUES ................................................................................................................................................................ 5
1.5 ALGORITMO ................................................................................................................................................................ 5
1.6 EXERCCIOS SUGERIDOS ................................................................................................................................................. 9
UNIDADE 2 - DIAGRAMAS DE FLUXO .......................................................................................................................... 10
2.1 DIAGRAMA DE NASSI-SHNEIDERMAN ............................................................................................................................. 10
2.2 FLUXOGRAMAS .......................................................................................................................................................... 12
2.3 LINGUAGEM NATURAL ................................................................................................................................................. 14
2.4 PSEUDOCDIGO ......................................................................................................................................................... 14
UNIDADE 3 - ELEMENTOS BSICOS DO CDIGO ......................................................................................................... 16
3.1 VARIVEIS E CONSTANTES ............................................................................................................................................ 16
3.2 TIPOS PRIMITIVOS DE DADOS ........................................................................................................................................ 16
3.3 DECLARAO DE VARIVEIS .......................................................................................................................................... 17
UNIDADE 4 - COMANDOS DE ATRIBUIO, ENTRADA E SADA DE DADOS ................................................................. 22
4.1 COMANDO DE ATRIBUIO........................................................................................................................................... 22
4.2 COMANDO DE ENTRADA DE DADOS ............................................................................................................................... 23
4.3 COMANDO DE SADA DE DADOS .................................................................................................................................... 23
UNIDADE 5 - ESTRUTURAS DE SEQUENCIAO, SELEO E REPETIO ..................................................................... 24
5.1 SEQUNCIA ............................................................................................................................................................... 24
5.2 SELEO ................................................................................................................................................................... 24
5.3 REPETIO ................................................................................................................................................................ 27
UNIDADE 6 - VETORES E MATRIZES (ARRAYS) ............................................................................................................. 31
6.1 VETORES ................................................................................................................................................................... 31
6.1 MATRIZES ................................................................................................................................................................. 32
UNIDADE 7 - SUBROTINAS (PROCEDIMENTOS E FUNES) ......................................................................................... 33
7.1 UTILIZAO DE SUBROTINAS ......................................................................................................................................... 33
7.2 PROCEDIMENTOS ........................................................................................................................................................ 34
7.3 FUNES .................................................................................................................................................................. 34
UNIDADE 8 - CONTEDO DINMICO........................................................................................................................... 36
8.1 CONTEDO DINMICO - CONCEITO ................................................................................................................................ 36
8.2 LINGUAGENS: ............................................................................................................................................................ 37
UNIDADE 9 - LINGUAGEM PHP.................................................................................................................................... 38
9.1 COMO CRIAR UM ARQUIVO PHP ................................................................................................................................... 38
9.2 DELIMITANDO O CDIGO PHP ...................................................................................................................................... 38
9.3 DELIMITADORES ALTERNATIVOS ..................................................................................................................................... 39
9.4 SEPARADORES DE INSTRUES ...................................................................................................................................... 39
9.5 COMENTRIOS ........................................................................................................................................................... 40
9.6 ESTRUTURAS DE DADOS ............................................................................................................................................... 41
9.7 VARIVEIS ................................................................................................................................................................. 41
9.8 CONSTANTES ............................................................................................................................................................. 41



3
9.9 ARRAYS .................................................................................................................................................................... 42
9.10 TIPOS DE DADOS SUPORTADOS ..................................................................................................................................... 43
9.11 ESTRUTURAS DE CONTROLE .......................................................................................................................................... 46
UNIDADE 10 - LINGUAGEM C .................................................................................................................................... 52
10.1 ESTRUTURA BSICA DE UM PROGRAMA EM C ................................................................................................................... 52
10.2 COMANDO IF ............................................................................................................................................................. 53
10.3 ESTRUTURAS DE REPETIO .......................................................................................................................................... 54
10.4 ARRAYS (VETORES E MATRIZES) ..................................................................................................................................... 54
10.5 FUNES (SUBROTINAS) .............................................................................................................................................. 55
UNIDADE 11 - FUNDAMENTOS ORIENTAO A OBJETOS ......................................................................................... 56
11.1 CONCEITOS BSICOS .................................................................................................................................................... 56
11.2 CLASSE ..................................................................................................................................................................... 59
11.3 COLABORAO .......................................................................................................................................................... 60
11.4 BENEFCIOS DA ORIENTAO A OBJETOS ......................................................................................................................... 61
UNIDADE 12 - EXERCCIOS DE FIXAO .................................................................................................................... 63



Unidade 1 - Introduo Lgica de
Programao
1.1 Viso geral do processo de desenvolvimento de
aplicaes
Antes de comearmos a estudar lgica de programao, importante que tenhamos uma viso
geral do processo de desenvolvimento de aplicaes, uma vez que estudaremos lgica de
programao com o objetivo de conseguir um bom embasamento para a prtica da programao
de computadores.
Podemos encontrar na literatura em informtica vrias formas de representao das etapas em
que consiste o processo de desenvolvimento de um programa ou aplicao. Estas formas de
representao podem variar tanto na quantidade de etapas como nas atividades que devem ser
realizadas por cada etapa.
A seguir apresentaremos uma forma de representao do processo de desenvolvimento de
software que bastante encontrada na literatura:



Na figura, podemos ver o processo de desenvolvimento de programas dividido em seis etapas. A
seguir daremos uma rpida explicao das atividades realizadas em cada etapa.
Planejamento
Na etapa de planejamento onde deve ser desenvolvido um plano inicial de desenvolvimento,
levando em consideraes questes como definio da abrangncia do sistema, misso e
objetivos do sistema, cronogramas de desenvolvimento, anlise custo x benefcio, levantamento
inicial de informaes, etc.
Planejamento





Anlise





Projeto









Implementa
o









Manuteno









Testes









Lgica de Programao


4

Anlise
Tambm chamada de anlise de requisitos, onde deve se obter um claro entendimento sobre o
sistema. A anlise proporciona a base para uma boa implementao do software.
Projeto
Tambm chamada de especificao do projeto, onde propomos uma arquitetura de
implementao para o software, que atenda aos requisitos do sistema identificados na anlise.
Aqui, passamos a nos preocupar com os diversos aspectos computacionais necessrios para uma
boa implementao do software. Os algoritmos dos programas a serem implementados so
construdos nesta fase.
Implementao
A etapa de implementao onde os programas so efetivamente construdos, a partir da
arquitetura de implementao feita na etapa anterior. Nesta etapa onde a atividade de
codificao ocorre de forma massiva.
Teste
Nesta etapa os programas construdos sero testados de forma exaustiva. Existe uma grande
variedade de testes que so realizados, indo desde o teste unitrio dos mdulos de programas at
o teste de integrao de todo o sistema de software.
Manuteno
onde ocorrem ajustes do software implementado, que podem ser ocasionados por vrios
motivos: erros de projeto identificados aps a implementao e o teste do software, inovaes
tecnolgicas, evoluo do sistema, etc..

1.2 Lgica de Programao
A lgica trata da correo do pensamento. Como filosofia ela procura saber por que pensamos de
uma forma e no de outra. Poderamos dizer, tambm, que a Lgica a arte de pensar
corretamente e, visto que a forma mais complexa de pensamento o raciocnio, a Lgica estuda
ou tem em vista a "correo do pensamento".
A Lgica de Programao necessria para pessoas que desejam trabalhar com
desenvolvimento de sistemas e programas, ela permite definir a sequncia lgica para o
desenvolvimento.
Ento, o que Lgica?
Lgica de Programao a tcnica de encadear pensamentos para atingir determinado objetivo.

1.3 Sequncia Lgica
Os pensamentos podem ser descritos como uma sequncia de instrues, que devem ser
seguidas para cumprir uma determinada tarefa.
Podemos dar uma definio concreta:
Sequncia Lgica so os passos executados at atingir um objetivo ou soluo de um problema.
Lgica de Programao


5


1.4 Instrues

Na linguagem comum, entende-se por instrues "um conjunto de regras ou normas definidas
para a realizao ou emprego de algo".
Em informtica, porm, instruo a informao que indica a um computador uma ao elementar
a ser executada.
Convm ressaltar que uma ordem isolada no permite realizar o processo completo, para isso
necessrio um conjunto de instrues colocadas em ordem sequencial lgica.
Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prtica uma
srie de instrues: descascar as batatas, bater os ovos, fritar as batatas, etc...
evidente que essas instrues tm que ser executadas em uma ordem adequada no se pode
fritar as batatas para depois descasc-las.
Dessa maneira, uma instruo tomada em separado, no tem muito sentido. Para obtermos o
resultado, precisamos colocar em prtica o conjunto de todas as instrues, na ordem correta.
Instrues so um conjunto de regras ou normas definidas para a realizao ou emprego de algo.
Em informtica, o que indica a um computador uma ao elementar a executar.

1.5 Algoritmo
A palavra algoritmo, primeira vista, parece-nos estranha. Embora possua designao
desconhecida, fazemos uso constantemente de algoritmos em nosso cotidiano: a maneira como
uma pessoa toma banho um algoritmo, por exemplo.
Outros algoritmos frequentemente encontrados so:
instrues para se utilizar um aparelho eletrodomstico;
uma receita para preparo de algum prato;
guia de preenchimento para declarao do imposto de renda;
a regra para determinao de mximos e mnimos de funes por derivadas sucessivas;
a maneira como as contas de gua, luz e telefone so calculadas mensalmente, dentre outros.
So vrios os conceitos para algoritmo. Escolhemos alguns para serem apresentados aqui.

"Um conjunto finito de regras que prov uma sequncia de operaes para resolver um tipo
de problema especfico"
Ronald Knuth

Lgica de Programao


6

"Sequncia ordenada, e no ambgua, de passos que levam soluo de um dado
problema"
Tremblay

"Processo de clculo, ou de resoluo de um grupo de problemas semelhantes, em que se
estipulam, com generalidade e sem restries, as regras formais para a obteno do
resultado ou da soluo do problema"
Dicionrio Aurlio
Por que precisamos dele?
No desenvolvimento de programas, estaremos tratando constantemente com a complexidade
inerente aos problemas que desejamos que nosso programa de computador resolva. Para
tratarmos da complexidade dos problemas desenvolvemos algoritmos que devem expressar de
forma objetiva e clara a forma de solucionarmos esse problema.
A partir do algoritmo desenvolvido fica fcil construirmos o programa, basta conhecermos a
linguagem de programao que se pretende adotar. Uma vez construdo o algoritmo, podemos
transport-lo para qualquer linguagem de programao, o que nos d uma flexibilidade para a
efetiva implementao do programa.
Caractersticas
Todo algoritmo deve apresentar algumas caractersticas bsicas:
ter fim;
no dar margem dupla interpretao (no ambguo);
capacidade de receber dado(s) de entrada do mundo exterior;
poder gerar informaes de sada para o mundo externo ao do ambiente do algoritmo;
ser efetivo (todas as etapas especificadas no algoritmo devem ser alcanveis em um
tempo finito).
Formas de Representao
Existem vrias ferramentas que podem ser utilizadas para a representao de algoritmos, entre
elas: linguagem natural, pseudocdigo (ou portugus estruturado), diagrama de Nassi-
Shneiderman (ou Chapin), fluxogramas, etc.
A seguir, veremos em nvel de detalhe algumas delas.
Descrio Narrativa
Faz-se uso da linguagem natural para descrever algoritmos.

Exemplo:
Receita de Bolo
Lgica de Programao


7

Providencie ingredientes.
Misture os ingredientes.
Despeje a mistura na forma de bolo.
Leve a forma ao forno.
Espere 20 minutos.
Retire a forma do forno.
Deixe esfriar.
Prove.


Vantagens Desvantagens
O idioma bastante
conhecido por ns.
Impreciso.
Pouca confiabilidade (a
impreciso acarreta a
desconfiana).
Extenso (normalmente,
escreve-se muito para dizer
pouca coisa).

Existem trs estruturas bsicas para a construo de algoritmos: sequenciaco, seleo e
repetio. A combinao destas trs estruturas permite-nos a construo de algoritmos para a
resoluo de problemas extremamente complexos. A programao estruturada baseia-se nestas
trs estruturas bsicas.
Imagine a seguinte situao: precisamos elaborar um algoritmo para trocar uma lmpada.

Incio
- pegue uma escada
- coloque-a embaixo da lmpada
- busque uma lmpada nova
- suba na escada com a lmpada nova
- retire a lmpada velha
- coloque a lmpada nova
- desa da escada
Fim

Lgica de Programao


8

Observe que este algoritmo resolve o nosso problema da troca de lmpada. No entanto, trata-se
de um algoritmo bastante simples, que se utiliza apenas da estrutura de sequenciao, ou seja,
nenhuma seleo ou repetio de procedimentos aparece no algoritmo. Uma estrutura de
sequncia, caracteriza-se por possuir uma nica sequncia de aes, que executada apenas
uma vez.
No entanto, antes de trocarmos a lmpada devemos nos certificar de que ela realmente esteja
queimada, para ento troc-la. Assim, podemos melhorar nosso algoritmo.

Incio
- ligue o interruptor
- se a lampada no acender, ento:
- pegue uma escada
- coloque-a embaixo da lmpada
- busque uma lmpada nova
- suba na escada com a lmpada nova
- retire a lmpada velha
- coloque a lmpada nova
- desa da escada
Fim
Agora o nosso algoritmo, alm da estrutura, de sequncia, passa a utilizar uma estrutura de
seleo. Na estrutura de seleo, uma condio deve ser analisada e, a partir do resultado da
anlise, um "caminho" do algoritmo ser executado. Em outras palavras, uma estrutura de seleo
escolhe aes a serem executadas a partir de uma condio (que pode ser simples ou composta).
Embora nosso algoritmo tenha melhorado, ainda podemos deix-lo mais completo. Quando
verificamos que a lmpada est queimada, subimos para troc-la, mas no consideramos a
hiptese da lmpada nova tambm estar queimada. Se isso ocorrer, precisaremos executar
algumas aes novamente, at que possamos efetivamente resolver nosso problema.
Incio
- ligue o interruptor
- se a lmpada no acender, ento:
- pegue uma escada
- coloque-a embaixo da lmpada
- enquanto a lmpada no acender, faa:
- busque uma lmpada nova
- suba na escada com a lmpada nova
- retire a lmpada velha
- coloque a lmpada nova
- desa da escada
Fim
Lgica de Programao


9

Neste algoritmo, somente iremos parar de trocar a lmpada quando colocarmos uma lmpada que
acenda. Portanto, um conjunto de aes ser executado repetidamente enquanto a condio de
repetio for verdadeira. Assim, inserimos uma estrutura de repetio no nosso algoritmo, que
passa a trabalhar com as trs estruturas bsicas de construo de algoritmos.
importante salientar que existem vrias formas de se construir um algoritmo, pois as pessoas
pensam de formas diferentes. No entanto, devemos sempre buscar a forma mais otimizada
possvel (dentro dos limites impostos pela situao).

1.6 Exerccios Sugeridos
1) Crie uma sequncia lgica para tomar banho.
a) Soluo somente com estrutura sequencial:
b) Soluo usando estrutura de seleo:
c) Soluo com as trs estruturas sequncia, seleo e repetio:

2) Descreva os passos necessrios para somar dois nmeros e multiplicar o resultado pelo primeiro nmero.

2) Descreva com detalhes a sequncia lgica para trocar um pneu de um carro.
Lgica de Programao


10

Unidade 2 - Diagramas de Fluxo
2.1 Diagrama de Nassi-Shneiderman
Tambm conhecido como diagrama de Chapin, esta ferramenta de representao oferece grande
clareza para a representao de sequenciao, seleo e repetio num algoritmo, utilizando-se
de uma simbologia prpria.
A idia bsica deste diagrama representar as aes de um algoritmo dentro de um nico
retngulo, subdividindo-o em retngulos menores, que representam os diferentes blocos de
sequncia de aes do algoritmo. Seleo e repetio tambm so representadas de forma
grfica, dentro dos retngulos

Sequncia






Seleo






Ao - 1











Ao - 2











Ao - 3











Condio
V F











Aes Aes











Lgica de Programao


11

Repetio










Exemplo
Queremos resolver o seguinte problema: Calcular a mdia de todos os alunos que cursaram uma
disciplina X, a partir da leitura das notas da 1 e 2 prova, passando por um clculo de mdia
aritmtica. Aps a mdia calculada, devemos anunciar se o aluno foi aprovado ou reprovado por
nota. Somente esto aprovados os alunos com mdia maior ou igual 5,0.


















Repetir at (condio)



Aes




Enquanto (cond) faa












Aes



Enquanto (no for fim da lista de alunos) faa



Leia nota3




Media = (nota1+nota2)/2




Media >= 5.0
V F



Aluno Aprovado Aluno Reprovado



Leia nota2




Leia nota1




Lgica de Programao


12

Embora os diagramas N-S ofeream uma representao muito clara do algoritmo, medida que os
algoritmos vo se tornando mais complexos, fica difcil realizar os desenhos necessrios numa
nica pgina, prejudicando a sua visualizao.
2.2 Fluxogramas
O fluxograma foi utilizado por muito tempo para a representao de algoritmos. No entanto, o seu
grande problema permitir o desenvolvimento de algoritmos no estruturados. Com o advento das
linguagens de programao estruturada o fluxograma caiu em desuso.
O fluxograma utiliza-se de smbolos especficos para a representao de algoritmos. Existe uma
certa variao na simbologia empregada, mas mesmo assim, apresentaremos a seguir uma
simbologia tradicionalmente usada:

Processo




Deciso



Leitura



Escrita


Conector


Terminal

Setas de Fluxo de Controle

Lgica de Programao


13

Exemplo
Com base no exemplo anterior, feito com N-S, complete o fluxograma abaixo:



Vantagens Desvantagens
uma das ferramentas mais
conhecidas.
Pouca ateno aos dados, no
oferecendo recursos para descrev-
los ou represent-los.
Figuras dizem muito mais do
que palavras.
Complica-se medida que o
algoritmo cresce.
Padro mundial.
Lgica de Programao


14

2.3 Linguagem Natural
A representao de algoritmos atravs de linguagem natural a forma mais espontnea de
representao de algoritmos, pois descrevemos os passos do algoritmo utilizando o nosso
linguajar cotidiano, escrevendo o algoritmo como um texto simples.
Representao
Para todos os alunos da disciplina X, faa: ler as notas da 1 e 2 prova, somar as notas e dividir
por dois, chegando assim, ao resultado da mdia do aluno. Se a mdia do aluno for maior ou igual
a 5,0, ento o aluno est aprovado, seno o aluno est reprovado. Fazer para o prximo aluno.
O problema da representao de algoritmos com linguagem natural que quanto maior a
complexidade do problema, maior a dificuldade de entendermos o texto que procura descrever os
passos do algoritmo, pois no se emprega nenhum recurso diagramtico, e no h uma rigidez na
estruturao das aes.
2.4 Pseudocdigo
O pseudocdigo vem sendo amplamente utilizado por projetistas de softwares e programadores,
pois obriga o uso de estruturas que facilitem o entendimento do algoritmo, e tambm facilitam a
transformao do mesmo em cdigos reais.
O pseudocdigo tambm recebe outros nomes, como: portugus estruturado, PDL (Program
Design Language), pascalide, etc.. Utilizaremos neste curso o pseudocdigo como a forma de
representao padro para algoritmos. Um dos ambientes que entende o pseudocdigo ou
portugus estruturado o AMBAP (Ambiente de Aprendizado de Programao desenvolvido pela
UFAL Universidade Federal de Alagoas).
O exemplo anterior ser representado atravs de pseudocdigo.

//Algoritmo MediaAluno

variaveis
numerico nota1, nota2, media

inicio
faca enquanto (no for fim da lista de alunos)
leia (nota1)
leia (nota2)
media = (nota1+nota2)/2
se (media >= 5.0)entao
escreva ("Aluno aprovado")
senao
escreva ("Aluno reprovado")
Lgica de Programao


15

fim_se
fim_enquanto
fim

Observe que no pseudocdigo, somos obrigados a utilizar algumas estruturas bsicas de controle
(sequncia, seleo e repetio), de forma a estruturar e organizar melhor os passos do algoritmo.


Lgica de Programao


16

Unidade 3 - Elementos Bsicos
do Cdigo
3.1 Variveis e Constantes
Variveis e constantes so conceitos fundamentais para a construo de algoritmos e programas
de computadores, pois so atravs deles que um algoritmo "guarda" os dados do problema.
Todo dado que tem a possibilidade de ser alterado (portanto, sofrer variao) no decorrer do
tempo, dever ser tratado como uma varivel do problema e, portanto, dever ser definido como
tal no algoritmo a ser desenvolvido.
Quando um dado no tem nenhuma possibilidade de variar com o decorrer do tempo, ele dever
ser tratado como uma constante, e dessa forma definido e tratado como tal no algoritmo.
Por exemplo, considere o desenvolvimento de um algoritmo para o seguinte problema: calcular as
reas de cinco tringulos com medidas diferentes. Sabemos que a frmula para o clculo da rea
de um tringulo "b*h / 2", onde "b" o valor da base e "h" o valor da altura do tringulo. Sendo
assim, "b" e "h" so dados que iro variar no decorrer do "tempo de execuo" do algoritmo,
portanto devero ser tratados como variveis. O nmero "2" da frmula um dado constante e no
sofrer variao no decorrer do algoritmo, portanto, deve ser tratado como constante.
Variveis e constantes so, em um algoritmo ou programa, nomes que identificam os valores
tratados no problema. Estes nomes devem seguir algumas normas e regras para poderem
funcionar corretamente:

Devem comear por um caractere alfabtico;
Podem ser seguidos por mais caracteres alfabticos e/ou numricos;
No permitido o uso de caracteres especiais, como: @, #, &, *, +, ?, etc. (exceto o sublinhado),
nem espaos em branco.

De maneira geral, devem ser legveis e de fcil compreenso dentro do contexto, a fim de viabilizar
o entendimento para outros programadores.
Exemplos:
X, x3, teste, altura1, nota2, abc213, a1b2c3, etc.

3.2 Tipos Primitivos de Dados
Lgica de Programao


17

Todo dado a ser tratado num algoritmo deve pertencer a algum tipo, que ir determinar o domnio
de seu contedo. Os tipos mais comuns de dados so conhecidos como tipos primitivos de dados,
so eles: numrico, texto (ou caracter) e lgico1.
Neste curso, usaremos para a construo de nossos exerccios somente estes trs tipos, mas
saiba que existem vrios outros e que, em outras bibliografias sero mais detalhistas.
Numrico: todos os valores do tipo numrico seja ele positivo, negativo, zero, ponto flutuante,
decimal, etc.
Texto: todo e qualquer dado composto por um conjunto de caracteres alfanumricos (nmeros,
letras e caracteres especiais), desde que estejam entre aspas.
Lgico: todo e qualquer dado que s pode assumir duas situaes verdadeiro ou falso
(biestveis).
3.3 Declarao de Variveis
Para elaborarmos nossos algoritmos deveremos, antes de tudo, "listar" todas as variveis que
utilizaremos na construo do programa. Esse mtodo muito til principalmente para cdigos
muito extensos, uma vez que, na maioria das linguagens de scripts no necessrio declararmos
as variveis.
Fazemos a declarao de variveis obedecendo ao seguinte padro:
//Algoritmo TesteVariaveis

variaveis
tipo: nome_variavel, nome2_variavel, etc

inicio












1
Na Unidade 14 encontram-se maiores explicaes sobre a linguagem PHP, e na Unidade 15 sobre a linguagem C.
Lgica de Programao


18

<desenvolvimento>
fim
Onde:
Tipo pode ser numrico, caracter ou lgico.
Nome_variavel o identificador da varivel.
Operadores (aritmticos, relacionais e lgicos)
Quando construmos algoritmos comum trabalharmos com expresses matemticas para a
resoluo de alguns problemas. As expresses matemticas podem fazer uso de operadores
aritmticos e relacionais.
Chamamos de operadores aritmticos o conjunto de smbolos que representa as operaes
bsicas da matemtica, conforme tabela a seguir:

Operaes Operadores Linguagem C Linguagem
PHP
Adio +
Subtrao
Multiplicao *
Diviso /
Potenciao ^ No possuem um smbolo,
fazem por funo da linguagem
Mdulo (resto da
diviso)
Resto(x,y) % %

H tambm um operador aritmtico especial para obter o resto de uma diviso inteira. Usaremos
para essa operao a funo "resto".
Exemplo: resto(20, 3) = 2.
Um outro grupo importante de operadores formado pelos operadores relacionais. Quando
queremos fazer comparaes entre valores, ou entre expresses (tanto matemticas como
lgicas), precisamos utilizar esta categoria de operadores. Os operadores relacionais so:

Operaes Operadores Linguagem
C
Linguagem
PHP
Igualdade = ==
Diferena <> !=
Maior >
Menor <
Maior ou >=
Lgica de Programao


19

igual
Menor ou
igual
<=

O resultado de uma relao sempre um valor lgico (verdadeiro ou falso).

Exemplos:
a) 2+5 = 3+2 F (falso)
b) 3*5 <> 2*3 V (verdadeiro)
Uma terceira categoria de operadores que podemos utilizar na construo de algoritmos
chamada de operadores lgicos. Estes operadores funcionam como conectivos para a formao
de novas proposies.
Os principais operadores lgicos so:

Operaes Operadores Linguagem C Linguagem
PHP
Conjuno (e) E &&
Disjuno (ou) OU ||
Negao
(no)
NAO !

Os resultados das operaes lgicas so sempre valores lgicos (verdadeiro ou falso).
Para trabalharmos adequadamente com operadores lgicos, temos que conhecer a tabela verdade
para cada um dos operadores. Uma tabela verdade o conjunto de todas as possibilidades
combinatrias entre os valores das variveis lgicas, conforme apresentado a seguir:


A B A E B
F
F
V
V
F
V
F
V
F
F
F
V


A B A OU B
F F F
Lgica de Programao


20

F
V
V
V
F
V
V
V
V


A NO( A)
F
V
V
F
Exemplos:
a) 3 > 6 OU 4 < 5
F OU V

Resultado: V

b) 4 < 7 E 5 > 9
V E F

Resultado: F

Na resoluo das expresses aritmticas, lgicas e relacionais, os operadores e as funes
matemticas possuem uma hierarquia de prioridade.

Parnteses mais internos
Funes matemticas
^
*
/
resto
+
-
operadores relacionais
no
e
ou

Lgica de Programao


21

Exemplo:
No( 2^3 < 4^2) ou abs(int(15/-2)) < 10
No 8 < 16 ou abs (int(-7,5)) < 10
No 8 < 16 ou abs (-7) < 10
No 8 < 16 ou 7 < 10
No( V ) ou V
F ou V
V

Exerccios Sugeridos
1) Sabendo que A=3, B=7 e C=4, informe se as expresses abaixo so verdadeiras ou falsas.

(A+C) > B ( )
B >= (A+2) ( )
C = (B-C) ( )
(B+A) <= C ( )
(C+A) > B ( )

2) Sabendo que A=5, B=4, C=3 e D=6, informe se as expresses abaixo so verdadeiras ou
falsas.

(A>C) AND (C<=D) ( )
(A+B) > 10 OR (A+B) = (C+D) ( )
(A>=C) AND (D>=C) ( )

Lgica de Programao


22

Unidade 4 - Comandos de Atribuio,
Entrada e Sada de Dados
4.1 Comando de Atribuio
O comando de atribuio permite-nos atribuir um valor para uma varivel, sendo que tipo do dado
atribudo para a varivel deve ser compatvel com o tipo declarado para a varivel. A sintaxe
utilizada ser:
Identificador := expresso2
onde identificador o nome da varivel que receber o valor da expresso.

Exemplo:
X := 0
Y := 10 + 7
A := 0.098
Nome := "teste de atribuio"
Z := verdadeiro














2
Nas linguagens C e PHP o smbolo de atribuio =, por exemplo, x = 5. J, nestas linguagens a igualdade
representada por ==.
Lgica de Programao


23

4.2 Comando de Entrada de Dados
Na prtica de construo de programas, ser muito comum o uso de comandos que proporcionam
a entrada de dados para o computador. Assim, devemos ter uma representao correspondente
em nvel de algoritmo para a entrada de dados. Utilizaremos o comando ler para efetuar a entrada
de dados para o algoritmo, conforme sintaxe abaixo.
Ler varivel
Sendo que varivel receber um valor vindo de "fora" do algoritmo para que algum processamento
ocorra.
4.3 Comando de Sada de Dados
Alm do comando de entrada de dados ser muito comum o uso de comandos que proporcionem
a sada de dados gerados pelo computador. Assim, devemos ter uma representao
correspondente em nvel de algoritmo para a sada de dados. Utilizaremos o comando escrever
para efetuar a sada de dados do algoritmo, conforme sintaxe abaixo:
Escrever varivel, constante, expresso
Neste exemplo, o algoritmo mostrar os valores de variveis, constantes e/ou expresses.

//Algoritmo Exemplo

variaveis
numerico x, y, a, res
caracter nome
INICIO
Escrever "Entre com o primeiro valor:"
Ler x
Escrever "Entre com o segundo valor:"
Ler y
Escrever "Entre com o nome da pessoa:"
Ler nome

a:= x * 3 / y
res := (a * 2.4)/3

Escrever "O resultado foi: ", res
FIM

Lgica de Programao


24

Unidade 5 - Estruturas de Sequenciao,
Seleo e Repetio
5.1 Sequncia
A estrutura de sequncia a estrutura mais simples que utilizamos na construo de algoritmos
estruturados. Ela formada por um conjunto de instrues (ou comandos) que sero executadas
numa sequncia linear de cima para baixo e da esquerda para a direita, ou seja, da mesma forma
como elas foram escritas. Utilizamos as palavras inicio e fim para delimitar o bloco de sequncia,
conforme abaixo:
Exemplo:
INICIO
Ler a
Ler b
c := a + b
Escrever c
FIM

5.2 Seleo
Uma estrutura de seleo permite a escolha de um conjunto de aes e/ou estruturas que sero
executadas a partir do resultado de uma condio (simples ou composta), representada por uma
expresso lgica.
Utilizaremos a seguinte representao para estruturas de seleo:

se (condio) entao
comando 1
comando 2
comando 3
...
fim_se

No caso acima, os comandos somente sero executados se a condio for verdadeira, caso
contrrio, o programa continua executando os prximos passos logo aps o smbolo de
fechamento de chaves.
Temos ainda a possibilidade de outras representaes mais elaboradas, como as que seguem:
Lgica de Programao


25


se (condio) entao
comandos
...
senao
comandos
...
fim_se

ou

se (condio) entao
comandos
...
senao
se (condio) entao
comandos
...
senao
se (condio)entao
comandos
...
senao
comandos
...
fim_se
fim_se
fim_se

Nesses dois casos descritos acima, sero executados os comandos apenas de uma das
condies e somente se ela for verdadeira. Caso no haja condies verdadeiras sero
executados os comandos definidos dentro do bloco seno.
Teste de Mesa
uma simulao da execuo de um programa ou plano, usando para isso simplesmente papel e
lpis para registrar o que teoricamente ocorre em cada passo. Serve para visualizarmos todas as
etapas que o computador realiza durante a execuo do algoritmo.
Exemplo de Algoritmo
Receba a nota da prova1
Lgica de Programao


26

Receba a nota de prova2
Receba a nota de prova3
Receba a nota da prova4
Some todas as notas e divida o resultado por 4
Mostre o resultado da diviso

Faa o teste de mesa:
Nota da Prova 1
Nota da Prova 2
Nota da Prova 3
Nota da Prova 4
Utilize a tabela abaixo:

Exerccios
1) Identifique os dados de entrada, processamento e sada no algoritmo abaixo.
Receba cdigo da pea
Receba valor da pea
Receba quantidade de peas
Calcule o valor total da pea
Mostre o cdigo da pea e seu valor total
2) Faa um algoritmo para calcular o estoque mdio de uma pea, sendo informado o estoque
mnimo e o estoque mximo.
3) Construa um algoritmo que leia a cotao do dlar, leia valores em dlar, converta esse
valor para real e mostre o resultado.
4) Desenvolva um algoritmo que leia 4 nmeros, calcule o quadrado de cada um, some todos
os resultados e mostre o resultado.
5) Construa um algoritmo para pagamento de comisso de vendedores de peas, levando em
considerao que sua comisso ser de 5% do total da venda e que voc tem os seguintes
dados: preo unitrio da pea e quantidade vendida.
6) Joo comprou um microcomputador para controlar o rendimento dirio de seu trabalho.
Toda vez que ele traz um peso de peixes maior que o estabelecido pelo regulamento de
pesca do Estado (50 quilos) deve pagar uma multa de R$ 4,00 por quilo excedente. Joo
precisa que voc faa um algoritmo que leia a varivel P (peso do peixe) e verifique se h
Lgica de Programao


27

excesso. Se houver, gravar na varivel E (excesso) e na varivel M o valor da multa que
Joo dever pagar. Caso contrrio, mostrar tais variveis com o contedo zero.
7) Elabore um algoritmo que leia as variveis C e N, respectivamente cdigo e nmero de
horas trabalhadas de um operrio. Aps, calcule o salrio sabendo-se que ele ganha R$
10,00 por hora. Quando o nmero de horas exceder a 50, calcule o excesso de pagamento
armazenando-o na varivel E, caso contrrio zerar tal varivel. A hora excedente de
trabalho vale R$ 20,00. No final do processamento mostrar o salrio total e o salrio
excedente.
8) Escreva um algoritmo que leia quatro nmeros, calcule o quadrado de cada um e some
todos. Se o quadrado do terceiro for maior que mil (1000), mostre o nmero original e
finalize o programa. Caso contrrio, mostre o resultado de todos.
9) Escreva um algoritmo que leia um nmero inteiro e mostre uma mensagem dizendo se este
nmero par ou mpar, positivo ou negativo.
10) A Secretaria do Meio Ambiente que controla o ndice de poluio mantm trs grupos de
indstrias que so altamente poluentes do meio ambiente. O ndice de poluio aceitvel
varia de 0,05 at 0,25. Se o ndice sobe para 0,30 as indstrias do 1 grupo so intimadas
a suspenderem suas atividades. Se o ndice crescer para 0,4 as indstrias do 1 e 2 grupo
so intimadas a suspenderem suas atividades. Se o ndice atingir 0,50 todos os grupos
devem ser notificados a paralisarem suas atividades. Faa um algoritmo que leia o ndice
de poluio medido e emita a notificao adequada aos diferentes grupos de empresas.
11) Elabore um algoritmo que, dada a idade de um nadador, classifique-o em uma das
seguintes categorias:
INFANTIL A: 5 a 7 anos
INFANTIL B: 8 a 11 anos
JUVENIL A: 12 a 13 anos
JUVENIL B: 14 a 17 anos
ADULTOS: Maiores de 18 anos.

5.3 Repetio
Laos Condicionais e Contados
A estrutura de repetio permite que uma sequncia de comandos seja executada um certo
nmero de vezes at que uma determinada condio seja satisfeita. Por exemplo, pode-se citar o
caso em que se deseja realizar o mesmo processamento para um conjunto de dados diferentes,
como a folha de pagamento de uma empresa de 100 funcionrios. Neste caso o mesmo clculo
efetuado para cada um dos funcionrios. Para solucionar este problema precisaramos escrever o
algoritmo em questo uma vez para cada funcionrio, ou seja, sendo 100 funcionrios teramos
que escrev-lo 100 vezes.
Outro modo de resolver essa questo seria utilizar a mesma sequncia de comandos, ou seja,
fazer a repetio de um conjunto de comandos 100 vezes sem ter que reescrev-lo novamente.
Lgica de Programao


28

A estrutura de repetio tambm chamada de lao ou loop e se divide em:
Laos Condicionais
Quando no se conhece o nmero de vezes que um conjunto de comandos no interior do lao
ser repetido. A repetio ou no dos comandos depender do resultado de uma condio. As
estruturas de repetio que implementam esse tipo de lao usam testes no incio e testes no final
do lao.
Laos Contados
Quando se conhece, previamente, quantas vezes o conjunto de comandos ser executado. Esse
tipo de estrutura usa varivel de controle.
Repetio com Teste no Incio
Caracteriza-se por uma estrutura que efetua um teste lgico no incio do lao. Se o resultado do
teste for verdadeiro o lao executado retornando novamente ao teste lgico e assim o processo
ser repetido enquanto a condio testada for verdadeira.
Sintaxe:
faca enquanto (cond)
comando 1
comando 2
...
fim_enquanto
Repetio com Teste no Final
Lgica de Programao


29

Caracteriza-se por uma estrutura que permite que um lao seja executado at que o resultado do
teste lgico seja verdadeiro. Neste caso o lao executado pelo menos uma vez e ento a
condio testada, se o resultado for falso o lao executado novamente e este processo
repetido at que o resultado da condio seja verdadeiro. A diferena que existe dessa estrutura
para a anterior o fato de ser executada pelo menos uma vez antes de passar pela condio de
teste3.
Sintaxe:
faca
comando 1
comando 2
...
enquanto (cond)

Repetio com Varivel de Controle
utilizada quando se conhece previamente o nmero de vezes que se deseja executar um
determinado conjunto de comandos. Esse tipo de lao nada mais que uma estrutura dotada de
mecanismos prprios para contar o nmero de vezes que o lao vai ser executado obedecendo os
limites fixados.
Sintaxe:
para variavel de valor_inicio ate valor_final passo incremento
comando 1
comando 2
...












3
No AMBAP implementada somente repetio teste condicional no incio, porm, em vrias linguagens de
programao existem as duas formas apresentadas, por isso constam na apostila.
Lgica de Programao


30

proximo
onde: varivel inicializada com o valor de valor_inicio e, subsequentemente, incrementada de
incremento, executando comando1, comando2, ... at que varivel atinja o valor_final. Caso a
expresso passo seja omitida, o valor padro 1 assumido.

Exerccios Sugeridos
1) Escreva um algoritmo que leia as notas finais dos alunos de uma disciplina e calcule a mdia
da turma.
2) Escreva um algoritmo que leia o nome o sexo a altura e o peso de um grupo de 250 pessoas e
informe: Mdia das alturas das mulheres e o nome do homem mais pesado.
3) Escreva um algoritmo que leia dois nmeros inteiros (inicial e final) e mostre os nmeros pares
desse intervalo. Alm disso, deve mostrar tambm quantos so e qual a soma desses
nmeros.
4) Construa um algoritmo que leia 500 valores inteiros positivos e encontre o maior valor, o
menor valor e calcule a mdia dos nmeros lidos.
Lgica de Programao


31

Unidade 6 - Vetores e Matrizes (Arrays)
6.1 Vetores
Vetores so estruturas de dados que permitem o armazenamento de um conjunto de dados, que
podem ser referenciados por um mesmo nome e acessados por um ndice.
Diferentes linguagens implementam vetores de diferentes formas, podendo restringir seu uso
apenas a vetores homogneos (em que todos os dados da estrutura tem o mesmo tipo) ou aceitar
vetores heterogneos (em que cada dado pode ser de um tipo diferente). Tambm pode ser
possvel construir vetores multi-dimensionais, indexados por mais de um ndice.
No exemplo abaixo observamos um exemplo de um vetor homogneo unidimensional (o tipo mais
utilizado e que deve ser o primeiro que o aluno deve entender e dominar).
Exemplo:
//Algoritmo Soma_Valores

variaveis
matriz numerico vet[50]
numerico soma, i, val

INICIO
val := 50
escrever "entre com ", val, " valores"
para i de 1 ate val
ler vet[ i ]
proximo

soma:=0

para i de 1 ate val
soma = soma + vet[ i ]
proximo
escrever "a soma foi", soma
FIM

Observando o cdigo anterior, o uso do vetor razoavelmente claro. Inicialmente ele utilizado
para armazenar os valores que vo sendo lidos, e em seguida utilizado no clculo da varivel
Soma.
Lgica de Programao


32

Obviamente o exemplo acima poderia ser reproduzido sem o uso de vetores, com o clculo da
varivel Soma durante a leitura. Porm, isto pode no ser possvel em exemplos mais complexos,
como os sugeridos a seguir.
6.1 Matrizes
A matriz mais comum a de duas dimenses (linha e coluna), por se relacionar diretamente com
a utilizao de tabelas. Trabalharemos somente com matrizes de 2 dimenses, por serem mais
comuns, mas podem ser necessrias, em algum momento, matrizes de 3 ou mais dimenses.
Uma matriz de 2 dimenses estar sempre fazendo meno a linhas e colunas e ser
representada por seu nome e tamanho. Dessa forma, uma matriz Tabela[8,5] indica que tem 8
linhas e 5 colunas, conforme a figura.

A matriz pode ser declarada da seguinte forma:
variaveis
matriz numerico M[10,10]
Exerccios Sugeridos
1) Crie uma novo algoritmo, com base no algoritmo sobre vetores, em que aps a leitura de
todos os dados, pergunte ao usurio se ele deseja a multiplicao dos dados lidos, sua soma ou o
clculo de sua mdia. Conforme a entrada informada pelo usurio, uma resposta diferente
fornecida pelo sistema.
2) Faa um algoritmo tambm baseado no exemplo, que aps terminada a entrada de dados,
exiba todos os nmeros do vetor de forma ordenada.

Lgica de Programao


33

Unidade 7 - Subrotinas (procedimentos e
funes)
7.1 Utilizao de subrotinas
medida que a complexidade de um algoritmo aumenta, surge a necessidade de dividir um
grande problema em problemas menores, para que seja compreendido mais facilmente. Dessa
forma, cada parte menor (mdulo) tem um algoritmo mais simples, e esse trecho menor
chamado de subrotina.
Alm de facilitar a compreenso do algoritmo, as subrotinas possibilitam que determinados
trechos de programas sejam aproveitados em outros programas. Isso facilita a correo, pois, se
uma rotina para verificar se um nmero ou no primo est incorreta, por exemplo, sabe-se
exatamente qual o trecho do programa que deve ser arrumado.
Rotinas que ficam demasiado complexas podem ainda ser divididas em diversas outras rotinas
mais simples. O processo de dividir uma subrotina em outras denominado refinamento
sucessivo.
O processo de se programar um computador torna-se bastante simples quando aplicado algum
mtodo para utilizao das subrotinas. Um dos mtodos mais utilizados na programao
estruturada o mtodo TOP-DOWN (de cima para baixo) que se caracteriza por:
Antes de iniciar a construo do programa, o programador dever ter em mente as tarefas
principais que esse programa dever executar. No necessrio saber como funcionaro,
somente saber quais so.
Deve-se ter em mente como ser o funcionamento do programa principal, que controlar todas as
tarefas distribudas em subrotinas.
Uma vez definido o programa principal, detalha-se ento as subrotinas. So definidos vrios
algoritmos, um para cada rotina em separado, para que se tenha uma viso do que ser
executado em cada mdulo de programa. Isso tambm facilita a manuteno (alteraes
posteriores necessrias).
O mtodo Top-Down pode ser graficamente visualizado conforme a figura:


Lgica de Programao


34

Existem dois tipos de sub-rotinas a serem utilizados na programao, conhecidos como
procedimentos (procedures) e funes (functions). As diferenas entre eles so apresentadas a
seguir.
7.2 Procedimentos
So, na realidade, trechos de programas independentes mas que, para serem processados,
devem ser solicitados pelo programa principal. Exemplo:
procedimento NomeProcedimento ( lista de parmetros )
inicio
<comandos>
fim
A lista de parmetros, definida no cabealho do procedimento, produz a comunicao de dados
entre o procedimento e quem o chamou. O procedimento pode ter de nenhum a vrios parmetros,
sendo que tambm pode ter vrios parmetros de entrada, de sada ou ambos. Exemplos:
...
limpa_tela // sem nenhum parmetro
...
limpa_tela(01,01,24,80) // com parmetros de entrada somente
...
Fatorial (5; retorno) // 5 parmetro de entrada e retorno parmetro de
sada
escrever retorno
...

7.3 Funes
um caso particular de procedimentos. A diferena porm, que apenas uma informao
retornada ao programa que a chamou, ou seja, os parmetros, se existentes, so todos de entrada
e obrigatoriamente h uma e somente uma sada ou retorno para o programa principal.
Algumas linguagens obrigam que a chamada de funo nunca seja sozinha, como os
procedimentos, mas sim fazendo parte de um comando de atribuio ou de uma expresso. A sua
declarao segue o seguinte formato:
Funcao NomeFuno ( lista de parmetros)
inicio
<comandos>
retornar ( parmetro )
fim
Exemplos do uso de funes:
variaveis
Lgica de Programao


35

numerico A,B

Funcao Soma (A, B)
variaveis
numerico x
inicio
x := A + B
retornar(x)
fim
//Programa principal
Inicio
Ler A
Ler B
escrever "Soma de A e B:", Soma(A,B)
Fim
As rotinas podem ficar no incio de um programa, no final ou ainda em um arquivo separado,
dependendo da linguagem utilizada. Uma funo pode ainda retornar um valor verdadeiro (v) ou
Falso (f).

Nesse caso, as rotinas 1, 1.1 e 2
"enxergam" as variveis A e B, porm,
dentro da Rotina 1, a varivel A
definida novamente. Dessa forma, o novo
valor da varivel ser vlido para a rotina
1.1.
As variveis X e Y no sero
visualizadas pelo programa principal.
A varivel X presente na rotina 2 no
interfere na varivel X que est na rotina
1 (so independentes).
A estas peculiaridades denomina-se
Escopo de Variveis.


Lgica de Programao


36

Unidade 8 - Contedo Dinmico
8.1 Contedo Dinmico - Conceito
A linguagem HTML permite a criao de pginas para a Web contendo texto, imagens, etc, mas
uma limitao desta linguagem que no possvel produzir contedo que sofra mudanas de
acordo com fatores externos.
Para isso criou-se as linguagens conhecidas como Server side, ou seja, linguagens que so
processadas no servidor web e nos permitem uma gama de recursos que at ento no existiam,
como por exemplo:
- Utilizao de variveis
- Processamento de dados de formulrios
- Acesso a bancos de dados
Quando navegamos por um site chamado esttico, ou seja, com contedo imutvel, a cada clique
disparamos o seguinte processo:


1- O navegador solicita ao servidor uma pgina HTML.
2- O servidor procura por este arquivo e o retorna para o navegador.
Agora veja a diferena quando navegamos por um site com contedo dinmico:
Lgica de Programao


37


1. O navegador solicita ao servidor um arquivo de linguagem server side.
2. O servidor procura por este arquivo e passa para o interpretador desta linguagem, que processa
os comandos contidos neste arquivo.
3. Aps o processamento o interpretador retorna para o servidor Web o resultado deste
processamento, formatado em HTML.
4. O Servidor ento, retorna ao navegador este resultado.
8.2 Linguagens:
Entre as linguagens mais populares atualmente no desenvolvimento de sites dinmicos podemos
citar o ASP (Active Server Pages, mantido pela Microsoft), JSP (Java Server Pages, mantido pela
SUN) e o PHP (PHP Hypertext Preprocessor, mantido pelo PHP Group).
Resumo:
- Websites dinmicos possuem como principal caracterstica pginas que tm contedos que
podem variar de acordo com fatores externos ao cdigo HTML.
- As duas principais linguagens utilizadas no desenvolvimento de websites dinmicos so o ASP,
da Microsoft e o PHP, do PHP Group.
Lgica de Programao


38

Unidade 9 - Linguagem PHP
PHP uma linguagem server side que foi criada originalmente pelo programador Rasmus Lerdorf
para utilizao em seu site pessoal. Originalmente a sigla queria dizer Personal Home Page,
significado que demonstrava bem que a linguagem ainda dava seus primeiros e despretensiosos
passos.
A linguagem que mais influenciou o PHP foi linguagem Perl, utilizada no incio da web
principalmente para o tratamento de dados de formulrios com os famosos scripts CGI.
Aps a adio de um pacote para tratamento de dados de formulrio e outro que dava suporte
conexo com bancos de dados mSQL (miniSQL), a linguagem foi disponibilizada para o pblico e
passou a receber contribuies de diversos programadores.
A primeira verso do PHP utilizada em larga escala foi verso 3, que embora contendo
pequenos bugs, j era utilizada por milhares de websites.
Hoje o PHP se encontra na verso 5 e possui suporte conexo com os mais diversos bancos de
dados, Orientao a Objetos, gerao dinmica de grficos, LDAP, XML, etc...
9.1 Como criar um arquivo PHP
Por ser uma linguagem interpretada, um arquivo PHP nada mais do que um arquivo texto.
Devido a esta caracterstica, um arquivo PHP pode ser criado em praticamente qualquer editor
disponvel no mercado, desde os mais avanados at os mais simples, como o Bloco de Notas.
Todo arquivo PHP deve possuir a extenso .php, para possibilitar ao servidor web distingui-lo dos
demais arquivos (HTML, JavaSript, XML, etc...).
esta extenso que permite ao servidor web saber que este arquivo deve ser repassado ao
interpretador PHP antes de retornar o resultado para o navegador.
Mas no basta que informemos ao servidor web que este arquivo deve ser passado para o
interpretador, devemos informar ao interpretador que partes deste arquivo devem ser processadas
como cdigo PHP, o que nos leva ao nosso prximo tpico:
9.2 Delimitando o cdigo PHP
Vejamos a diferena de uma pgina HTML comum, que cumprimenta o usurio que est entrando
em nosso site, e uma pgina PHP que far a mesma coisa, porm chamando o usurio pelo seu
nome. No se preocupe neste momento com sintaxe e comandos PHP. Este exemplo apenas
ilustra a utilizao de delimitadores.

Exemplo 1: index.html
<html>
<head>
<title>Teste 1</title>
Lgica de Programao


39

</head>
<body bgcolor=#FFFFFF>
Ol, Usurio!
</body>
</html>

Exemplo 2: index.php
<html>
<head>
<title>Teste 1</title>
</head>
<?php $usuario = Paulo; ?>
<body bgcolor=#FFFFFF>
Ol, <?php echo $usuario; ?>!
</body>
</html>

Note que temos dois pares de tags que no so HTML, representados pela tag <?php e a sua tag
de fechamento, ?>. Tudo o que estiver entre estas duas tags automaticamente processado pelo
interpretador PHP como cdigo, enquanto que o restante tratado como HTML comum, e por
consequncia, ignorado pelo interpretador.
9.3 Delimitadores alternativos
Embora as tags de delimitao de cdigo PHP que so utilizadas como padro pelos
programadores sejam as tags <?php e ?>, o interpretador reconhece como vlidas as seguintes
alternativas:
- <? e ?>
No recomendvel pela possibilidade de confuso com arquivos XML, que possuem uma tag que
inicia exatamente pelos caracteres < e ?.
- <% e %>
No recomendvel pela possibilidade de confuso com arquivos ASP, que utilizam exatamente
mesma notao.
- <script language=php> e </script>
No recomendvel por se tratar da notao padro para scripts client side (que so executados no
lado cliente), como JavaScript, por exemplo.

A no ser que haja um forte motivo para utilizar um dos delimitadores acima, recomendamos enfaticamente
o uso dos delimitadores padro: <?php e ?>.
9.4 Separadores de instrues
Existem duas formas de separar instrues em PHP:
Lgica de Programao


40

- Para separar linhas de comandos utilizamos o ponto e vrgula, como no exemplo abaixo:

Exemplo: Delimitando comandos

<?php
$usuario = Paulo;

echo Ol, $usuario!;
?>
- Para delimitar blocos de cdigos em Estruturas de Controle (que veremos mais adiante)
utilizamos chaves:
Exemplo: Delimitando blocos

if ($usuario == Paulo)
{
echo Ol, $usuario!;
}

Note que o comando que define o bloco de cdigo no terminado por ponto e vrgula.
9.5 Comentrios
Comentrios servem, principalmente para auxiliar o programador ou equipe de programadores a
se orientar dentro de um cdigo e para ajudar na tarefa de debug de um arquivo PHP.
Comentrios so absolutamente ignorados pelo interpretador.
Existem duas formas de comentrios disponveis em PHP:
- Comentrios de uma linha ou linhas comentadas: So comentrios curtos que comeam e
terminam na mesma linha. Para comentar uma linha utilizamos duas barras:
Exemplo: Comentrio de uma linha
<?php
// Este um comentrio de uma linha.
?>
Comentrios em mais de uma linha, ou blocos comentados: So comentrios mais extensos,
utilizados para grandes descries ou para anular a execuo de uma srie de linhas de cdigo.
Para isso utilizamos uma notao semelhante tags HTML: iniciamos o comentrio por uma barra
e um asterisco e o finalizamos com um asterisco e uma barra:
Exemplo: Bloco comentado
<?php
/* Este um comentrio
em mais de uma linha. Todo
este bloco ser ignorado pelo
interpretador PHP. */
?>
Lgica de Programao


41

9.6 Estruturas de dados
Estruturas de dados podem ser entendidas como compartimentos que nos permitem armazenar
informaes. Utilizamos estruturas de dados para que possamos trabalhar mais de uma vez com o
mesmo dado em um programa.
Em PHP existem trs estruturas bsicas de dados, que veremos com mais detalhes a seguir:
- Variveis
- Constantes
- Arrays
9.7 Variveis
Variveis so a estrutura de dados mais comumente utilizada. Uma varivel uma estrutura de
dado que nos permite guardar apenas um valor por vez. Variveis, assim como os arrays em PHP
so denominadas pelo sinal de dlar.
Veja o exemplo, ainda utilizando a varivel $usuario:
Exemplo: Utilizando variveis
<?php
$usuario = Paulo; // Inicializamos a varivel usuario com o valor
Paulo

$usuario = Joo; /* A partir deste momento a varivel usuario troca
completamente de valor, contendo o valor Joo.*/
?>
9.8 Constantes
Constantes, ao contrrio das variveis, so estruturas de dados cujo valor definido apenas uma
vez, no podendo ser modificado. Embora o PHP aceite o nome de constante escrito em
caracteres minsculos, uma boa prtica de programao definirmos o nome de uma constante
sempre utilizando apenas caracteres maisculos.
Constantes so declaradas atravs do comando define, com a seguinte sintaxe:
define(nome_da_constante, valor [, insensibilidade__caixa]);
Veja o exemplo:
Exemplo: Declarando constantes

<?php
define (USUARIO, Paulo);
define (Pais, Brasil, FALSE);
?>
Lgica de Programao


42

O parmetro insensibilidade__caixa, que tem como parmetros possveis TRUE (verdadeiro) ou
FALSE (falso) opcional. Por default este parmetro TRUE, ou seja, a constante deve ser
chamada sempre se respeitando maisculas e minsculas.
Na segunda linha de nosso exemplo, a constante pode ser chamada de qualquer forma Pais,
PAIS, pais, PaIs, etc... enquanto que na primeira linha o interpretador PHP s reconhecer a
constante se ela for chamada exatamente como foi definida, ou seja, toda em caixa alta.
9.9 Arrays
Arrays so vetores ou matrizes, estruturas de dados chamada compostas, pois tm como
caracterstica a possibilidade de armazenar mais de um dado ao mesmo tempo.
Estes dados so acessados atravs do que chamamos de ndice.
Em PHP os arrays so definidos de uma forma mista: ao mesmo tempo em que declaramos o
nome do array com o sinal de dlar, devemos utilizar o comando array para indicar que esta
estrutura de fato uma matriz.

Veja o exemplo de uma definio de array:
Exemplo: Definindo um array
<?php
$usuarios = array(Paulo, Joo);
?>
Neste exemplo definimos um array chamado usuarios contendo dois elementos: Paulo e Joo.
Como no definimos explicitamente os ndices deste array, eles so automaticamente definidos
pelo interpretador de acordo com a ordem dos elementos.
importante notar que, ao contrrio do uso coloquial, o primeiro elemento de um array ordenado
sempre definido pelo ndice zero. Caso queiramos chamar um elemento especfico deste array,
Joo, por exemplo, utilizamos a seguinte notao:

$nome_do_array[indice];

Assim sendo nosso exemplo de saudao ao usurio, utilizando um array, poderia ser escrito da
seguinte forma:

Exemplo: Acessando um elemento de um array
Lgica de Programao


43

<html>
<head>
<title>Teste 1</title>
</head>
<?php $usuarios = array(Paulo, Joo); ?>
<body bgcolor=#FFFFFF>
Ol, <?php echo $usuarios[1]; ?>!
</body>
</html>

Podemos tambm criar o que chamamos de arrays associativos, ou seja, arrays cujo ndice
explicitamente definido por ns:
Exemplo: Declarando um array associativo
<?php
$usuarios = array( Paulo => Paulo da Silva, Joo => Joo Paulo
da Costa);
?>
E para chamarmos algum dos elementos deste array utilizamos exatamente mesma forma
mencionada anteriormente:
Exemplo: Acessando um elemento de um array associativo
<?php
echo $usuarios[Paulo];
?>
Resumo:
- Para delimitarmos comandos em PHP utilizamos o ponto e vrgula, enquanto que para blocos de
cdigos em estruturas de controle usamos as chaves.
- Comentrios em PHP so marcados por duas barras quando forem comentrios de apenas uma
linha ou delimitados por barra e asterisco e asetrisco e barra quando forem comentrios em mais
de uma linha.
- Em PHP possumos trs estruturas bsicas de dados: Variveis, Constantes e Arrays, sendo
estes ltimos chamados de estruturas compostas, pois podem armazenar mais de um dado ao
mesmo tempo. Todas as estruturas de dados em PHP so representadas pelo sinal de dlar.
9.10 Tipos de Dados Suportados
Existem 3 tipos bsicos suportados pelo interpretador PHP:
- Strings ou texto.
- Numricos inteiros e de ponto flutuante.
- Booleanos
Veremos a seguir cada um destes tipos com maiores detalhes.
Strings
Lgica de Programao


44

Strings podem ser compreendidas como texto. Este texto pode conter qualquer tipo de caractere,
sejam nmeros, letras, acentos, caracteres especiais, etc.
Strings so sempre delimitadas por aspas, que podem ser tanto duplas quanto simples. Os dois
exemplos abaixo so variveis que contm strings em seu valor:
Exemplo: Declarando strings
<?php
$var1 = Teste;
$var2 = Teste;
?>
A diferena no uso das aspas simples ou duplas est na forma como o interpretador PHP tratar o
contedo da string. No caso das aspas duplas poder ocorrer o que chamamos de interpolao,
ou seja, se uma string contiver uma varivel, o interpretador PHP automaticamente converter a
varivel para seu valor. As aspas duplas tambm permitem ao interpretador reconhecer caracteres
especiais, como o caractere de nova linha, por exemplo.
No caso da utilizao de aspas simples a interpolao no ocorre, assim como no ocorre o
reconhecimento de caracteres especiais. Veja o seguinte exemplo para uma melhor compreenso
das diferenas:
Exemplo: Utilizao de aspas simples e duplas
<?php
$var1 = teste;
$var2 = teste;

echo Isto um $var2;
echo Isto um $var1;
?>
O primeiro comando echo resultar no texto:

Isto um teste

Enquanto que o segundo produzir como resultado:
Isto um $var1
Numricos
Numricos so os tipos que representam nmeros. So eles:
- Inteiros
- De ponto flutuante, tambm conhecidos como float ou double.

Tipos numricos so representados pela ausncia de aspas:
Exemplo: Declarando variveis numricas
Lgica de Programao


45


<?php
$var1 = 10;
$var2 = 0.5;
$var3 = -5;
?>
Booleanos
Um tipo booleano o que representa apenas dois valores possveis: verdadeiro ou falso.
Normalmente estes valores so representados pelas palavras reservadas TRUE e FALSE:
Exemplo: Declarando uma varivel booleana
<?php
$ativo = TRUE;
?>
importante ressaltar que o interpretador PHP sempre considerar um valor como sendo
verdadeiro, a no ser nos seguintes casos:
- O booleano FALSE
- O inteiro 0 (zero)
- O float 0.0
- A string vazia ou
- A string 0 ou 0
- Um array vazio

Converso de tipos
A exemplo de outras linguagens web, PHP procura fazer a converso de tipos automaticamente.
Exemplo: converso automtica de tipos
<?php
$var1 = 1;
$var1 += 5;
$var1 += 2.7;
?>

Neste exemplo nossa varivel $var1 comea contendo uma string. Na segunda linha ela passa a
conter um inteiro, enquanto que a partir da terceira linha seu valor passa a ser um float.

Tambm possvel alterar o tipo de dado de uma varivel utilizando-se o comando settype, que
possui a seguinte sintaxe:
settype(varivel, tipo);

O parmetro tipo deve conter um destes possveis valores:
Lgica de Programao


46

- Boolean
- integer
- float
- string

Sendo assim, nosso exemplo de transformao de tipos poderia ser reescrito de forma no ser
necessrio modificar o valor da varivel:
Exemplo: modificando o tipo de uma varivel com a funo settype

<?php
$var1 = 1;
settype($var1, integer);
settype($var1, float);
?>
Resumo
- PHP suporta os seguintes tipos bsicos: string, numrico e booleano.
- Para realizar a converso entre tipos efetuamos operaes com a varivel ou utilizamos o
comando settype.
9.11 Estruturas de Controle
Estruturas de controle so comandos que nos permitem controlar a forma como nosso programa
ser executado. Existem dois tipos de estruturas de controle:
- Condicionais
- Loops
Veremos agora cada uma das estruturas com mais detalhes.
Condicionais
Estruturas condicionais, como o prprio nome j diz, so estruturas que impem uma condio
para que um ou mais comandos sejam executados.
So elas:
If Sintaxe:
if (condio)
{
comandos
}
Descrio:
O if a estrutura condicional mais simples. Os comandos contidos no bloco delimitado pelas
chaves s sero executados no caso da condio ser verdadeira.
Exemplo: Utilizando uma condicional if
Lgica de Programao


47

if ($usuario == Paulo)
{
echo Ol, Paulo.;
}

O if suporta, ainda, mltiplas condies e o que fazer se a condio for falsa. Isto feito atravs
das condies else if e else:
if (condio1)
{
comandos
}
else if (condio2)
{
comandos
}
else
{
comandos
}

Switch sintaxe:

switch(varivel)
{
case valor1:
comandos
break;

case valor2:
comandos
break;

default:
comandos
}

Descrio:

O condicional switch comumente utilizado para evitar instrues if-else if muito longas, ou seja,
quando queremos testar uma gama muito grande de condies.
Cada instruo case testa pela igualdade da varivel com o valor. Note que a limitao que ocorre
com o condicional switch que apenas a igualdade testada. A instruo break obrigatria entre
cases, pois ela que separa os blocos de instrues que sero executadas dependendo de cada
condio.
A instruo default opcional e diz para o interpretador PHP o que fazer se todas as condies
expostas nas instrues case forem falsas.
Exemplo: Utilizando uma condicional switch
Lgica de Programao


48


switch($usuario)
{
case Paulo:
echo Ol Paulo.;
break;

case Joo:
echo Ol Joo;
break;

default:
echo Usurio desconhecido;
}
Loops (laos de repetio)
Loops so estruturas que causam a repetio de uma srie de instrues dependendo ou no de
uma condio. So elas:

For sintaxe:

for (inicializao_varivel; condio_varivel; operao)
{
comandos
}
Descrio:
Um loop for uma estrutura de controle que causar a repetio de comandos com um nmero
finito de iteraes. Para isso criamos uma varivel contadora, testamos uma condio e a
incrementamos ou decrementamos para que o loop tenha continuidade.

Exemplo: Utilizando um loop for


for ($c = 0; $c < 10; $c++)
{
echo Esta a $c iterao de nosso loop de exemplo.;
}

Em nosso exemplo teremos 10 iteraes em nosso loop (de 0 a 9).
While sintaxe:

while(condio)
{
comandos
}

Lgica de Programao


49

Descrio:

Um loop while executado quantas vezes forem necessrias at que a condio especificada seja
satisfeita (seja verdadeira).
Exemplo: Utilizando um loop while


$c = 0;

while ($c < 10)
{
echo Esta a $c iterao de nosso loop de teste.;
$c++;
}
Note que para reproduzir o comportamento de nosso loop for com um loop while precisamos
incluir duas instrues explcitas:
Na primeira linha inicializamos nossa varivel com o valor zero. Se esta linha estivesse dentro do
bloco a ser executado pelo loop teramos o que chamamos de loop infinito, pois a cada iterao a
varivel seria reinicializada com o valor zero e, portanto, seria sempre menor do que 10.
Na ltima linha de nosso bloco de instrues incrementamos a varivel (o equivalente operao
$c = $c + 1;). Se esta linha estivesse fora do bloco a ser executado pelo loop tambm teramos um
loop infinito, pois o incremento jamais aconteceria e a varivel seria sempre menor do que 10.

do-while sintaxe:
do
{
comandos
}
while (condio)
Descrio:
O loop do-while extremamente parecido com o loop while, mas possui uma diferena
importantssima: o bloco de comandos ser executado sempre pelo menos uma vez, j que a
condio testada apenas no final da primeira iterao.
Exemplo: Utilizando um loop do-while
$c = 0;
do
{
echo Esta a $c iterao de nosso loop de teste.;
$c++;
}
while ($c < 10)

Note que se tivssemos inicializado a nossa varivel contadora com o valor 1 e testssemos
condio $c < 1 ainda assim teramos uma execuo do loop, pois a condio s comea a ser
testada aps a primeira iterao.
Lgica de Programao


50

Arrays (vetores e matrizes)
Para sabermos quantos elementos existem em um array utilizamos funo count:
count (array [, modo]);

Exemplo: Retornando o nmero de elementos em um array

$numero_usuarios = count ($usuarios);

O parmetro modo opcional e pode conter um dos seguintes valores:

1 ou COUNT_RECURSIVE Conta recursivamente o nmero de elementos em um array
multidimensional.
0 (zero) o modo default, ou seja, faz a contagem de forma no-recursiva, sendo o array
multidimensional ou no.
Obtendo-se o nmero de elementos de um array temos condies de percorrer um array com um
loop for:
Exemplo: percorrendo um array com um loop for
for ($c = 0; $c < count($usuarios); $c++)
{
echo Ol, .$usuarios[$c].<BR>;
}

Note que esta forma de percorrer um array, ao contrrio do loop foreach, s funcionar com arrays
de ndices numricos.
Funes (subrotinas)
A sintaxe bsica para definir uma funo :

function nome_da_funo([arg1, arg2, arg3]) {
Comandos;
... ;
[return <valor de retorno>];
}

Lgica de Programao


51

Qualquer cdigo PHP vlido pode estar contido no interior de uma funo. Como a checagem de
tipos em PHP dinmica, o tipo de retorno no deve ser declarado, sendo necessrio que o
programador esteja atento para que a funo retorne o tipo desejado. recomendvel que esteja
tudo bem documentado para facilitar a leitura e compreenso do cdigo. Para efeito de
documentao, utiliza-se o seguinte formato de declarao de funo:

tipo function nome_da_funcao(tipo arg1, tipo arg2, ...);

Este formato s deve ser utilizado na documentao do script, pois o PHP no aceita a declarao
de tipos. Isso significa que em muitos casos o programador deve estar atento ao tipos dos valores
passados como parmetros, pois se no for passado o tipo esperado no emitido nenhum alerta
pelo interpretador PHP, j que este no testa os tipos.
Lgica de Programao


52

Unidade 10 - Linguagem C
A linguagem C foi primeiramente criada por Dennis M. Ritchie e Ken Thompsom no laboratrio
Bell em 1972, baseada na linguagem B de Thompson que era uma evoluo da antiga linguagem
BCPL.
A linguagem ficou contida nos laboratrios at o final da dcada de 70, momento que comeou a
popularizao do sistema operacional UNIX e consequentemente o C (o UNIX desenvolvido em
C).
As principais caractersticas da linguagem C so:
A unio de conceitos de linguagem de montagem e programao de alto nvel (o
programador usufrui recursos de hardware sem a necessidade de conhecer o assembly da
mquina);
Linguagem compilada;
Linguagem estruturada;
Possui poucos comandos;
No possui crtica eficiente para erros de execuo;
Uma linguagem em constante evoluo. Existem verses orientadas a objeto e visuais
como C++ e C++ Builder, entre outras.
10.1 Estrutura bsica de um programa em C
Um programa em C consiste em uma ou vrias funes, uma das quais precisa ser denomindada
main. O programa sempre comear executando a funo main. Definies de funes adicionais
podem preceder ou suceder a funo main.
Para escrever um programa em linguagem C necessrio seguir algumas regras gerais:
Toda funo deve ser iniciada por uma chave de abertura { e encerrada por uma chave de
fechamento };
Toda funo sucedida de parntesis ( );
Todo programa dever conter a funo main;
As linhas de cdigo so sempre encerradas por um ; (ponto-e-vrgula) ;
A formatao dos programas completamente livre, mas temos por convenincia manter a
legibilidade;
Os comandos so executados na ordem em que foram escritos;
Os comentrios devem ser delimitados por /* no incio e */ no final. Podem ser usados
tambm os caracteres // para comentrios de uma linha.
Sintaxe bsica:
Lgica de Programao


53

/* Os comentrios podem ser colocados em qualquer parte do programa */
Declarao de variveis globais
void main (void)
{
Declarao de variveis locais
...
Comandos;
...
}

Tipo funo (lista de argumentos)
{
Declarao das variveis locais funo
...
Comandos;
...
}
Exemplo de um programa em C:
#include <stdio.h>
#include <conio.h>
float processa(float r); //declarao da funo processa

void main (void) // funo principal main
{
float raio, area; //delcarao de variveis locais
clrscr (); // comando para limpar a tela
printf(Raio: );
scanf(%f, &raio);
area = processa(raio);
printf(Area: %f, rea);
getche();
}

float processa (float r) //implementao da funo processa
{
float a; //declarao de variveis locais
a=3.1415*r*r;
return(a);
}

10.2 Comando if
O comando if instrui o computador a tomar uma deciso simples. Se o valor entre parnteses da
expresso de controle for verdadeiro ele executa as instrues, caso seja falso, as instrues
sero ignoradas, ou executadas as que esto contidas no bloco do else.
O comando if encadeado e o comando switch possuem a mesma sintaxe da linguagem PhP.

Exemplo:
if (x%2)
Lgica de Programao


54

printf (x impar);
else
printf (x par );

10.3 Estruturas de repetio
Comando for:
for (inicializao; teste; incremento)
{
comandos;
}
Exemplo:
for (a=1; a<100; a++)
{
printf(\n %i, a);
}

Comando While sintaxe:
while (expresso teste)
{
comandos;
}
Exemplo:
while (conta < 10)
{
total = total + conta;
printf(conta = %i, total = %i, conta, total);
conta++
}

Comando do..while:
do
{
comandos;
} while (expresso teste);

Exemplo:
do
{
y--;
x++;
} while (y);

10.4 Arrays (vetores e matrizes)
Lgica de Programao


55

Um vetor ou matriz um tipo de dado usado para representar uma certa quantidade de valores
homogneos.
A linguagem C no valida limites dos vetores, cabe ao programador verificar o correto
dimensionamento. O primeiro ndice o zero. Vetores possuem uma ou mais dimenses, como
conveno, os vetores bidimensionais so chamados de matrizes.
Declarao:
tipo variavel [tamanho]; //vetor
tipo variavel [tamanho] [tamanho]; //matriz

10.5 Funes (subrotinas)
Uma funo uma unidade de cdigo de programa autnoma desenhada para cumprir uma tarefa
particular.
A funo recebe um certo nmero de parmetros e retorna apenas um valor.
Da mesma maneira que so declaradas as variveis, deve-se declarar a funo. A declarao de
uma funo chamada de prottipo e uma instruo geralmente colocada no incio do programa
que estabelece o tipo da funo e os argumentos que ela recebe.

Declarao
tipo nome_funo (declarao dos parmetros)

void main(void)
{
a=nome_funo(lista dos parmetros);
}

tipo nome_funo(lista dos parmetros)
{
declarao das variveis locais
comandos;
return (valor);
}

O tipo de uma funo determinado pelo tipo de valor que ela retorna pelo comando return e no
pelo tipo de seus argumentos.
Lgica de Programao


56

Unidade 11 - Fundamentos Orientao a
Objetos
Orientao a Objetos o nome que os pesquisadores da computao, na dcada de 70, usaram
para batizar este novo paradigma. Esse nome foi dado porque, de acordo com a viso de mundo
desses pesquisadores, tudo objeto. Ou ao mnimo, se pretende que seja.
Um paradigma uma maneira diferente de se tentar enxergar uma mesma coisa, um mesmo
mundo. O paradigma da Orientao a Objetos (OO) busca bases filosficas para tentar traduzir um
mundo mais humano s instrues que o processador realmente entende. E so de viagens deste
tipo, combinadas estrutura de linguagens imperativas, como o C ou Pascal, que surgem as
linguagens orientadas a objetos. E estas ltimas se responsabilizaram pela existncia da maioria
dos grandes softwares produzidos nos dias atuais em todo o mundo.
A Crise do Software, ocorrida entre as dcadas de 1960 e 1970, caracterizou-se principalmente
por um motivo: complexidade. O modelo de desenvolvimento de sistemas da poca j no atendia
demanda e no conseguia suprir, de forma adequada, todas as necessidades e/ou tarefas que
envolviam a construo de um sistema de informao. Essa forma de trabalho acarretava diversos
problemas, tais como:
Falta de produtividade das equipes;
Falta de qualidade e confiabilidade do software;
Grande dificuldade de manuteno;
Atraso na entrega do software ao usurio;
Tempo de vida do software curto;
Custos elevados de desenvolvimento e, principalmente, de manuteno.
Toda essa situao acabou levando os profissionais da poca a buscar uma soluo alternativa,
pois a complexidade dos sistemas j havia chegado a tal ponto que nem os programadores
conseguiam domin-la mais. Sabia-se que as linguagens estruturadas, bem como o prprio
paradigma, no davam mais suporte s necessidades, e esta, possivelmente, tenha sido a
principal causa do surgimento da Orientao a Objetos.
O desenvolvimento orientado a objetos impe (implicitamente) uma disciplina que diminui, se no
todos, a grande maioria dos esforos inteis provenientes da programao estruturada e/ou
tcnicas baseadas em banco de dados. Problemas, que muitas vezes, so complicados de serem
resolvidos pela programao estruturada, so facilmente solucionados pela orientao a objetos.
Na Orientao a Objetos no existe um conceito de sistema, como na viso estruturada. Isto se
deve ao fato de que aqui a nfase em objetos e classes, e no em sistemas e subsistemas. Um
programa ser ento um grande objeto composto de outros objetos formando assim o que se
chama de mecanismo, o qual define um contexto de negcio e seus respectivos cenrios.
11.1 Conceitos bsicos
Lgica de Programao


57

Para compreender a essncia da Orientao a Objetos necessrio conhecer e entender alguns
conceitos. Alguns deles foram herdados do paradigma estruturado e receberam um enfoque um
pouco diferente de sua aplicao. Para analisar problemas complexos, a metodologia de
orientao a objetos utiliza os seguintes mtodos:
Abstrao;
Hierarquizao;
Encapsulamento;
Modularizao;
Classificao;
Relacionamento.
Abstrao
Abstrao a habilidade de ignorar os aspectos no relevantes de um assunto para o propsito
em questo, tornando possvel uma concentrao maior nos assuntos principais. Quando se quer
diminuir a complexidade, seleciona-se parte do que est sendo analisado, em vez de tentar
compreender o todo.
Selecionados os objetos, necessrio definir os procedimentos desses objetos, ou seja, definir o
comportamento de cada objeto selecionado. Isto vem de acordo com o escopo do sistema. S
sero definidos os procedimentos que ajudaro a resolver o problema pelo qual o sistema est
sendo criado. Definir procedimentos errados pode significar que o escopo do sistema e seus
objetivos no foram bem entendidos e atendidos.
Abstraes permitem gerenciar a complexidade e concentrar a ateno nas caractersticas
essenciais de um objeto. Uma abstrao dependente da perspectiva: o que importante em um
contexto pode no ser importante em outro. Levando em considerao essa definio, pode-se
afirmar que o Princpio da Abstrao aplicado em todos os demais Princpios da Orientao a
Objetos.
Hierarquizao
Aps dividir uma forma complexa em vrias partes, comum a hierarquizao destas partes, ou
seja, ordenao e organizao delas. Essa organizao, normalmente, parte do mais geral para o
mais especfico. o que se chama de hierarquizao. Por exemplo, a figura projeta uma
hierarquia com a percepo do tipo de objeto Pessoa no nvel mais alto, o que significa que
Pessoa um tipo mais geral de objeto que Empregado e que Estudante. Empregado e Estudante
so subtipos de Pessoa, ou, da forma reversa, Pessoa um supertipo de Empregado e de
Estudante. Todavia, hierarquizar um todo no significa priorizar determinada parte.
Lgica de Programao


58


O nvel de detalhe do exerccio da hierarquizao depende nica e exclusivamente do observador.
A hierarquizao de um sistema d origem, normalmente, a poucos subsistemas, porque estes
utilizam elementos comuns. Por exemplo, no microcomputador, o elemento memria utilizado
por todos os componentes: CPU, teclado e vdeo. Outro fato a se considerar para o nvel de
detalhamento da hierarquizao o objetivo e contexto do negcio, ou seja, para um bom
entendimento do problema e, consequentemente, a criao de uma soluo adequada a ele,
importante no perder o foco do objetivo que se deseja e o contexto do negcio ao qual se est
trabalhando. Isso ajuda a delimitar o nvel de detalhe do trabalho de hierarquizao.
Encapsulamento
Encapsulamento um mecanismo que utilizamos para esconder detalhes de estruturas
complexas, que de outra forma iriam interferir na anlise. O objetivo do encapsulamento
restringir ou definir o escopo da informao, para obter legibilidade, manutenibilidade e
principalmente reutilizabilidade no desenvolvimento de sistemas.
O encapsulamento protege os dados de um objeto contra corrupo. Se todos os programas
pudessem acessar os dados de qualquer maneira que os usurios desejassem, os dados
poderiam se facilmente adulterados ou usados para fins indevidos. O encapsulamento protege os
dados contra utilizao arbitrria e que fujam aos objetivos.
O encapsulamento esconde, dos usurios de um objeto, os detalhes da implementao interna.
Os usurios compreendem quais operaes podem ser solicitadas de um objeto, mas no
conhecem os detalhes de como a operao executada. Todas as caractersticas especficas dos
dados de um objeto e a codificao de suas operaes ficam escondidas.
Classificao
Classificar associar o objeto analisado a uma determinada categoria. Cada categoria possui
caractersticas prprias. Ao se comparar as caractersticas do objeto analisado com as
caractersticas daquela categoria, que se pode dizer se um objeto pode ser ou no classificado
como pertencente quela categoria, definindo-se assim um tipo de objeto.
Um tipo de objeto uma categoria de objeto.
Lgica de Programao


59

Os tipos de objeto so importantes porque eles criam os elementos conceituais bsicos para se
projetar os sistemas. Na programao baseada em objetos, esses elementos bsicos orientam o
projetista na definio de classes e suas estruturas. Alm disso, os tipos de objeto fornecem os
ndices para a operao do sistema. Por exemplo, operaes tais como Contratar, Promover e
Demitir esto intimamente ligadas ao tipo de objeto Empregado, porque elas alteram o estado de
um empregado. Em outras palavras, um objeto s deve ser manipulado via operaes associadas
ao seu tipo. Sem tipos de objeto, portanto, as operaes no podem ser definidas
adequadamente.
Modularizao
Modularizar juntar partes com algumas semelhanas. Para melhor entendermos um sistema
complexo, juntamos categorias com algumas caractersticas comuns em mdulos.
Este conceito bem empregado na fase de projeto do software. atravs da aplicao dele que
conseguimos organizar melhor os componentes de sistema, auxiliando no entendimento da
construo, da manuteno e, muitas vezes, na implantao do software.
Relacionamento
Para o funcionamento do todo, necessrio que as partes funcionem separadamente, mas em
conjunto. Este funcionamento em conjunto (cooperao) possvel porque as partes se
relacionam entre si. O relacionamento entre os objetos feito atravs de mensagens, passadas de
uma parte para outra. Uma empresa, por exemplo, composta de diversos departamentos,
funcionando autonomamente. Mas, para que a empresa como um todo atinja seu objetivo (ou seja,
lucre), necessrio um relacionamento entre estes departamentos, para que funcionem em
conjunto. Este relacionamento possvel atravs da troca de mensagens entre os integrantes dos
departamentos.
No paradigma da Orientao a Objetos, as mensagens trocadas entre os objetos podem ser
entendidas como solicitaes. Essa solicitao faz com que uma determinada operao seja
ativada. A operao executa o mtodo adequado e, opcionalmente, devolve uma resposta. A
mensagem que constitui a solicitao contm o nome do objeto, o nome da operao e, s vezes,
um grupo de parmetros. Dessa forma, possvel realizar uma modelagem que espelha, o mais
fiel possvel, a realidade. Afinal, empresas, departamentos, setores e pessoas relacionam-se
atravs de mensagens enviadas uns aos outros, ou seja, atravs de solicitaes.
Objetos podem ser muito complexos, porque objetos podem ser feitos de outros objetos, que, por
sua vez, podem ser feitos de outros objetos, e assim por diante. O usurio de um objeto no
precisa tomar conhecimento de sua complexidade interna, apenas precisa saber como se
comunicar com ele e como ele reage.
11.2 Classe
O termo classe se refere implementao, no software, do tipo de objeto. Tipo de objeto uma
noo conceitual. Ele especifica uma famlia de objetos, sem estipular como eles so
implementados. Os tipos de objeto so identificados durante as fases de Levantamento de
Requisito e Anlise. Os detalhes das classes so determinados na Anlise e no Projeto.
Uma classe uma implementao de um tipo de objeto. Ela tem uma estrutura de dados e
mtodos que especificam as operaes que podem ser feitas com aquela estrutura de dados.
Lgica de Programao


60

11.3 Colaborao
Os objetos colaboram entre si, a fim de disponibilizar as funcionalidades requeridas pelo sistema.
Esta disponibilizao de funcionalidades se d atravs de troca de mensagens entre os objetos.
Se um objeto precisa de uma informao que no sua, ou seja, que est em outro objeto, este
deve pedir para ele enviando uma mensagem. Um objeto Aluno, por exemplo, no pode cancelar
sua prpria matrcula. Ele deve enviar uma mensagem ao objeto Setor de Matrculas, solicitando o
cancelamento de sua matrcula.
A seguir, veremos os tipos de colaborao que podem existir entre objetos.
Agregao
Agregar significa juntar, colar, grudar. Neste contexto, dizemos que agregao o ato de agregar
duas ou mais classes para formar uma nova classe, onde podemos identificar um relacionamento
do tipo Todo-Parte. Esse relacionamento (todo-parte) pode ser visto de duas formas:
Composio: quando o todo no existe sem as partes. Por exemplo: um objeto da classe Aluno, para uma
universidade, no existe sem seu Currculo. O Currculo de um Aluno algo pessoal e intransfervel. Se um
Aluno for excludo, seu Currculo deve ser excludo junto.
Referncia: quando o todo somente faz referncia s partes. Por exemplo: um objeto da classe Nota Fiscal
faz referncia a objetos do tipo Produto. A Nota Fiscal composta, entre outras coisas, de uma lista de
produtos, mas se ela for excluda os produtos no precisam ser excludos de seu cadastro original.
Generalizao/Especializao
Especializao quando, dada uma determinada classe ou categoria, criamos uma outra, com
novos atributos ou servios que a tornam mais restrita. Generalizao a operao inversa, ou
seja, a remoo de uma ou mais caractersticas de determinada classe, de modo a formar uma
classe mais abrangente.
importante entender que generalizao o mecanismo para expressar a similaridade entre
classes. Esse princpio permite representar membros comuns, servios e atributos uma s vez.
Permite a reutilizao de especificaes comuns. Por exemplo: uma empresa possui o seu
cadastro de Clientes. Podemos especializar a classe Cliente em Pessoa Fsica e Pessoa Jurdica.
Em programao, o conceito de generalizao visto como herana. Podemos, ento, identificar
basicamente dois tipos de herana: herana de INTERFACE e de IMPLEMENTAO. Herdar uma
interface significa assumir o compromisso de oferecer as operaes definidas pela interface, ou
seja, todos os mtodos declarados. Dessa forma, diz-se que se herda a interface da classe.
Herdar a implementao significa que instncias da classe especializada tero parte de seus
estados definidos e tambm controlados pela classe mais geral, mas em compensao, as
operaes definidas na classe mais geral tambm se aplicam classe especializada, o que
permite reaproveitamento de cdigo.
Polimorfismo
Lgica de Programao


61

Muito provavelmente em alguns dos primeiros programas estruturados que criamos nos
deparamos com uma pequena dvida: ...ser que eu poderia criar um procedimento em que o
nmero de parmetros modificasse em tempo de execuo?. A questo anterior na verdade que
saber se possvel criar uma operao que mude seu cdigo em tempo de execuo. Esse tipo
de questionamento o princpio do polimorfismo. Ou seja, fazer a mesma coisa de vrias formas
ou de forma diferente (poli = muito; morfismo = formas).
A grande vantagem de serem permitidas implementaes de polimorfismo a flexibilidade. Por
exemplo: Levando em considerao o desenho abaixo Um Aluno comunica-se com o Setor de
Matrculas podemos entender que um Aluno pode solicitar a realizao de sua matrcula, em um
determinado curso ou disciplinas, para o Setor de Matrculas. Contudo, a forma com que sua
matrcula vai se realizar vai depender do nvel de ensino do curso em que ele quer se matricular:
extenso, especializao, graduao, etc.

Para a matrcula em um curso de extenso necessita-se somente do nome e do RG da pessoa. J
para a matrcula de um curso de especializao necessrio o RG e a identificao do curso que
a pessoa deseja seguir. E para a matrcula em um curso de graduao precisa-se somente do RG
da pessoa e do cdigo da disciplina que ela deseja cursar. Somente com o polimorfismo que se
pode realizar a mesma ao no caso aqui se trata da ao de Matricular de vrias formas
distintas, dando maior flexibilidade ao sistema.


11.4 Benefcios da Orientao a Objetos
A programao orientada encapsula dados (atributos) e mtodos (comportamentos) em objetos;
os dados e os mtodos de um objeto esto intimamente associados entre si.
Esto listados a seguir os principais ganhos para o desenvolvedor, caso este troque a Metodologia
Tradicional pela Orientada ao Objeto:
Exatido Devido caracterstica do desenvolvimento estruturado, onde se elabora um projeto e
DEPOIS se faz os programas, podemos ter no final um sistema que no atenda perfeitamente
seus objetivos depois de implementado. No desenvolvimento OOP, o desenvolvimento pode ser
feito de maneira quase que interativa com o usurio, o que faz com que este risco caia
significativamente. A pouca quantidade de cdigo programvel tambm reduz os problemas
inerentes s mudanas das especificaes durante o desenvolvimento do projeto.
Potencialidade Definimos como potencialidade, a forma como o programa reage aos erros
imprevistos tais como uma falha na impressora, ou um disco cheio. Quanto maior for a
potencialidade, maior a capacidade do programa em causar o menor dano possvel aos dados e
evitar uma sada drstica do sistema.
Lgica de Programao


62

Extensibilidade Dizemos que quanto maior for a extensibilidade do software, maior ser sua
capacidade em adequar-se as especificaes definidas pelos analistas.
Reutilizao A capacidade de se otimizar a produtividade do programador depende diretamente
da maneira como o software disponibiliza a reutilizao do cdigo gerado. De fato, a maioria dos
programadores profissionais j reutiliza cdigos criados, porm a perfeita reutilizao consiste na
utilizao COMPLETA de um cdigo gerado para algum sistema SEM qualquer outra adaptao
prvia.

Exerccios
Descrever os atributos de uma classe Pessoa.
Descrever os atributos de uma classe Carro.
Descrever os atributos de uma classe ContaCorrente.
Descrever os mtodos de uma classe Pessoa.
Descrever os mtodos de uma classe Carro.
Descrever os mtodos de uma classe ContaCorrente.

Lgica de Programao


63

Unidade 12 - Exerccios de Fixao
1. Escreva um algoritmo para calcular a mdia entre dois nmeros quaisquer.
2. Escreva um algoritmo para calcular a rea de um tringulo, exibindo o resultado
final.
3. Escreva um algoritmo para calcular o valor de y como funo de x, segundo a
funo y(x)=3x+2, num domnio real.
4. Escreva um algoritmo para efetuar a leitura de um nmero inteiro e apresentar o
resultado do quadrado deste nmero.
5. Escreva um algoritmo para ler dois nmeros quaisquer, calcular a soma deles e
aps mostrar os nmeros lidos e o resultado da soma precedido da palavra "Resultado:".
6. Escreva um algoritmo para ler dois nmeros quaisquer, dividir o primeiro pelo
segundo. Mostrar os nmeros lidos e o resultado calculado.
7. Escreva um algoritmo para ler trs nmeros quaisquer e calcular a mdia aritmtica
entre eles. Escrever os nmeros lidos e a mdia calculada.
8. Escreva um algoritmo para ler dois inteiros (variveis OP1 e OP2) e efetuar as
operaes de adio, subtrao, multiplicao e diviso de OP1 por OP2 apresentando ao
final os quatro resultados obtidos.
9. Escreva um algoritmo para ler dois inteiros (variveis OP1 e OP2) e imprimir o
resultado do quadrado da diferena do primeiro valor pelo segundo.
10. Escreva um algoritmo para ler dois nmeros. Multiplicar o primeiro por 4 e o
segundo por 6. Calcule a mdia aritmtica dos resultados obtidos. Escrever os valores lidos,
os calculados e a mdia aritmtica.
11. Escreva um algoritmo para ler os seguintes nmeros: OP1, OP2 e OP3. Aps,
calcular o valor de RESULTADO segundo a expresso:
12. RESULTADO = OP1^2 - 4OP2*OP3 e mostrar os valores lidos e o resultado.
13. Escreva um algoritmo para calcular e escrever o consumo mdio de um automvel
(medido em Km/l), fornecida a distncia total percorrida e o volume do combustvel
consumido para percorr-la (medido em litros).
14. Escreva um algoritmo para calcular a mdia de quatro nmeros inteiros e exibir o
resultado final.
15. Faa um algoritmo que leia trs notas de um aluno e calcule e escreva a mdia final
deste aluno. Considerar que a mdia ponderada e que os pesos das notas so 2, 3 e 5,
respectivamente.
16. Escreva um algoritmo para calcular a funo f(x,y)=2x+3y2, num domnio real.
Lgica de Programao


64

17. Escreva um algoritmo que efetue e clculo do salrio lquido de um professor. Para
fazer este programa voc dever possuir alguns dados, tais como: valor da hora aula,
nmero de aulas dadas no ms e percentual de desconto do INSS. Em primeiro lugar, deve-
se estabelecer qual ser o seu salrio bruto para efetuar o desconto e ter o valor do salrio
lquido. Ao final do algoritmo deve ser mostrado o salrio bruto e o salrio lquido do
professor.
18. Faa um algoritmo que calcule a mdia ponderada de um aluno, a partir de suas 3
notas obtidas no curso, sabendo-se que a primeira avaliao tem peso 2, a segunda tem
peso 4 e a terceira tem peso 4. Mostre, ao final, a mensagem : A MEDIA FINAL DE ... FOI
... . Informar tambm se o aluno foi aprovado, mostrando a mensagem APROVADO caso
a nota final seja maior ou superior a 7,0.
19. Modifique o algoritmo da mdia do aluno para informar:
APROVADO ............ caso a nota final esteja no intervalo [10, 7]
RECUPERAO...... caso a nota final esteja no intervalo [5, 7)
REPROVADO .......... caso a nota final esteja no intervalo [0, 5)
20. Faa um algoritmo que leia 2 valores numricos e um smbolo. Caso o smbolo seja
um dos relacionados abaixo efetue a operao correspondente com os valores. Ateno
para a diviso por 0!
+ operao de soma
- operao de subtrao
* operao de multiplicao
/ operao de diviso
21. Dados 3 valores A, B, C, verifique se podem ser valores de lados um tringulo e, se
for, determine se o tringulo equiltero, issceles ou escaleno.
22. Sejam 3 nmeros distintos A, B, C. Coloque-os em ordem crescente, utilizando
seleo encadeada (ou aninhada).
23. Faa um programa que l dois valores, o primeiro servindo de indicador de
operao e o segundo correspondendo ao raio de uma circunferncia. Caso o primeiro valor
lido seja igual a 1, calcular e imprimir a rea desta circunferncia. Se o valor lido for 2,
calcular e imprimir o permetro da circunferncia. E se o valor lido for diferente destes dois
valores, imprimir uma mensagem dizendo que o indicador de operao foi mal fornecido.
24. Uma loja fornece 5% de desconto para funcionrios e 10% de desconto para
clientes especiais. Faa um programa que calcule o valor total a ser pago por uma pessoa. O
programa dever ler o valor total da compra efetuada e um cdigo que identifique se o
comprador um cliente comum ou um dos dois tipos de clientes que recebem desconto.
25. Construa um programa que receba os nomes de 5 clientes de uma loja e o valor
(em reais) que cada um destes clientes pagou por sua compra. O programa dever informar:
a) o valor total pago pelos 5 clientes;
b) o valor da compra mdia efetuada;
c) nome dos clientes que efetuaram compras superiores a 20 reais;
d) o nmero de clientes que efetuaram compras inferiores a 50 reais.
Lgica de Programao


65

26. A partir do preo vista de um determinado produto, calcular o preo total a pagar e
o valor da prestao mensal, referentes ao pagamento parcelado. Se o pagamento for
parcelado em trs vezes dever ser dado um acrscimo de 10% no total a ser pago. Se for
parcelado em 5 vezes, o acrscimo de 20%.
27. O departamento que controla o ndice de poluio do meio ambiente fiscaliza 3
grupos de indstrias que so altamente poluidoras do meio ambiente. O ndice de poluio
aceitvel varia de 0.05 at 0.25. Se o ndice sobe para 0.3 as indstrias do 1 grupo so
intimadas a suspenderem suas atividades; se o ndice sobe para 0.4, as do 1 e do 2 grupos
so intimadas a suspenderem suas atividades; e se o ndice sobe para 0.5, todos os trs
grupos devem ser notificados a paralisarem suas atividades. Escreva um programa que l o
ndice de poluio medido e emite a notificao adequada aos diferentes grupos de
empresas.
28. Faa um programa que l 4 valores I, A, B e C onde I um nmero inteiro e positivo
e A, B, e C so quaisquer valores reais. O programa deve escrever os valores lidos e:
a) se I = 1, escrever os trs valores A, B e C em ordem crescente;
b) se I = 2, escrever os trs valores A, B e C em ordem decrescente;
c) se I = 3, escrever os trs valores A, B, e C de forma que o maior valor fique entre os
outros dois;
d) se I no for um dos trs valores acima, dar uma mensagem indicando isto.
29. Fazer um programa para imprimir o conceito de um aluno, dada a sua nota. Supor
notas inteiras somente. O critrio para conceitos o seguinte:
nota inferiores a 3 - conceito E
nota de 3 a 5 - conceito D
notas 6 e 7 - conceito C
notas 8 e 9 - conceito B
nota 10 - conceito A
30. Elabore um algoritmo que verifique se um dado nmero inteiro positivo PAR ou
MPAR.
31. Escreva um algoritmo que leia um nmero n (nmero de termos de uma progresso
aritmtica), a1 (o primeiro termo da progresso) e r (a razo da progresso) e escreva os n
termos desta progresso, bem como a soma dos elementos.
32. Escreva um algoritmo que l um valor n inteiro e positivo e que calcula a seguinte
soma:
S := 1 + 1/2 + 1/3 + 1/4 + ... + 1/n
O algoritmo deve escrever cada termo gerado e o valor final de S.
33. Escreva um algoritmo que leia um nmero n que indica quantos valores devem ser
lidos a seguir. Para cada nmero lido, mostre uma tabela contendo o valor lido e o fatorial
deste valor.
34. Escreva um algoritmo que leia um valor N inteiro e positivo e que calcule e escreva
o valor de EX.
EX = 1 + 1 / 1! + 1 / 2! + 1 / 3! + 1 / N!
Lgica de Programao


66

35. Faa um algoritmo que mostre os conceitos finais dos alunos de uma classe de 75
alunos, considerando:
i. os dados de cada aluno (nmero de matrcula e nota numrica final) sero
fornecidos pelo usurio
ii. a tabela de conceitos segue abaixo:
Nota Conceito
de 0,0 a 4,9 D
de 5,0 a 6,9 C
de 7,0 a 8,9 B
de 9,0 a 10,0 A
36. Foi feita uma estatstica nas 20 principais cidades brasileiras para coletar dados
sobre acidentes de trnsito. Foram obtidos os seguintes dados:
b. cdigo da cidade
c. estado (RS, SC, PR, SP, RJ, ...)
d. nmero de veculos de passeio (em 2007)
e. nmero de acidentes de trnsito com vtimas (em 2007)
Deseja-se saber:
i. qual o maior e o menor ndice de acidentes de trnsito e a que cidades
pertencem
ii. qual a mdia de veculos nas cidades brasileiras
iii. qual a mdia de acidentes com vtimas entre as cidades do Rio Grande do
Sul.
37. Faa um algoritmo que leia um indeterminado nmero de linhas contendo cada uma
a idade de um indivduo. A ltima linha, que no entrar nos clculos, contm o valor da
idade igual a zero. Calcule e escreva a mdia das idades deste grupo de indivduos.
38. Imagine uma brincadeira entre dois colegas, na qual um pensa um nmero e o outro
deve fazer chutes at acertar o nmero imaginado. Como dica, a cada tentativa dito se o
chute foi alto ou baixo. Elabore um algoritmo dentro desse contexto, que leia o nmero
imaginado e os chutes, ao final mostre quantas tentativas foram necessrias para descobrir
o nmero.
39. Construa um algoritmo que permita fazer um levantamento do estoque de vinhos de
uma adega, tendo como dados de entrada tipos de vinho, sendo: Tpara tinto, B para
branco e R para rose. Especifique a porcentagem de cada tipo sobre o total geral de vinhos;
a quantidade de vinhos desconhecida, utilize como finalizador F de fim.
40. Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram
ou no de um novo produto. Para isso, forneceu o sexo do entrevistado e sua resposta (sim
ou no). Este programa dever ser executado at que o sexo X seja informado pelo usurio,
encerrando, assim sua execuo. Calcule e escreva os itens que seguem:
o nmero de pessoas que responderam sim;
Lgica de Programao


67

o nmero de pessoas que responderam no;
a porcentagem de pessoas do sexo feminino que responderam sim; a porcentagem de
pessoas do sexo masculino que responderam no.
41. Leia dez elementos de um vetor.
42. Leia oito elementos de um vetor A. Construa um vetor B de mesma dimenso com
os elementos do vetor A multiplicados por trs. Apresente o vetor B.
43. Leia dois vetores A e B com quinze elementos cada. Construa um vetor C, sendo
este a juno dos dois vetores. Desta forma, C dever ter o dobro de elementos de A e B.
44. Leia vinte elementos de um vetor A e construa um vetor B de mesma dimenso com
os mesmos elementos de A, sendo que estes devero estar invertidos, ou seja, o primeiro
elemento de A passa a ser o ltimo de B. O segundo elemento de A passa a ser o penltimo
de B e assim por diante. Apresente os dois vetores.
45. Leia doze elementos de um vetor coloc-los em ordem decrescente e apresente os
elementos ordenados.
46. Leia um vetor A com doze elementos. Aps sua leitura, coloque os seus elementos
em ordem crescente. Depois leia um vetor B tambm com doze elementos. Coloque os
elementos de B em ordem crescente. Construa um vetor C, onde cada elemento de C a
soma do elemento correspondente de A com B. Apresente os valores de C.
47. Escreva uma matriz que leia uma matriz M(6,6) e calcule as somas das partes
indicadas:
a. Acima da diagonal secundria.
b. Abaixo da diagonal principal.
c. A esquerda abaixo da diagonal principal e acima da diagonal secundria.
d. Acima das diagonais principal e secundria.
Escreva M e as somas calculadas.
48. Considerando uma matriz M(5,5), efetue as seguintes somas:
a. soma dos elementos da linha 3;
b. soma dos elementos da coluna 5;
c. soma dos elementos da diagonal principal (i=j);
d. soma dos elementos da diagonal secundria (i+j=n+1);
e. soma dos elementos da matriz toda.
Escreva as somas calculadas.
49. Escreva uma matriz M(5,3) e a escreva. Verifique, a seguir, quais elementos de M
que esto repetidos e quantas vezes cada um deles repetido com uma mensagem dizendo
que aparece X vezes em M.


Lgica de Programao


68

Você também pode gostar