Você está na página 1de 19

Construo de Algortmos

0
Curso Superior de Tecnologia em Anlise e Desenvolvimento
de Sistemas

Coordenador: Emerson dos Santos Paduan

Autor(a): Simone de Abreu

1
So Paulo - 2016
Sumrio

Introduo lgica de programao, tipos de dados, variveis e comandos


de entrada e sada 3
Introduo 3
Introduo lgica de programao 4

Fases de um algoritmo 6
Tipos de Dados 7
Operadores 8

Variveis 11
Atribuio 12
Comandos de Entrada e Sada 12

Bibliografia bsica 18
Bibliografia complementar 18

2
Introduo lgica de programao, tipos de
dados, variveis e comandos de entrada e sada

Introduo

O contedo apresentado nesta unidade tem como objetivo principal apontar os


conceitos que sero abordados, direcionando-o para a consulta do material
completo a ser estudado, por meio de acessos s Bibliotecas Virtuais dispon-
veis na pgina da Universidade Anhembi Morumbi.

Cada tpico aqui abordado dever ser estudado conforme as indicaes desta-
cadas nos links.

Siga os passos abaixo para acessar a Biblioteca da Universidade:

Entre na pgina da Biblioteca da Universidade;

Clique no cone da Biblioteca Virtual 3.0/Ebrary/VTC, conforme figura 1;

Faa o login, se necessrio.

Figura 1- Pgina da Biblioteca da Universidade

3
Introduo lgica de programao

Geralmente, ao se pensar em programao, tem-se uma ideia inicial de ser algo


difcil, complicado e at mesmo chato. Mas programar uma arte! E est dire-
tamente relacionado a explorar a criatividade, a ter concentrao, a aperfeioar
uma habilidade com o passar do tempo e com a prtica.

Desde os tempos primitivos, o homem se utiliza do raciocnio lgico para a rea-


lizao de suas atividades. Isso comprovado pelo fato de ele ter estabelecido
sequncias adequadas para a realizao de suas tarefas com sucesso (PUGA &
RISSETTI, 2009).

Um algoritmo uma sequncia finita de aes (instrues) encadeadas se-


gundo uma determinada lgica, com o objetivo de solucionar um problema es-
pecfico. Ou seja, um algoritmo deve ter uma sequncia de passos logicamente
estabelecidas e com um incio e um fim bem definidos.

J uma instruo a informao que indica a um computador uma ao ele-


mentar a ser executada. A instruo deve ser bem precisa para que o compu-
tador consiga process-la.

Analise o seguinte cenrio:

Um rob est no incio de um labirinto e precisa ser guiado at o


fim dele. Ao formular algumas instrues para o rob comear a
sua jornada, pode-se ter:
Guia: vire direita!
Rob: virando para a direita, virando para a direita, virando
para a direita...
A instruo inicial que o guia deu ao rob no precisa! Portanto,
o rob ficar infinitamente girando para a direita. Uma instruo
mais adequada do guia para o rob seria: vire 90o direita.
Perceba o quanto importante ter clareza na definio das instrues
de um algoritmo!

4
Agora, analise um exemplo clssico de algoritmo: como fazer um bolo de cho-
colate?

Para resolver esse problema, primeiro tem-se de saber o que preciso para
fazer um bolo de chocolate quais ingredientes? Depois preciso saber como
preparar o bolo de chocolate modo de fazer.

Geralmente os ingredientes de um bolo de chocolate so: farinha, ovos, leite,


acar, chocolate, manteiga, maisena e fermento. Mas quais passos devem ser
seguidos para preparar o bolo? Essa ordem o modo de preparo, ou o algo-
ritmo para fazer um bolo de chocolate. Por exemplo:

Bater os ovos com a manteiga


Adicionar o acar e a farinha aos poucos
Adicionar o leite e bater
Adicionar o chocolate
Misturar o fermento
Despejar a mistura em uma forma untada
Levar ao forno para assar por 30 minutos
Retirar do forno e comer

Os passos devem seguir uma sequncia lgica! Se os passos forem invertidos,


provavelmente, ao final, no haver um bolo de chocolate.

Bibliografia a ser acessada

http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788576052074/pages/1

(Captulo 1 do livro Lgica de programao e estruturas de dados


com aplicaes em Java, de Puga e Rissetti).

http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788564574168/pages/1

(Captulo 1 do livro Fundamentos da programao de computado-


res, de Ascencio e Campus).

