Estrutura Condicional: Algoritimo E Lógica Da Programação I Unidade 2

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 46

ALGORITIMO E LÓGICA DA PROGRAMAÇÃO I

UNIDADE 2

ESTRUTURA
CONDICIONAL

DRA. GISLAINE CAMILA LAPASINI LEAL


ME. PIETRO MARTINS DE OLIVEIRA
EXPEDIENTE

DIREÇÃO UNICESUMAR
Reitor Wilson de Matos Silva Vice-Reitor Wilson de Matos Silva Filho Pró-Reitor de Administração Wilson de
Matos Silva Filho Pró-Reitor Executivo de EAD William Victor Kendrick de Matos Silva Pró-Reitor de Ensino de
EAD Janes Fidélis Tomelin Presidente da Mantenedora Cláudio Ferdinandi

NEAD - NÚCLEO DE EDUCAÇÃO A DISTÂNCIA


Diretoria Executiva Chrystiano Mincoff, James Prestes, Tiago Stachon Diretoria de Design Educacional
Débora Leite Diretoria de Graduação e Pós-graduação Kátia Coelho Diretoria de Permanência Leonardo
Spaine Head de Produção de Conteúdos Celso Luiz Braga de Souza Filho Gerência de Produção de Conteúdo
Diogo Ribeiro Garcia Gerência de Projetos Especiais Daniel Fuverki Hey Supervisão do Núcleo de Produção
de Materiais Nádila Toledo Supervisão Operacional de Ensino Luiz Arthur Sanglard

FICHA CATALOGRÁFICA
Coordenador(a) de Conteúdo
Danillo Xavier Saes
Projeto Gráfico e Capa C397 CENTRO UNIVERSITÁRIO DE MARINGÁ.
Núcleo de Educação a Distância. LEAL, Gislaine Camila Lapasini;
Arthur Cantareli, Jhonny Coelho
OLIVEIRA, Pietro Martins de.
e Thayla Guimarães
Estrutura Condicional .
Editoração
Gislaine Camila Lapasini Leal;
Arthur Cantareli Silva Pietro Martins de Oliveira.
Design Educacional
Amanda Peçanha Maringá - PR.: UniCesumar, 2020.
46 p.
Revisão Textual
“Graduação - EaD”.
Nágela Neves da Costa
1. Algoritmos 2. Lógica 3. Programação. EaD. I. Título.
Ilustração
Marta Sayuri Kakitani
Fotos
Shutterstock CDD - 22 ed. 005.1
CIP - NBR 12899 - AACR/2
Impresso por:

Bibliotecário: João Vivaldo de Souza CRB- 9-1679

NEAD - Núcleo de Educação a Distância


Av. Guedner, 1610, Bloco 4Jd. Aclimação - Cep 87050-900 | Maringá - Paraná
www.unicesumar.edu.br | 0800 600 6360
TRAJETÓRIA PROFISSIONAL

Dra. Gislaine Camila Lapasini Leal


Doutora em Engenharia Elétrica e Informática Industrial pela Universidade Tecno-
lógica Federal do Paraná. Mestre em Ciência da Computação pela Universidade
Estadual de Maringá (2010). Graduada em Engenharia de Produção – Software,
pela Universidade Estadual de Maringá (2007) e em Processamento de Dados pelo
Centro Universitário de Maringá (2004). Atualmente, é professora do Departamento
de Engenharia de Produção da Universidade Estadual de Maringá, atuando na área
de Apoio à Tomada de Decisão (Pesquisa Operacional e Gestão de Tecnologia da
Informação). Dedica-se à seguintes áreas de pesquisa: Otimização, Apoio à Tomada
de Decisão em Sistemas de Produção, Startups de Software, Melhoria da Qualidade
e Produtividade no Desenvolvimento de Software e Melhoria de Processos.

http://lattes.cnpq.br/7810321373328408

Me. Pietro Martins de Oliveira


Mestre em Ciência da Computação na área de Visão Computacional, pela Universi-
dade Estadual de Maringá (2015). Graduado em Engenharia de Computação pela
Universidade Estadual de Ponta Grossa (2011). Atuou como analista de sistemas
e programador nas empresas Siemens Enterprise Communications (Centro Inter-
nacional de Tecnologia de Software – CITS, 2011-2012) e Benner Saúde Maringá
(2015). Tem experiência como docente e coordenador dos cursos de Bacharelado
em Engenharia de Software, Sistemas de Informação e Engenharia de Produção.

http://lattes.cnpq.br/1793084774574585
ÍCONES
pensando juntos

Ao longo do livro, você será convidado(a) a refletir, questionar e


transformar. Aproveite este momento!

explorando Ideias

Neste elemento, você fará uma pausa para conhecer um pouco


mais sobre o assunto em estudo e aprenderá novos conceitos.

quadro-resumo

No fim da unidade, o tema em estudo aparecerá de forma resumida


para ajudar você a fixar e a memorizar melhor os conceitos aprendidos.

conceituando

Sabe aquela palavra ou aquele termo que você não conhece? Este ele-
mento ajudará você a conceituá-la(o) melhor da maneira mais simples.

conecte-se

Enquanto estuda, você encontrará conteúdos relevantes


online e aprenderá de maneira interativa usando a tecno-
logia a seu favor.

Quando identificar o ícone de QR-CODE, utilize o aplicativo Unicesumar


Experience para ter acesso aos conteúdos online. O download do aplicativo
está disponível nas plataformas: Google Play App Store
CONTEÚDO

PROGRAMÁTICO
AULA 01
8 AULA 02
9
ESTRUTURA ESTRUTURA
CONDICIONAL CONDICIONAL
SIMPLES

AULA 03
01
15 AULA 04
01
19
ESTRUTURA ESTRUTURA
CONDICIONAL CONDICIONAL
COMPOSTA ANINHADA

AULA 05
01
23 AULA
AULA 01
06
29
ESTRUTURA DE EXERCÍCIOS
DECISÃO MÚLTIPLA RESOLVIDOS
2
ESTRUTURA
CONDICIONAL

PROFESSORES
Dra. Gislaine Camila Lapasini Leal
Me. Pietro Martins de Oliveira

PLANO DE ESTUDO
A seguir, apresentam-se os tópicos que você estudará nesta unidade: • Estrutura condicional • Estrutura
condicional simples • Estrutura condicional composta • Estrutura condicional aninhada • Estrutura de
decisão múltipla • Exercícios resolvidos.

OBJETIVOS DE APRENDIZAGEM
Conhecer a estrutura condicional simples • Conhecer a estrutura condicional composta • Conhecer a
estrutura condicional aninhada • Conhecer a estrutura de decisão múltipla • Elaborar algoritmos uti-
lizando estrutura condicional • Resolver exercícios a fim de aprimorar os conhecimentos adquiridos.
INTRODUÇÃO

Nesta unidade, discutiremos os princípios básicos de algoritmos e lógica


de programação. Os algoritmos constituem o conceito central da progra-
mação e a atividade de programar envolve a construção de algoritmos.
Em geral, são utilizados para a solução de um problema, contudo não se
constituem em única solução, pois podemos ter vários algoritmos que
resolvem o mesmo problema.
Primeiramente, abordaremos o conceito de algoritmos e você desco-
brirá que, empiricamente, já conhece e utiliza algoritmos no seu cotidiano.
Estudaremos os tipos de algoritmos e as formas que podemos utilizar para
representar a solução do problema e, especificamente, trataremos da represen-
tação por meio da linguagem natural, da simbologia e da linguagem restrita.
Para facilitar o processo de ensino-aprendizagem, apresentaremos um
método para a construção de algoritmos que divide os problemas em três
partes: Entrada – Processamento – Saída. Esse método nos auxiliará a sis-
tematizar as informações para a construção de algoritmos.
Ao formular algoritmos, precisamos guardar algumas informações do
problema. Para isso, veremos o conceito de variáveis e constantes. Conhe-
ceremos os tipos de variáveis numéricas, textuais e lógicas e a caracterís-
tica da informação que cada uma delas pode armazenar. Além de guardar
informações, precisaremos obter dados, mostrar mensagens e resultados
de processamento. Dessa forma, estudaremos os comandos relacionados à
entrada de dados, que nos permitem interagir como usuário e atribuir valor
às variáveis, bem como à saída de dados que viabiliza o envio de mensagens
e a exibição dos resultados do processamento.
Construiremos três algoritmos para visualizar a aplicação de cada um
dos conceitos abordados. Após estudarmos esta unidade, você poderá
responder às questões relacionadas ao tema de Algoritmos e Lógica de
Programação I, tais como: que informações são de entrada e quais são de
saída? Que tipo de variável devo utilizar? Como exibir um resultado ao
usuário? Qual o resultado da simulação do algoritmo?
Você também aprenderá os conceitos de variáveis, constantes, expres-
sões, funções, atribuição, comando de entrada, comando de saída e técnicas
de raciocínio lógico para a solução de problemas. Todo este conhecimento
você poderá utilizar para construir os primeiros algoritmos que resolvem
problemas! Vamos lá?!
1
ESTRUTURA
UNIDADE 2

CONDICIONAL

Até o momento, os nossos algoritmos apresentavam um padrão em que, a partir


dos dados de entrada, estes eram processados e, na saída, mostrávamos algumas
informações. O fluxo era seguido sequencialmente, sem nenhum desvio, ou seja,
todas as instruções eram executadas. No entanto, em muitas situações, necessi-
tamos realizar algum teste antes de efetuar um processamento.
Desse modo, analisaremos adiante, a retirada de dinheiro em um caixa eletrôni-
co. Após inserir o cartão, é solicitado que a senha seja digitada. Se ela estiver correta,
poderemos efetuar o saque. Caso a senha esteja errada, receberemos mensagem
informando que a senha é inválida. Notem que, nessa situação, não conseguimos
representar apenas com o conhecimento adquirido na Unidade 1. Em situações
como essa, precisamos utilizar uma estrutura que nos permita fazer verificações
para, então, saber quais instruções devem ser executadas.
A estrutura que permite desviar o fluxo do programa é denominada estrutura
condicional, estrutura de seleção ou estrutura de controle (MANZANO; OLI-
VEIRA, 1997; ASCENCIO; CAMPOS, 2010).
A estrutura condicional consiste em uma estrutura de controle de fluxo que
permite executar um ou mais comandos, se a condição testada for verdadeira, ou
executar um ou mais comandos se for falsa. Essa estrutura divide-se em simples
e composta, as quais veremos a seguir (LOPES; GARCIA, 2002).

8
UNICESUMAR
2
ESTRUTURA

UNIDADE 2
CONDICIONAL
simples

Na estrutura condicional simples, o comando só será executado se a condição


for verdadeira. A sintaxe do comando é:
Se (<Condição>) então
<instruções para condição verdadeira>
Fim_se

A estrutura condicional simples tem por finalidade tomar uma decisão, de


modo que, se a condição que está sendo testada for verdadeira, são executadas
todas as instruções compreendidas entre o Se e o Fim_se (MANZANO; OLI-
VEIRA, 1997). Ao término da execução, o algoritmo segue o primeiro comando,
após o Fim_se. Se a condição testada for falsa, o algoritmo executa a primeira
instrução que se encontra logo após o Fim_se, não executando as instruções
compreendidas entre o Se e o Fim_se.
Analisaremos, agora, o algoritmo apresentado no quadro. Consideremos o valor
de A como 15, dessa forma, ao testar a condição dada pela expressão A > 10,
retorna um valor verdadeiro. Com isso, temos a execução do comando Es-
creva, que está compreendido entre o Se e o Fim_se. Agora, tomemos A com
valor 3. Ao testar a condição A >10, o valor retornado é falso. Deste modo,
não é executada a instrução entre o Se e o Fim_se.
9
HAPPYCODE
Algoritmo exemplo
UNIDADE 2

Var
A : inteiro
Início
Leia(A)
Se(A > 10) então
Escreva(“A é maior que 10”)
Fim_se
Fim
Quadro 1 - Pseudocódigo - Exemplo estrutura condicional simples / Fonte: os autores.

De acordo com Lopes e Garcia (2002), a condição é uma expressão lógica, por-
tanto, ao ser testada, devolve como resposta o valor verdadeiro ou falso.
Uma condição pode ser representada por uma expressão relacional ou por uma
expressão lógica, formada por, pelo menos, duas expressões relacionais. Os ope-
radores relacionais vistos na Unidade 1 são >, <, =, >=, <= e <>. Já
os operadores lógicos são E, OU e NÃO.
Agora, fica mais clara a aplicação dos operadores relacionais e como eles são
utilizados em nossos algoritmos. Alguns exemplos de expressão relacional são:
X > 16
A < B
Sexo = “F”
Resposta <> “Sim”

Quando nossa condição é uma expressão lógica, temos, pelo menos, duas
expressões relacionais que estão ligadas por um operador lógico. Você se recorda
do funcionamento dos operadores lógicos? O operador E resulta em verda-
deiro somente quando as duas condições são verdadeiras, como pode ser visto
na tabela verdade, apresentada a seguir.

10
UNICESUMAR
Operador E

UNIDADE 2
Condição 1 Condição 2 Resultado

Verdadeiro Verdadeiro Verdadeiro


Verdadeiro Falso Falso
Falso Verdadeiro Falso
Falso Falso Falso

Quadro 2 – Tabela verdade: conjunção / Fonte: adaptado de Manzano e Oliveira (1997).

O operador OU resulta em verdadeiro quando, pelo menos, uma das condi-