5
Fases de um algoritmo

A sequncia de fatos que fundamentam a lgica computacional : a entrada dos


dados que sero processados para obter a sada. Os dados que entram em
processamento sofrem transformaes resultantes do processo e uma sada
produzida, representando a soluo de um problema (PUGA & RISSETTI, 2009).

Todo algoritmo atua em um princpio bsico de trs fases (figura 2). So elas:

Figura 2 Fases de um algoritmo

Dado o seguinte problema: Calcular a mdia aritmtica de duas notas. O que


corresponde s fases do algoritmo?

1. Quais so as entradas? As entradas so as duas notas: nota1 e nota2.

2. Quais so as sadas, ou seja, aonde se quer chegar? O que o problema


pede o resultado do clculo da mdia de duas notas.

3. Qual o processamento? O prprio clculo da mdia, onde mdia =


(nota1 + nota2) / 2.

Mas por que identificar primeiro a entrada e a sada? simples: esses dados
estaro bem explcitos no enunciado do algoritmo. Sabendo o ponto de partida
e aonde se quer chegar, s traar o caminho mais adequado.

Bibliografia a ser acessada

http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788576052074/pages/49
(Captulo 5 do livro Lgica de programao e estruturas de dados
com aplicaes em Java, de Puga e Rissetti).

6
Tipos de Dados

Para representar qualquer dado em um algoritmo, utilizam-se as constantes e


os tipos de dados. Os dados so os valores que sero utilizados para a resolu-
o do problema, podendo ser: fornecidos pelo usurio do programa, origina-
dos de processamentos (clculos), entradas de outros programas, entre outros.

Constantes so valores que no sofrem alteraes ao longo do desenvolvi-


mento do algoritmo ou da execuo de um programa. Por exemplo, o valor
3,1415 representa a constante PI e permanecer fixo at o final da execuo do
algoritmo (PUGA & RISSETTI, 2009). Outro exemplo seria o divisor 2 para calcular
a mdia aritmtica entre duas notas. Independentemente dos valores das no-
tas, a diviso sempre ser por dois.

Os tipos de dados representam qualquer dado/informao em um algoritmo.


So classificados como: literal, inteiro, real e lgico.

A linguagem de programao Java ser utilizada como ferramenta para a cons-


truo de algoritmos. Sendo assim, importante saber os tipos de dados mais
utilizados da linguagem. So eles: char, String, int, float, double e boolean.

Bibliografia a ser acessada

http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788576052074/pages/37

(Captulo 4 do livro Lgica de programao e estruturas de dados


com aplicaes em Java, de Puga e Rissetti).

Observe neste captulo a tabela 4.1 Tabela de tipos de dados que


apresenta os tipos de dados primitivos e sua equivalncia na lin-
guagem Java.

A Tabela 1 apresenta exemplos de dados de um algoritmo e os tipos de dados


relacionados.

7
Tabela 1 Representao de dados

Dado/Informao Tipo de dado apropriado

Nomes de empresas, nomes de pessoas String - Uma cadeia de caracteres


e textos representada por aspas ( )

Sexo de pessoa, alternativas de uma char nico caractere represen-


questo tado por apstrofo ( )

Idade de uma pessoa, nmero de uma int


residncia ou qualquer valor pertencente
ao conjunto dos nmeros inteiros

Altura de uma pessoa, peso de um pro- double utiliza notao ponto ( . )


duto e o preo de um carro ou qualquer para separar casas decimais
valor pertencente ao conjunto dos nme-
ros reais.

Qualquer valor verdadeiro ou falso boolean

Operadores

Os operadores so utilizados para representar expresses de clculos, compa-


rao, condio e atribuio em um algoritmo.

Os operadores aritmticos servem para representar qualquer tipo de clculo


matemtico em um algoritmo. So muito parecidos com os operadores da ma-
temtica em si, mas existem algumas diferenas (PUGA & RISSETTI, 2009). Por
exemplo, para representar a multiplicao, utilizado o operador asterisco (*).

Os operadores matemticos mais comuns so: adio, subtrao, multiplicao,


diviso e mdulo.

O operador mdulo (%) utilizado para representar o resto de uma diviso en-
tre valores inteiros. Por exemplo, a operao 23 % 4 tem como resultado 3, que
o resto da diviso de 23 por 4.

8
Bibliografia a ser acessada

http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788576052074/pages/41