ções é verdadeira. Sendo o resultado falso apenas quando as duas condições
são falsas simultaneamente, como pode ser visualizado a seguir.

Operador OU

Condição 1 Condição 2 Resultado


Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Verdadeiro
Falso Verdadeiro Verdadeiro
Falso Falso Falso
Quadro 3 - Tabela verdade: disjunção / Fonte: adaptado de Manzano e Oliveira (1997).

O operador NÃO, por sua vez, funciona como a negação do resultado, ou seja,
inverte o resultado lógico. Segundo Manzano e Oliveira (1997), esse operador é
utilizado em situações em que se necessita estabelecer que uma dada condição
deve não ser verdadeira ou deve não ser falsa. A tabela verdade para esse operador
é apresentada no próximo quadro. Observe que o NÃO é um operador unário, ou
seja, tem apenas uma condição (expressão relacional) associada a ele.

Operador NÃO

Condição Resultado
Verdadeiro Falso
Falso Verdadeiro
Quadro 4 - Tabela verdade: negação / Fonte: adaptado de Manzano e Oliveira (1997).
11
HAPPYCODE
A partir do entendimento da tabela verdade, de cada um dos operadores lógicos,
UNIDADE 2

veremos exemplos de expressão lógica:


(X >= 1) E (X <=20)
(Sexo = “F”) OU (Sexo = “f”)
NÃO (X>5)

Note que as expressões lógicas são compostas, utilizando operadores relacio-


nais e lógicos. Agora que conhecemos a sintaxe da estrutura condicional simples
e sabemos como montar condições, formularemos nosso primeiro algoritmo,
contendo desvio de fluxo. O problema consiste em identificar se um número
inteiro é um número par e, então, imprimir a metade do número. Retomando
nossos passos para a construção de algoritmos, temos:
■ Objetivo do algoritmo: verificar se o número é par e imprimir a metade
deste número.
■ Entrada: obter um número.
■ Processamento: verificar se o número é par.
■ Saída: imprimir a metade do número, caso ele seja par.

O que é um número par? É um número inteiro múltiplo de 2, ou seja, um número


cuja divisão por 2 resulte em resto igual a 0. A entrada de dados consiste em obter
um número inteiro, o qual denominaremos de N. O processamento consiste em
encontrar o resto da divisão deste número por 2 e verificar se é igual a 0. Como
faremos isso? Você se recorda de alguma função que o faz? Na Unidade 1, vimos
o operador MOD, que retorna o resto da divisão de dois números inteiros.
Se o resto for igual a 0, calcularemos a metade desse número. E a saída con-
siste em imprimir a metade do número. Se o resto for diferente de 0, não será
executada nenhuma instrução e também não haverá saída. Uma solução para
esse problema é apresentada no quadro seguinte, em que podemos visualizar o
uso da estrutura condicional simples.

12
UNICESUMAR
Algoritmo par

UNIDADE 2
Var
n, resto, metade: inteiro
Início
Escreva(“Digite um número:”)
Leia(n)
resto <- n MOD 2
Se (resto = 0) então
metade <- n / 2
Escreva(“A metade do número é:”, metade)
Fim_se
Fim

Quadro 5 - Pseudocódigo da primeira versão do algoritmo par / Fonte: os autores.

Nesse algoritmo, utilizamos os conceitos que já conhecíamos (variáveis, tipos


de variáveis, atribuição, comando de entrada e saída de dados), agregando a
estrutura condicional.
Em relação ao algoritmo apresentado, podemos colocar uma instrução Es-
creva, após o Fim_se, dizendo que o número é ímpar? Não, pois, para qual-
quer número obtido na entrada, indiferentemente de ser par ou ímpar, a mensa-
gem seria impressa. Devemos lembrar que após o Fim_se, o fluxo do algoritmo
segue, normalmente, executando a instrução.
Por que a variável metade foi declarada como inteira e não como real? A
metade de qualquer número par é sempre um número inteiro. Como a operação é
executada apenas se o número é par, não há problema. Se a instrução que calcula
a metade fosse executada fora da estrutura condicional, a variável deveria ser real.
Por exemplo, se o número 3 fosse obtido na entrada, a metade seria 1.5, que não
é um número inteiro.

13
HAPPYCODE
Precisamos dessa variável denominada metade? E a variável resto? Não,
UNIDADE 2

podemos realizar o teste lógico a partir da expressão relacional, não sendo ne-
cessária a variável metade. Quanto à variável resto, podemos enviar como
saída a operação que calcula a metade. Com isto, teríamos um algoritmo que
utiliza apenas uma variável e duas operações de atribuição menos, como pode
ser visto no quadro seguinte.

Algoritmo par
Var
n: inteiro
Início
Escreva(“Digite um número:”)
Leia(n)
Se (n MOD 2 = 0) então
Escreva(“A metade do número é:”, n/2)
Fim_se
Fim

Quadro 6 - Pseudocódigo - Algoritmo par (versão 2) / Fonte: os autores.

14
UNICESUMAR
3
ESTRUTURA

UNIDADE 2
CONDICIONAL
composta

Na estrutura condicional composta, realiza-se a avaliação de uma única expressão


lógica. Se o resultado dessa avaliação for verdadeiro, é executada a instrução
ou o conjunto de instruções compreendido entre o comando Se e o Senão. Por
outro lado, se o resultado da avaliação for falso, é executada a instrução ou o
conjunto de instruções entre o Senão e o Fim_se (MANZANO; OLIVEIRA,
1997).
A sintaxe da estrutura condicional composta é:
Se (<Condição>) então
<instruções para condição verdadeira>
Senão
<instruções para condição falsa>
Fim_se

Agora que você conhece a estrutura condicional composta, podemos construir


um algoritmo para verificar se um número inteiro é par ou ímpar. O quadro a
seguir apresenta o pseudocódigo para verificar se um número é par ou ímpar.

15
HAPPYCODE
Algoritmo parimpar
UNIDADE 2

Var
n: inteiro
Início
Escreva(“Digite um número:”)
Leia(n)
Se (n MOD 2 = 0) então
Escreva(“O número é par”)
Senão
Escreva(“O número é ímpar”)
Fim_se
Fim

Quadro 7 - Pseudocódigo - Algoritmo parimpar / Fonte: os autores.

Se o resultado do teste da expressão relacional n MOD 2 = 0 for verda-


deiro, executa-se a instrução que se encontra entre o Se e o Fim_se, ou seja,
Escreva(“o número é par”). Caso o resultado do teste seja falso,
executa-se a instrução que se encontra entre o Senão e o Fim_se, Escre-
va(“O número é ímpar”). Por exemplo, se o número obtido na entrada
for 5, temos que 5 MOD 2 é igual a 1, ou seja, o teste da expressão resulta em
falso, logo, será impresso que “o número é ímpar”.
Na estrutura condicional composta, utiliza-se expressões relacionais e ex-
pressões lógicas, tal como na estrutura condicional simples. Antes de conhecer
outros tipos de estrutura condicional, praticaremos a construção de algoritmos,
utilizando expressões lógicas. O problema consiste em: dado um número inteiro,
verificar se ele compreende entre 20 e 90.
No processo de resolução, seguiremos esses passos:
■ Objetivo do algoritmo: verificar se o número compreende entre 20 e 90.
■ Entrada: obter um número inteiro.
■ Processamento: verificar se o número está entre 20 e 90.
■ Saída: imprimir se o número está dentro ou fora da faixa de 20 a 90.
16
UNICESUMAR
Para identificar o número de variáveis, devemos observar o que é requerido na

UNIDADE 2
entrada e no processamento, nesse caso, temos que a entrada é um número inteiro
(denominada variável n do tipo inteiro), e o processamento pode ser realizado
usando apenas expressões lógicas, portanto, não precisamos de mais variáveis.
A verificação se o número está na faixa entre 20 e 90 pode ser descrita como:
n tem que ser maior que 20 e menor do que 90. Com isto, temos duas expressões
relacionais: n > 20 e n < 90.
A saída de dados consiste em imprimir se o número está ou não dentro dos limi-
tes dessa faixa. O quadro seguinte apresenta o algoritmo para o problema descrito.

Algoritmo faixa
Var
n: inteiro
Início
Escreva(“Digite um número inteiro:”)
Leia(n)
Se (n > 20) E (n < 90) então
Escreva(“O número está na faixa entre 20
e 90”)
Senão
Escreva(“O número está fora da faixa”)
Fim_se
Fim

Quadro 8 - Pseudocódigo – Algoritmo faixa / Fonte: os autores.

Considerando n com valor 27, temos uma expressão lógica composta por duas
expressões relacionais (condições) unidas pelo operador E. Você se recorda como
este operador funciona? Dadas duas condições, o resultado é verdadeiro se,
e somente se, as duas expressões lógico-relacionais forem verdadeiras. O próximo
quadro representa a expressão lógica da estrutura condicional, em que 27 > 20
17
HAPPYCODE
é verdadeiro e 27 < 90 também é verdadeiro, o que resulta em
UNIDADE 2

verdadeiro. Como o resultado do teste lógico é verdadeiro, temos a execução


do fluxo compreendido entre o Se e o Senão, ou seja, a mensagem “o número
está na faixa entre 20 e 90”.

Operador E

Condição 1 Condição 2 Resultado

27 > 20 27 < 90 Verdadeiro


Quadro 9 - Resultado das comparações primeiro teste de mesa no algoritmo faixa
Fonte: os autores.

E se, na entrada, recebêssemos o número 20? Analisaremos, agora, cada uma das
expressões relacionais. Temos 20 > 20, é uma expressão que resulta em ver-
dadeiro ou falso? É falso, pois 20 é igual a 20 e não maior. Na segunda
expressão, temos 20 < 90, que resulta em verdadeiro. Essas expressões
estão unidas pelo operador E, sendo uma delas falsa, e a outra, verdadeira, assim,
o resultado do teste lógico é falso. Com isto, temos a execução da instrução,
compreendida entre o Senão e o Fim_se, “o número está fora da faixa”.

Operador E

Condição 1 Condição 2 Resultado

27 > 20 27 < 90 Falso

Quadro 10 - Resultado das comparações primeiro teste de mesa no algoritmo faixa


Fonte: os autores.

conecte-se

Para facilitar a leitura de um algoritmo, normalmente, adiciona-se espaços


em branco no início de um bloco de comandos para mostrar quais instru-
ções estão dentro dele, a este recurso denominamos indentação. Para saber
um pouco mais, leia o conteúdo disponível em: http://pt.wikipedia.org/wiki/
Indenta%C3%A7%C3%A3o

18
UNICESUMAR
4
ESTRUTURA

UNIDADE 2
CONDICIONAL
aninhada

Agora que você já conhece a estrutura condicional simples e a composta, conhe-


ceremos a estrutura condicional aninhada ou encadeada. Esta estrutura é utiliza-
da quando precisamos estabelecer a verificação de condições sucessivas, em que
determinada ação poderá ser executada se um conjunto anterior de instruções
ou condições for satisfeito. A execução da ação pode, também, estabelecer novas
condições. E o que isso quer dizer? Que podemos utilizar uma condição dentro
de outra, ou seja, a estrutura pode possuir diversos níveis de condição (MAN-
ZANO; OLIVEIRA, 1997).
Lopes e Garcia (2002) destacam que essa estrutura é utilizada quando sen-
timos a necessidade de tomar decisões dentro de uma das alternativas de uma
condição. Visualizar a estrutura condicional aninhada em um problema que con-
siste em encontrar o maior número dentre três números. Seguindo o método de
estruturação do problema, visto na Unidade 1, temos que:
■ Objetivo do algoritmo: encontrar o maior número.
■ Entrada: obter três números inteiros.
■ Processamento: comparar os números e armazenar o valor do maior.
■ Saída: imprimir o maior número.

A entrada de dados consiste em ler três números inteiros, os quais armazenare-


mos em variáveis denominadas a,b e c. A fim de encontrar o maior número,
19
HAPPYCODE
precisamos realizar comparações, para isso, utilizaremos expressões relacionais
UNIDADE 2

do tipo: A > B e armazenaremos o valor do maior número em uma variável, a


qual chamaremos de max. A saída consiste em enviar uma mensagem contendo
o valor do maior número, que está armazenado na variável max. O algoritmo
para o problema é apresentado no próximo quadro.

Algoritmo maior
Var
a, b, c, max: inteiro
Início
Escreva(“Digite o primeiro número inteiro:”)
Leia(a)
Escreva(“Digite o segundo número inteiro:”)
Leia(b)
Escreva(“Digite o terceiro número inteiro:”)
Leia(c)
Se (a > b) então
Se (a > c) então
max <- a
Senão
max <- c
Fim_se
Senão
Se (b > c) então
max <- b
Senão

20
UNICESUMAR
max <- c

UNIDADE 2
Fim_se
Fim_se
Escreva(“O maior número é: ”, max)
Fim

Quadro 11 - Pseudocódigo - Algoritmo maior / Fonte: os autores.

Se você não entendeu o funcionamento do algoritmo, fique tranquilo, posterior-


mente, veremos, passo a passo, a estrutura condicional do problema em questão.
Na figura a seguir, temos a representação da estrutura condicional aninhada,
os colchetes mais à esquerda (externos) representam a estrutura condicional
composta, em que o trecho 1 é executado quando o resultado da expressão rela-
cional a > b é verdadeiro. O trecho 2 apresenta o conjunto de instruções,
executado quando o resultado da expressão relacional é igual a falso. Note que
tanto dentro do trecho 1 quanto do trecho 2, temos outra estrutura condicional
composta, representada pelos trechos 3 e 4. A estrutura condicional do trecho 3
só é executada se a > b resultar em verdadeiro. Em seguida, verifica-se a >
c, em caso verdadeiro, executa-se a instrução, em que se atribui o valor de a para
a variável max. Se a > c for avaliado como falso, executa-se a instrução em
que o valor de c é atribuído para a variável max.