http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788576052074/pages/43

(Captulo 4 do livro Lgica de programao e estruturas de dados


com aplicaes em Java, de Puga e Rissetti).

Observe neste captulo o tpico 4.4.2 Operadores aritmticos.


Co-nhea tambm os operadores de incremento e decremento.
Atente-se s representaes em Java.

Observe tambm o Tpico 4.4.5 Precedncia dos operadores.

Os operadores relacionais so utilizados para estabelecer uma relao de com-


parao entre valores ou expresses. O resultado dessa comparao sempre
um valor lgico (booleano) verdadeiro ou falso (true / false) (PUGA & RISSETTI,
2009).

Como operadores relacionais, tem-se: maior, maior ou igual, menor, menor ou


igual, igual a e diferente de.

Bibliografia a ser acessada

http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788576052074/pages/41

(Captulo 4 do livro Lgica de programao e estruturas de dados


com aplicaes em Java, de Puga e Rissetti).

Observe neste captulo o tpico 4.4.3 Operadores relacionais.


Ob-serve que a igualdade representada pelo operador ( == ).
Atente-se s representaes em Java.

9
Os operadores lgicos so utilizados para concatenar ou associar expresses
que estabelecem uma relao de comparao entre valores. O resultado dessas
expresses sempre um valor lgico (booleano) verdadeiro ou falso (true / false)
(PUGA & RISSETTI, 2009).

A tabela-verdade utilizada para avaliar uma expresso lgica. Segundo Forbel-


lone e Eberspcher (2005), uma tabela-verdade o conjunto de todas as possi-
bilidades combinatrias entre os valores de diversas variveis lgicas, as quais
se encontram em apenas duas situaes (V ou F true ou false), e um conjunto
de operadores lgicos.

Como operadores lgicos tem-se:

E conjuno (representao em Java: && ): Se TODAS as expresses


condicionais forem verdadeiras, o resultado VERDADEIRO;

OU disjuno (representao em Java: ||): Se TODAS as expresses


condicionais forem falsas, o resultado FALSO;

NO negao (representao em Java: !): Se a expresso condicional


for falsa, o resultado VERDADEIRO. Caso contrrio FALSO.

A figura 3 apresenta a tabela-verdade para os operadores && , || e !.

Figura 3 Tabela-verdade operadores &&, || e !

Bibliografia a ser acessada


http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788576052074/pages/41
(Captulo 4 do livro Lgica de programao e estruturas de dados
com aplicaes em Java, de Puga e Rissetti).
Observe neste captulo o tpico 4.4.4 Operadores lgicos. Atente-
se s representaes em Java.

10
Variveis

As variveis so utilizadas para representar os dados necessrios para a reso-


luo de um problema. As variveis permitem que dados de entrada ou dados
gerados em um processamento sejam armazenados na memria principal do
computador temporariamente.

No decorrer da execuo de um algoritmo, o valor de uma varivel pode ser


alterado. Da o nome varivel. Mas uma varivel pode assumir apenas um nico
valor a cada instante de tempo.

Bibliografia a ser acessada


http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788564574168/pages/7
http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788564574168/pages/9
(Captulo 1 do livro Fundamentos da programao de computado-
res, de Ascencio e Campos).

Observe neste captulo o tpico 1.5 Conceito de varivel


Observe tambm o tpico 1.7 Formao de identificadores, para
saber as regras de nomeao de variveis.

Uma varivel pode ser usada para armazenar dados de entrada, ento deve-se
definir qual tipo de dado ela vai armazenar. Portanto, toda varivel em um algo-
ritmo deve corresponder a um tipo de dado. Assim, uma varivel do tipo int s
poder armazenar valores do tipo inteiro.

Para declarar uma varivel, utilizar a seguinte sintaxe (figura 4):

Figura 4 Sintaxe de declarao de variveis

O primeiro exemplo de sintaxe utilizado para declarar uma nica varivel. O


segundo exemplo de sintaxe mostra como declarar vrias variveis de um
mesmo tipo de dado.

11
Bibliografia a ser acessada
http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788564574168/pages/31 (Captulo 3 do livro Fundamen-
tos da programao de computadores, de Ascencio e Campos).

Observe neste captulo o tpico 3.4.1 Declarao de variveis em


Java.

Atribuio

O operador de atribuio ( = ) responsvel por armazenar um valor em uma


varivel declarada anteriormente.