Se (a>b) então
Se (a>c) então
max a
1 3 senão
max c
fimse
senão
Se (b>c) então
max b
2 4 senão
max c
fimse
fimse

Figura 1 - Estrutura condicional aninhada / Fonte: os autores.

21
HAPPYCODE
Podemos resolver o problema de encontrar o maior número dentre três nú-
UNIDADE 2

meros, sem utilizar a estrutura condicional aninhada? Sim, podemos, será


executado, porém, um maior número de verificações, como pode ser visto no
algoritmo do quadro seguinte.

Algoritmo maior
Var
a, b, c, max: inteiro
Início
Escreva(“Digite o primeiro número inteiro:”)
Leia(a)
Escreva(“Digite o segundo número inteiro:”)
Leia(b)
Escreva(“Digite o terceiro número inteiro:”)
Leia(c)
Se (a > b) então
max <- a
Senão
max <- b
Fim_se
Se (c > max) então
max <- c
Fim_se
Escreva(“O maior número é:”, max)
Fim
Quadro 12 - Pseudocódigo - Algoritmo maior / Fonte: os autores.

22
UNICESUMAR
Teste o funcionamento dos dois algoritmos, supondo a=5, b=3 e c=12.

UNIDADE 2
Qual a vantagem de utilizar a estrutura condicional aninhada? A grande vanta-
gem é que o uso de “Ses” encadeados melhora o desempenho do algoritmo,
isto é, torna o algoritmo mais rápido por realizar menos testes e comparações. Ou
ainda, executar um menor número de passos para chegar à solução do problema.

5
ESTRUTURA DE
DECISÃO
múltipla

A estrutura de decisão múltipla, também denominada de estrutura de decisão


do tipo escolha, consiste em uma generalização do Se, em que somente uma con-
dição era avaliada e dois caminhos poderiam ser seguidos, um para o resultado
da avaliação ser verdadeiro, e outro para falso. Na estrutura de decisão múltipla,
pode haver uma ou mais condições a serem avaliadas e um comando diferente
associado a cada uma delas (LOPES; GARCIA, 2002).

23
HAPPYCODE
A sintaxe dessa estrutura é (MANZANO; OLIVEIRA, 1997):
UNIDADE 2

Caso <variável>
Seja <valor 1> faça <instruções 1>
Seja <valor 2> faça <instruções 2>
...
Seja <valor N> faça <instruções N>
Senão <instruções padrão>
Fim_caso

Nesta estrutura, o campo variável indica a variável a ser controlada, o


campo valor indica o conteúdo da variável analisado e os campos instru-
ções referem-se às instruções que serão executadas caso a variável seja
igual ao respectivo valor associado àquele caso. O funcionamento dessa estru-
tura consiste em, ao entrar-se em uma construção do tipo Caso, a comparação
“variável = valor 1” é testada: se for verdadeira, o bloco de coman-
dos “instruções 1” é executado e, após seu término, o fluxo de execução
prossegue pela primeira instrução após o final da construção (Fim_caso); se
“variável = valor 1” for falsa, então, a comparação “variável =
valor 2” é testada: se esta for verdadeira, o bloco “instruções 2” é executado
e, ao seu término, a execução prossegue, normalmente, pela instrução seguinte,
ao final da construção (Fim_caso). De modo análogo, ocorre para os demais
casos da estrutura. Lopes e Garcia (2002) destacam que esse tipo de estrutura é
bastante utilizado na construção de menus, tornando-os mais claros.
Elaboraremos um algoritmo para que, dado um número inteiro, escreva-se
o mês correspondente. Se for digitado um número fora desse intervalo, deverá
aparecer uma mensagem informando que não existe mês com este número. Re-
tomando o nosso modelo de estruturação de problemas, temos que:
■ Objetivo do algoritmo: escrever o mês equivalente ao número digitado.
Entrada: obter um número inteiro.
■ Processamento: verificar se o número digitado está entre 1 e 12.
■ Saída: imprimir o mês equivalente por extenso.

Na entrada de dados, temos um número inteiro, que nomearemos com variável


num. O processamento consiste em verificar se o número digitado está entre 1 e
24
UNICESUMAR
12 e, como saída, escrever por extenso o mês correspondente. No quadro poste-

UNIDADE 2
rior, temos o pseudocódigo para o problema em questão.

Algoritmo mes
Var
num: inteiro
Início
Escreva(“Digite um número de 1 a 12:”)
Leia(num)
Caso (num)
Seja 1 faça Escreva(“Janeiro”)
Seja 2 faça Escreva(“Fevereiro”)
Seja 3 faça Escreva(“Março”)
Seja 4 faça Escreva(“Abril”)
Seja 5 faça Escreva(“Maio”)
Seja 6 faça Escreva(“Junho”)
Seja 7 faça Escreva(“Julho”)
Seja 8 faça Escreva(“Agosto”)
Seja 9 faça Escreva(“Setembro”)
Seja 10 faça Escreva(“Outubro”)
Seja 11 faça Escreva(“Novembro”)
Seja 12 faça Escreva(“Dezembro”)
Senão Escreva(“Mês inválido”)
Fim_caso
Fim
Quadro 13 - Pseudocódigo – Algoritmo mes / Fonte: os autores.

25
HAPPYCODE
Retomando um pouco o conhecimento sobre variáveis, no algoritmo anterior, po-
UNIDADE 2

demos alterar o nome da variável num para mes? Não, pois o nome do algoritmo
se chama mes. Se quisermos declarar a variável como mes, temos que modificar
o nome do algoritmo. Lembre-se, não podemos ter nome de identificados (variá-
vel, constante, algoritmo, rotinas e outros) repetidos.
Ainda, analisando o algoritmo que utiliza
a estrutura de decisão múltipla, você acha que
podemos escrevê-lo de outra forma? Como
ficaria o algoritmo se utilizássemos apenas
a estrutura condicional simples? Há, pelo
menos, mais duas formas de resolvê-lo, uti-
lizando a estrutura condicional simples ou a
estrutura encadeada. A construção do algorit-
mo utilizando apenas a estrutura condicional
simples pode ser visualizada a seguir.

Algoritmo mes2
Var
num: inteiro
Início
Escreva(“Digite um número de 1 a 12:”)
Leia(num)
Se (num = 1) então
Escreva(“Janeiro”)
Fim_se
Se (num = 2) então
Escreva(“Fevereiro”)
fim_se

26
UNICESUMAR
Se (num = 3) então

UNIDADE 2
Escreva(“Março”)
Fim_se
Se (num = 4) então
Escreva(“Abril”)
Fim_se
Se (num = 5) então
Escreva(“Maio”)
Fim_se
Se (num = 6) então
Escreva(“Junho”)
Fim_se
Se (num = 7) então
Escreva(“Julho”)
Fim_se
Se (num = 8) então
Escreva(“Agosto”)
Fim_se
Se (num = 9) então
Escreva(“Setembro”)
Fim_se
Se (num = 10) então
Escreva(“Outubro”)
Fim_se

27
HAPPYCODE
Se (num = 11) então
UNIDADE 2

Escreva(“Novembro”)
Fim_se
Se (num = 12) então
Escreva(“Dezembro”)
Fim_se
Se (num <> 1) E (num <> 2) E (num <> 3) E (num <>
4) E
(num <> 5) E (num <> 6) E (num <> 7) E (num <>
8) E
(num <> 9) E (num <> 10) E (num <> 11) E
(num <> 12)
então
Escreva(“Mês inválido”)
Fim_se
Fim
Quadro 14 - Pseudocódigo – Algoritmo mes2 / Fonte: os autores.

Os algoritmos apresentados nos quadros, anteriormente, são soluções para o


problema. Você sabe qual a diferença entre eles? Supondo que o número digitado
tenha sido 3. No primeiro algoritmo, acontece a sequência de verificações “num
= 1”, “num = 2” e “num = 3”. Como “num = 3” é verdadei-
ro, ocorre a execução da instrução Escreva (“Março”) e o fluxo de execução salta
para o Fim_caso, isto é, os demais casos não são testados.
No segundo algoritmo, temos que todas as instruções serão verificadas. Dessa
forma, a diferença entre os dois algoritmos está no desempenho, no número de
instruções que será executada, e isso impacta no tempo de execução dos nossos
programas. Portanto, é importante que você escreva algoritmos eficientes.
Você já se perguntou como fazer um algoritmo eficiente? Ele utiliza apenas
28
UNICESUMAR
o número necessário de variáveis, já que cada variável consiste em um espaço de

UNIDADE 2
memória reservado. Além disso, podemos associar a eficiência com o número
de instruções que o algoritmo executa para resolver um problema. Com isso,
concluímos que não devemos declarar variáveis que não serão utilizadas e dar
preferência a estruturas condicionais aninhadas ou de escolha múltipla, ao invés
de construir várias de estruturas simples.

6
EXERCÍCIOS
RESOLVIDOS

Agora, para sedimentar nossos conhecimentos, teremos contato com problemas


que necessitam de tomada de decisão para serem resolvidos. Dessa forma, os
algoritmos propostos a seguir, deverão utilizar estruturas de decisão simples,
composta ou múltipla.

29
HAPPYCODE
UNIDADE 2

pensando juntos

Na solução de um problema, é fundamental estudar as várias opções de algoritmos a


serem utilizados, pois os aspectos de tempo e espaço são considerações importantes que
devem ser vistas com atenção (Nivio Ziviani).

Problema 1

Construa um algoritmo que receba o nome e a idade de uma pessoa e informe


se é menor de idade, maior de idade ou idoso.
■ Objetivo do algoritmo: informar se a pessoa é menor de idade, maior
ou idoso.
■ Entrada: ler nome e idade.
■ Processamento: verificar se a idade é menor que 18 (menor de idade),
entre 18 e 64 anos (maior de idade) ou maior ou igual a 65 anos (idoso).
■ Saída: escrever se a pessoa é menor de idade, maior ou idoso.

Algoritmo verificaidade
Var
idade: inteiro
nome: vetor[1..30] de caractere
Início
Escreva(“Digite o nome:”)
Leia(nome)
Escreva(“Digite a idade:”)
Leia(idade)
Se (idade > = 65) então
Escreva(“Idoso”)

30
UNICESUMAR
Senão

UNIDADE 2
Se (idade < 18) então
Escreva(“Menor de idade”)
Senão
Escreva(“Maior de idade”)
Fim_se
Fim_se
Fim

Quadro 15 - Pseudocódigo – Problema 1 / Fonte: os autores.

Problema 2

Elabore um algoritmo que receba a idade de uma pessoa e identifique sua classe
eleitoral: não eleitor (menor que 16 anos de idade), eleitor obrigatório (entre 18
e 65 anos) e eleitor facultativo (entre 16 e 18 anos e maior que 65 anos).
■ Objetivo do algoritmo: verificar a classe eleitoral de uma pessoa.
■ Entrada: ler idade.
■ Processamento: verificar se a idade é menor que 16 (não eleitor), entre
18 e 65 anos (eleitor obrigatório) ou entre 16 e 18 ou maior que 65 anos
(eleitor facultativo).
■ Saída: escrever a classe eleitoral.

Algoritmo classeeleitoral
Var
idade: inteiro
Início
Escreva(“Digite a idade:”)
Leia(idade)

31
HAPPYCODE
Se (idade < 16) então
UNIDADE 2

Escreva(“Não eleitor”)
Senão
Se (idade > 65) ou (idade < 18) então
Escreva(“Eleitor facultativo”)
Senão
Escreva(“Eleitor obrigatório”)
Fim_se
Fim_se
Fim

Quadro 16 - Pseudocódigo – Problema 2 / Fonte: os autores.

Problema 3

Escreva um algoritmo que calcule o IMC de uma pessoa e identifique se ela está
abaixo do peso (IMC menor que 20), normal (IMC entre 20 e 25), com excesso de
peso (IMC entre 26 e 30), obesa (IMC entre 31 e 35) ou com obesidade mórbida
(acima de 35). O cálculo do IMC é dado por: .peso 2
altura
■ Objetivo do algoritmo: verificar a faixa de risco de uma pessoa a partir
do IMC.
■ Entrada: ler peso e altura.
■ Processamento: verificar se o IMC é menor que 20 (abaixo do peso),
entre 20 e 25 (normal), entre 26 e 30 (excesso de peso), entre 31 e 35
(obesidade) ou acima de 35 (obesidade mórbida).
■ Saída: imprimir a faixa de risco da pessoa.

32
UNICESUMAR
Algoritmo calculaimc

UNIDADE 2
Var
peso, altura, imc: real
Início
Escreva(“Digite o peso:”)
Leia(peso)
Escreva(“Digite a altura:”)
Leia(altura)
imc <- peso / sqr(altura)
Se (imc < 20) então
Escreva(“Abaixo do peso”)
Senão
Se (imc <= 25) então
Escreva(“Normal”)
Senão
Se (imc <=30) então
Escreva(“Excesso de peso”)
Senão
Se (imc <=35) então
Escreva(“Obesidade”)
Senão
Escreva(“Obesidade
mórbida”)
Fim_se