Quando um valor atribudo a uma varivel, ela ir guardar esse valor at que
seja modificada. O valor fornecido para uma varivel deve ser compatvel com o
tipo de dado usado na declarao da varivel. Portanto, em uma varivel do tipo
int, somente se podem atribuir valores inteiros.

A figura 5 apresenta alguns exemplos de atribuio. Supor que a varivel nome


do tipo String, idade int, preco float, sexo char, onibusLotado boolean e
soma float.

Figura 5 Exemplos de atribuio de valores

Comandos de Entrada e Sada

Como Java uma linguagem orientada a objeto, todo o cdigo de um programa


deve estar definido dentro de uma classe. Especificamente, deve estar definido

12
dentro de um mtodo especial da classe chamado main(). Esse mtodo o
ponto de partida na execuo de um programa em Java. A figura 6 apresenta a
estrutura bsica de um algoritmo.

Figura 6 Estrutura de um algoritmo

dentro do bloco ( { } ) do mtodo main() que devem estar as instrues para


a resoluo do algoritmo.

Bibliografia a ser acessada

http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788564574168/pages/31

(Captulo 3 do livro Fundamentos da programao de computado-


res, de Ascencio e Campos).

Observe neste captulo o tpico 3.4 Estrutura sequencial em Java.

O teclado o dispositivo padro de entrada de dados. Os dados lidos do teclado


podem ser armazenados nas variveis declaradas em um algoritmo.

Para realizar a entrada de dados necessrio definir um buffer para guardar os


dados digitados no teclado e depois transferi-los para a memria principal as
variveis do algoritmo. Para usar a classe Scanner preciso importar o pacote
import Java.util.Scanner. A figura 7 apresenta a sintaxe para definir um buffer de
entrada de dados.

13
Figura 7 Definio do buffer de teclado

Para cada tipo de dado, existe um mtodo para realizar a entrada de dados,
conforme apresenta a tabela 2.

Tabela 2 Mtodos para a entrada de dados

Bibliografia a ser acessada


http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788564574168/pages/33 (Captulo 3 do livro Funda-
mentos da programao de computadores, de Ascencio e Cam-
pos).

Observe neste captulo o tpico 3.4.4 Comando de entrada em


Java

Para exibir mensagens em um algoritmo, ser utilizado o comando Sys-


tem.out.println( ). Esse comando permite imprimir no monitor dados de uma
varivel, frases, resultados de processamentos e tambm mensagens para soli-
citar dados de entrada. A figura 8 apresenta a classe AloMundo, que exibe na
tela duas Strings.

Figura 8 Impresso de Strings

14
Aps a execuo do algoritmo AloMundo, tem-se a seguinte sada (figura 9).

Figura 9 Sada do algoritmo AloMundo

Na String de impresso do comando println, pode-se utilizar o operador de con-


catenao (+) para imprimir diferentes tipos de dados, conforme apresenta a
figura 10.

Figura 10 Exemplo de concatenao na String de impresso

Aps a execuo do algoritmo DadosCarro, tem-se a seguinte sada (figura 11):

Figura 11 Sada do algoritmo DadosCarro

15
Bibliografia a ser acessada

http://anhembi.bv3.digitalpages.com.br/users/publica-
tions/9788564574168/pages/33 (Captulo 3 do livro Fundamen-
tos da programao de computadores, de Ascencio e Campos).

Observe neste captulo o tpico 3.4.5 Comando de sada em Java.

A figura 12 apresenta um algoritmo completo, com entrada, processamento e


sada. O algoritmo SomaDasIdades recebe os dados: nome e idade de dois ami-
gos, calcula a soma das duas idades e imprime o resultado no final.

Figura 12 Exemplo de entrada/processamento/sada

Aps a execuo do algoritmo SomaDasIdades, tem-se a seguinte sada (figura


13):

16
Figura 13 Sada do algoritmo SomaDasIdades

17
Bibliografia bsica

ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos de Programao de Compu-


tadores. 2. ed. So Paulo: Pearson Prentice Hall, 2007.

PUGA, S; RISSETTI, G. Lgica de programao e estruturas de dados com aplica-


es em Java. 2. ed. So Paulo: Pearson Prentice Hall, 2009.

Bibliografia complementar

FORBELLONE, A. L. V.; EBERSPCHER, H. F. Lgica de Programao: a construo


de algoritmos e estruturas de dados. 2. ed. So Paulo: Prentice Hall, 2005.

18