33
HAPPYCODE
Fim_se
UNIDADE 2

Fim_se

Fim_se

Fim

Quadro 17 - Pseudocódigo – Problema 3 / Fonte: os autores.

Problema 4

Elabore um algoritmo que receba o salário de um funcionário e o código do


cargo e apresente o cargo, o valor do aumento e o novo salário. A tabela a seguir
apresenta os cargos.
Código Cargo Percentual do aumento

1 Serviços gerais 50%

2 Vigia 30%

3 Recepcionista 25%

4 Vendedor 15%

Tabela 1 - Apresentação de dados / Fonte: os autores.

■ Objetivo do algoritmo: calcular o aumento de salário, de acordo com


o cargo.
■ Entrada: ler salário e código do cargo.
■ Processamento: calcular o aumento salarial de acordo com o cargo
da pessoa.
■ Saída: imprimir o nome do cargo, o valor do aumento e o novo salário.

34
UNICESUMAR
Algoritmo reajuste

UNIDADE 2
Var
cargo: inteiro
salario, reajuste, aumento: real
Início
Escreva(“Digite o cargo:”)
Leia(cargo)
Escreva(“Digite o salário:”)
Leia(salario)
Se (cargo = 1) então
Escreva(“Serviços gerais”)
aumento <- salario * (50/100)
reajuste <- salario + aumento
Escreva(“O aumento é de:”, aumento)
Escreva(“O novo salário é:”, reajuste)
Senão
Se (cargo = 2) então
Escreva(“Vigia”)
aumento <- salario * (30/100)
reajuste <- salario + aumento
Escreva(“O aumento é de:”, aumento)
Escreva(“O novo salário é:”, reajuste)
Senão
Se (cargo = 3) então

35
HAPPYCODE
Escreva(“Recepcionista”)
UNIDADE 2

aumento <- salario * (25/100)


reajuste <- salario + aumento
Escreva(“O aumento é de:”, aumento)
Escreva(“O novo salário é:”,
reajuste)
Senão
Se (cargo = 4) então
Escreva(“Vendedor”)
aumento <- salario * (15/100)
reajuste <- salario + aumento
Escreva(“O aumento é de:”,
aumento)
Escreva(“O novo salário é:”,
reajuste)
Fim_se
Fim_se
Fim_se
Fim_se
Fim

Quadro 18 - Pseudocódigo – Problema 4 / Fonte: os autores.

36
UNICESUMAR
Problema 5

UNIDADE 2
Escreva um algoritmo para resolver equações do segundo grau  ax2  bx  c  .
Sendo que: a variável a deve ser diferente de zero; D  b2  4  a  c ; Se D < 0,
então, não existe raiz real; se D = 0 , então, existe uma raiz real, que é dada por
x
 b  ; se D > 0 , existem duas raízes reais x1   b  D  e x1   b  D  .
2 a 2 a 2 a

■ Objetivo do algoritmo: resolver a equação do segundo grau.


■ Entrada: ler os valores de a, b e c.
■ Processamento: calcular o delta  D  e o valor das raízes.
■ Saída: imprimir o valor da raiz real.

Algoritmo raiz
Var
a, b, c, delta, x1, x2: real
Início
Escreva(“Digite o valor de a:”)
Leia(a)
Escreva(“Digite o valor de b:”)
Leia(b)
Escreva(“Digite o valor de c:”)
Leia(c)
Se (a = 0) então
Escreva(“Não é uma equação do segundo grau”)
Senão
delta <- sqr(b) - 4 * a * c
Se (delta < 0) então

37
HAPPYCODE
Escreva(“Não existe raiz real”)
UNIDADE 2

Senão
Se (delta = 0) então
Escreva(“Existe uma raiz real”)
x1 <- (-b) / (2 * a)
Escreva(“A raiz é:”, x1)
Senão
Se (delta > 0) então
Escreva(“Existem duas raízes reais”)
x1 <- (-b + sqrt(delta)) / (2 * a)
Escreva(“A raiz x1 é:”, x1)
x2 <- (-b - sqrt(delta)) / (2 * a)
Escreva(“A raiz x2 é:”, x2)
Fim_se
Fim_se
Fim_se
Fim_se
Fim
Quadro 19 - Pseudocódigo – Problema 5 / Fonte: os autores.

38
UNICESUMAR
CONSIDERAÇÕES FINAIS

UNIDADE 2
Nesta unidade, você aprendeu a construir algoritmos com desvios de fluxo, isto
é, algoritmos em que podemos impor condições à execução de determinada ins-
trução a um teste. Essa estrutura que nos possibilita desviar o fluxo do programa
é conhecida, na literatura, como estrutura condicional, estrutura de seleção ou
estrutura de controle.
Estudamos quatro formas de estrutura condicional: estrutura condicional
simples, estrutura condicional composta, estrutura condicional encadeada (ou
aninhada) e estrutura de decisão múltipla. Na simples, vimos que as instruções
só serão executadas se a condição avaliada for verdadeira.
Na condicional composta, vimos que é realizada a avaliação de uma única
condição. No entanto temos dois caminhos para seguir, um quando o resultado
da instrução é verdadeiro, e outro quando é falso. Aprendemos que a
estrutura aninhada é usada quando temos que estabelecer verificações sucessivas,
isto é, quando uma ação só poderá ser executada se um conjunto anterior de
condições for satisfeito. Além disso, estudamos que o uso desta estrutura pode
tornar o algoritmo mais rápido devido ao fato de executar um menor número
de passos para chegar à solução do problema.
Vimos, também, a estrutura de decisão múltipla, uma generalização da es-
trutura Se, em que pode haver uma ou mais condições a serem testadas e um
comando associado a cada uma delas. Além da estrutura condicional, trabalha-
mos a construção de expressões relacionais e lógicas, as quais são utilizadas na
construção de condições. Entendemos, também, a tabela verdade dos operadores
lógicos e, ou e não.
Ao longo desta unidade, construímos algoritmos, utilizando todos os con-
ceitos aprendidos. Também discutimos a estrutura condicional mais adequada
para cada situação.

39
HAPPYCODE
na prática

1. Formule um algoritmo que leia a matrícula e o nome do vendedor, o seu salário fixo
e o total de vendas e calcule a comissão do vendedor. Se o total de vendas é inferior
a R$ 1500,00, o percentual de comissão é 2%, e se for maior, o percentual é de 4%.
Apresente o nome do vendedor, a matrícula, o salário fixo e o salário total.

2. Escreva um algoritmo que leia um número e informe se ele é divisível por 3 e por
7, simultaneamente.

3. Formule um algoritmo que leia cinco números e conte quantos deles são negativos.

4. De acordo com uma tabela médica, o peso ideal está relacionado com a altura e
o sexo. Elabore um algoritmo que receba altura e sexo de uma pessoa, calcule e
imprima o seu peso ideal, sabendo que:

Para homens (72.7 x altura) -58

Para mulheres (62.1 x altura) -44.7

5. Elabore um algoritmo que leia o percurso em quilômetros, o tipo de moto e informe


o consumo estimado de combustível, sabendo que uma moto do tipo A faz 26 km
com um litro de gasolina, uma moto do tipo B faz 20 km, e o tipo C faz 7 km.

6. Uma instituição financeira concederá crédito a uma taxa de juros de 3% aos seus
clientes, de acordo com o saldo médio do período. Elabore um algoritmo que cal-
cule o valor que pode ser concedido ao cliente e imprima-o. Os clientes com saldo
médio inferior a R$ 500,00 não têm direito a crédito. Já os clientes com saldo que
vai de R$ 500,00 até R$ 1000,00 podem obter créditos de 35% em relação ao saldo
médio. Clientes com saldo maior que R$ 1000,00 e que vá até R$ 3000,00 podem
obter créditos de 50% em relação ao saldo médio. E, para aqueles clientes com
saldo superior a R$ 3000,00, pode ser concedido crédito de 75% do valor do saldo.

40
aprimore-se

Algoritmos estão, a todo tempo, tomando decisões que afetam nosso dia a dia. Sen-
do assim, acompanhe este trecho de um artigo da BBC que ilustra casos reais nos
quais os algoritmos são legítimos tomadores de decisão.

NOVE ALGORITMOS QUE PODEM ESTAR TOMANDO DECISÕES SOBRE


SUA VIDA - SEM VOCÊ SABER

[...].

1. O computador decide se você fará ou não uma entrevista de emprego

Currículos são cada vez mais descartados sem sequer passar por mãos humanas. Isso
porque as empresas estão empregando sistemas automatizados em seus processos
seletivos, principalmente na análise de centenas de milhares de inscrições. Seu próxi-
mo empréstimo provavelmente será aprovado (ou recusado) por um algoritmo.
Nos Estados Unidos, estima-se que mais de 70% dos candidatos sejam elimina-
dos antes de serem avaliados por pessoas. Para as companhias, isso economiza
dinheiro e tempo, mas alguns questionam a neutralidade dos algoritmos. [...].

2. Quer dinheiro emprestado? Seu perfil na rede social pode afetar isso

Historicamente, quando alguém pede dinheiro a uma instituição financeira, a res-


posta vai depender da análise das chances do empréstimo ser pago, com base na
proporção entre a dívida e a renda desta pessoa e seu histórico de crédito.
Não é mais assim: agora, algoritmos reúnem e analisam dados de múltiplas fontes,
que vão desde padrões de compra a buscas na internet e sua atividade em redes sociais.
O problema é que esse método usa informações coletadas sem o conhecimento
ou colaboração de quem pede o dinheiro. Também há uma questão em torno da
transparência do código do algoritmo e seu comportamento tendencioso.

41
aprimore-se

3.Um algoritmo pode te ajudar a achar um amor, mas pode não ser quem
você espera

Não é uma surpresa que sites de namoro usam algoritmos para identificar duas
pessoas compatíveis. É um dos seus principais apelos para o público, na verdade.
[...].
[...] Até mesmo em alternativas como o aplicativo Tinder, em que as variáveis
são bem menos complexas (geografia, idade e orientação sexual), as combinações
não são tão simples assim. Quem usa o serviço recebe uma nota secreta sobre o
quanto essa pessoa é “desejável”, calculada para “permitir melhores combinações”,
segundo o Tinder. A fórmula é mantida em segredo, mas os executivos da empresa
por trás do aplicativo já indicaram que o número de vezes que o perfil de alguém é
curtido ou rejeitado tem um papel crucial sobre isso.

4.Um programa pode determinar se você é viciado em drogas e se conse-


guirá contratar um plano de saúde

O mal uso de medicamentos e drogas é a principal causa de mortes acidentais


nos Estados Unidos, e especialistas com frequência se referem a esse problema
como uma epidemia.
Para lidar com isso, cientistas e autoridades estão se unindo em projetos basea-
dos em dados. Existe aí uma questão ética: os dados analisados incluem o histórico
médico e até mesmo o endereço residencial. O argumento a favor desse tipo de inter-
venção é que isso pode salvar vidas e mitigar prejuízos ao sistema de saúde - viciados
em opioides têm, por exemplo, 59% mais chances de serem usuários de alto custo.
[...].

42
aprimore-se

5. Eles determinam até se um filme será feito

Essa não é a primeira vez que alguém dirá que Hollywood tem uma fórmula para
produzir sucessos. Mas é diferente do processo baseado na experiência e instinto
de produtores ao selecionar um roteiro ou elenco.
Algoritmos são usados para analisar não só as chances de um filme ir bem nas
bilheterias, mas também quanto dinheiro ele fará.
[...].
Além de comparar um novo filme com uma base de dados de produções passa-
das, esses serviços afirmam que podem detectar o impacto de mudanças na história
e até mesmo entre os atores.

6. Algoritmos influenciam em quem você vota e quem será presidente

Em uma época em que dados tornaram-se mais importantes do que empatia e caris-
ma no mundo da política, algoritmos são cruciais para candidatos em busca de votos.
[...].

7. A polícia usa algoritmos para prever se você será um criminoso

O sistema de vigilância da China sobre seus 1,3 bilhão de habitantes é bem conhe-
cido, mas parece haver espaço para expandi-lo. Grupos de direitos humanos acu-
saram as autoridades chinesas de violar a privacidade dos cidadãos, dizendo que o
real propósito do sistema é monitorar dissidentes.
[...].

43
aprimore-se

8. Um computador pode te mandar para a prisão

Juízes em ao menos dez Estados americanos estão tomando decisões em casos cri-
minais com a ajuda de um sistema automatizado chamado COMPAS, baseado em
um algoritmo de análise de risco para prever a probabilidade de uma pessoa come-
ter um novo crime.
[...].

9. Eles podem influenciar seu dinheiro

Esqueça as imagens de pessoas gritando na bolsa de valores com telefones nos


ouvidos. Transações no mercado de ações estão se tornando, cada vez mais, um
produto de cálculos feitos por algoritmos, que são mais rápidos do que qualquer
humano e compram e vendem papéis em questão de segundos.
[...].

Fonte: Duarte (2018, on-line)1.

44
eu recomendo!

livro

Algoritmos e Estruturas de Dados


Autores: Newton Alberto de Castilho Lages e Ângelo de Moura
Guimarães
Editora: LTC
Sinopse: os princípios da lógica de programação para compu-
tadores são apresentados por meio de uma linguagem de pro-
gramação didática denominada Portugol, de modo a enfatizar a
metodologia de criação de um algoritmo, independentemente da linguagem de
programação utilizada pelo futuro programador.

45
0800 600 6360
www.unicesumar.edu.br/ead

Você também pode gostar