Você está na página 1de 250

GRADUAÇÃO

Programação e
Cálculo Numérico
ME. ANDRE ABDALA NOEL
ESP. KRYSSIAN ROMEIRO

Híbrido
GRADUAÇÃO
Programação e
Cálculo Numérico
Me. André Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos
DIREÇÃO UNICESUMAR
Reitor Wilson de Matos Silva, Vice-Reitor e
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
C397 CENTRO UNIVERSITÁRIO DE MARINGÁ. Núcleo de Educação a da Mantenedora Cláudio Ferdinandi.
Distância; NOEL, André Abdala; SANTOS, Kryssian Romeiro Ma-
noel dos. NEAD - NÚCLEO DE EDUCAÇÃO A DISTÂNCIA
Programação e Cálculo Numérico. André Abdala Noel; Krys- Diretoria Executiva Chrystiano Mincoff, James Prestes
sian Romeiro Manoel dos Santos. e Tiago Stachon; Diretoria de Graduação e Pós-gra-
Maringá-PR.: Unicesumar, 2020. duação Kátia Coelho; Diretoria de Permanência
248 p. Leonardo Spaine; Diretoria de Design Educacional
“Graduação - Híbridos”. Débora Leite; Head de Metodologias Ativas Thuinie
1. Programação. 2. Cálculo . 3. Numérico 4. EaD. I. Título. Daros; Head de Curadoria e Inovação Tania Cristia-
ne Yoshie Fukushima; Gerência de Projetos Especiais
ISBN 978-85-459-2036-6 Daniel F. Hey; Gerência de Produção de Conteúdos
CDD - 22 ed. 005 Diogo Ribeiro Garcia; Gerência de Curadoria Carolina
CIP - NBR 12899 - AACR/2 Abdalla Normann de Freitas; Supervisão de Projetos
Especiais Yasminn Talyta Tavares Zagonel; Projeto
Impresso por: Gráfico José Jhonny Coelho e Thayla Guimarães
Cripaldi; Fotos Shutterstock

Coordenador de Conteúdo Fabio Augusto Genti-


line e Crislaine Rodrigues Galan.
NEAD - Núcleo de Educação a Distância Designer Educacional Tacia Rocha.
Av. Guedner, 1610, Bloco 4 - Jardim Aclimação Revisão Textual Cintia Prezoto Ferreira e Erica
CEP 87050-900 - Maringá - Paraná Fernanda Ortega.
unicesumar.edu.br | 0800 600 6360 Editoração Lavígnia da Silva Santos.
Ilustração Welington Vainer Satin de Oliveira.
Realidade Aumentada Matheus Alexander de Oli-
veira Guandalini e Maicon Douglas Curriel.
PALAVRA DO REITOR

Em um mundo global e dinâmico, nós trabalha-


mos com princípios éticos e profissionalismo, não
somente para oferecer uma educação de qualida-
de, mas, acima de tudo, para gerar uma conversão
integral das pessoas ao conhecimento. Baseamo-
-nos em 4 pilares: intelectual, profissional, emo-
cional e espiritual.
Iniciamos a Unicesumar em 1990, com dois
cursos de graduação e 180 alunos. Hoje, temos
mais de 100 mil estudantes espalhados em todo
o Brasil: nos quatro campi presenciais (Maringá,
Curitiba, Ponta Grossa e Londrina) e em mais de
300 polos EAD no país, com dezenas de cursos de
graduação e pós-graduação. Produzimos e revi-
samos 500 livros e distribuímos mais de 500 mil
exemplares por ano. Somos reconhecidos pelo
MEC como uma instituição de excelência, com
IGC 4 em 7 anos consecutivos. Estamos entre os
10 maiores grupos educacionais do Brasil.
A rapidez do mundo moderno exige dos
educadores soluções inteligentes para as ne-
cessidades de todos. Para continuar relevante, a
instituição de educação precisa ter pelo menos
três virtudes: inovação, coragem e compromisso
com a qualidade. Por isso, desenvolvemos, para
os cursos de Engenharia, metodologias ativas, as
quais visam reunir o melhor do ensino presencial
e a distância.
Tudo isso para honrarmos a nossa missão que é
promover a educação de qualidade nas diferentes
áreas do conhecimento, formando profissionais
cidadãos que contribuam para o desenvolvimento
de uma sociedade justa e solidária.
Vamos juntos!
Prezado(a) Acadêmico(a), bem-vindo(a) à Co-
munidade do Conhecimento.
Essa é a característica principal pela qual a
Unicesumar tem sido conhecida pelos nossos alu-
nos, professores e pela nossa sociedade. Porém, é
importante destacar aqui que não estamos falando
mais daquele conhecimento estático, repetitivo,
local e elitizado, mas de um conhecimento dinâ-
mico, renovável em minutos, atemporal, global,
democratizado, transformado pelas tecnologias
digitais e virtuais.
De fato, as tecnologias de informação e comu-
nicação têm nos aproximado cada vez mais de
pessoas, lugares, informações, da educação por
meio da conectividade via internet, do acesso
wireless em diferentes lugares e da mobilidade
dos celulares.
As redes sociais, os sites, blogs e os tablets ace-
leraram a informação e a produção do conheci-
mento, que não reconhece mais fuso horário e
atravessa oceanos em segundos.
A apropriação dessa nova forma de conhecer
transformou-se hoje em um dos principais fatores de
agregação de valor, de superação das desigualdades,
propagação de trabalho qualificado e de bem-estar.
Logo, como agente social, convido você a saber
cada vez mais, a conhecer, entender, selecionar e
usar a tecnologia que temos e que está disponível.
Da mesma forma que a imprensa de Gutenberg
modificou toda uma cultura e forma de conhecer,
as tecnologias atuais e suas novas ferramentas,
equipamentos e aplicações estão mudando a nossa
cultura e transformando a todos nós. Então, prio-
rizar o conhecimento hoje, por meio da Educação
a Distância (EAD), significa possibilitar o contato
com ambientes cativantes, ricos em informações
e interatividade. É um processo desafiador, que
ao mesmo tempo abrirá as portas para melhores
oportunidades. Como já disse Sócrates, “a vida
sem desafios não vale a pena ser vivida”. É isso que
a EAD da Unicesumar se propõe a fazer.
Seja bem-vindo(a), caro(a) acadêmico(a)! Você
está iniciando um processo de transformação,
pois quando investimos em nossa formação, seja
ela pessoal ou profissional, nos transformamos e,
consequentemente, transformamos também a so-
ciedade na qual estamos inseridos. De que forma
o fazemos? Criando oportunidades e/ou estabe-
lecendo mudanças capazes de alcançar um nível
de desenvolvimento compatível com os desafios
que surgem no mundo contemporâneo.
O Centro Universitário Cesumar mediante o
Núcleo de Educação a Distância, o(a) acompa-
nhará durante todo este processo, pois conforme
Freire (1996): “Os homens se educam juntos, na
transformação do mundo”.
Os materiais produzidos oferecem linguagem
dialógica e encontram-se integrados à proposta
pedagógica, contribuindo no processo educa-
cional, complementando sua formação profis-
sional, desenvolvendo competências e habilida-
des, e aplicando conceitos teóricos em situação
de realidade, de maneira a inseri-lo no mercado
de trabalho. Ou seja, estes materiais têm como
principal objetivo “provocar uma aproximação
entre você e o conteúdo”, desta forma possibilita
o desenvolvimento da autonomia em busca dos
conhecimentos necessários para a sua formação
pessoal e profissional.
Portanto, nossa distância nesse processo de
crescimento e construção do conhecimento deve
ser apenas geográfica. Utilize os diversos recursos
pedagógicos que o Centro Universitário Cesumar
lhe possibilita. Ou seja, acesse regularmente o Stu-
deo, que é o seu Ambiente Virtual de Aprendiza-
gem, interaja nos fóruns e enquetes, assista às aulas
ao vivo e participe das discussões. Além disso,
lembre-se que existe uma equipe de professores e
tutores que se encontra disponível para sanar suas
dúvidas e auxiliá-lo(a) em seu processo de apren-
dizagem, possibilitando-lhe trilhar com tranquili-
dade e segurança sua trajetória acadêmica.
APRESENTAÇÃO

Olá, nobre aluno(a) das artes exatas! Muitas vezes vemos a área de exatas
como algo frio e mecânico. No entanto, não precisa ser assim. Nesta disciplina,
vislumbraremos uma bela obra de arte resultante da junção de duas áreas
próximas: a matemática e a computação.
Particularmente, gostamos muito de estudar a história da computação e
sempre aprendemos mais com isso. É interessante conhecer como, o que
hoje temos como óbvio e habitual, no passado foi desbravado por mentes
excelentes que conseguiram enxergar na matemática o que hoje podemos
utilizar em computadores, seja assistindo vídeo, ouvindo música, editando
textos ou diversas outras atividades que fazemos.
Neste livro, abordaremos o cálculo numérico e a programação, nesta ordem.
Contudo, o que vem a ser o cálculo numérico? De forma simples, consiste
em encontrar métodos para realizar o cálculo de uma forma computacional,
ou seja, de forma que o computador processe as informações tendo em vista
que ele é uma máquina que executa instruções, muitas vezes diferentes da
forma que o nosso cérebro trabalha.
Sendo assim, na primeira unidade, estudaremos os métodos numéricos que
podem ser utilizados para encontrar as raízes de equações. Você vai ver que
algumas equações você já sabe resolver encontrando raízes exatas, vai desco-
brir métodos novos, trabalhando com a ideia de aproximação.
Na segunda unidade, estudaremos a solução de sistemas de equações lineares
por métodos numéricos. Para resolver sistemas lineares já passamos a ter
mais trabalho manual, pois temos que resolver equações interligadas, fazer
substituições etc. Aqui veremos como passar isso para uma forma mecânica
que o computador faz melhor do que nós.
Em seguida, na Unidade 3, estudaremos a aproximação polinomial, que nos
ajuda a encontrar pontos aproximando-se à solução real de uma função que
podemos não conhecer o comportamento.
Fecharemos a parte do estudo de cálculo numérico na Unidade 4, estudando
métodos numéricos para resolver integração numérica e equações diferen-
ciais, aprendendo formas de encontrar resultados computacionalmente.
A seguir, começaremos a parte mais voltada à programação. Assim, na
Unidade 5, estudaremos conceitos básicos de programação. Portanto, se
você não sabe nada de programação, fique tranquilo(a). A ideia é que você
comece a aprender de forma introdutória. Não chegaremos a ensinar a
programação propriamente dita, mas você terá todo o embasamento que
precisa para o estudo.
Na Unidade 6, compreenderemos como funcionam as linguagens de progra-
mação, necessárias para se escrever os programas de computador. Veremos
algumas características das linguagens e como fazem diferença para cada uma.
Depois de entender o que são as linguagens, iremos nos debruçar, na Unidade
7, em como os programas de computador são escritos e como passam de có-
digo a programas executáveis. Ainda, discutiremos algumas diferenças entre
programas compilados ou interpretados e entre programação web ou desktop.
Voltaremos a tratar de matemática na Unidade 8, juntando as duas
áreas e analisando alguns softwares que ajudam em soluções de cál-
culo. Passaremos por planilhas de cálculo, programação matemática e
softwares online.
Por fim, na Unidade 9, voltaremos ao cálculo numérico, aplicando os méto-
dos numéricos estudados no início em forma de programação, utilizando
a linguagem GNU Octave, compatível com a famosa MATLAB.
Prepare o seu coração, um café bem saboroso e vamos colocar esses neurô-
nios para trabalharem em prol desse conhecimento. A programação está
cada vez mais presente no nosso dia a dia. É cada vez mais necessária para
todas as áreas de atuação.
Vamos lá colocar o computador para trabalhar!
CURRÍCULO DOS PROFESSORES

Me. Andre Abdala Noel


Professor e programador, mestre em Ciência da Computação pela Universidade Estadual de
Maringá, com ênfase em sistemas de computação, possui bacharel em Ciência da Compu-
tação pela Universidade Estadual de Maringá. Boa experiência em programação, aplicando
também na docência superior, desde 2008. Autor do site Vida de Programador, se mantém
bem ativo na comunidade de desenvolvedores.
Currículo Lattes disponível em: http://lattes.cnpq.br/9035823171388697

Esp. Kryssian Romeiro


Possui MBA Internacional Executivo em Gestão Industrial pela Fundação Getúlio Vargas em
conjunto com a University of Tampa (EUA, 2014), possui graduação em Engenharia Têxtil pela
Universidade Estadual de Maringá (2011). Tem experiência na área de Têxtil automotiva e de
auditoria. Atualmente cursa mestrado em Engenharia Química pela Universidade Estadual
de Maringá e atua como Professora Mediadora no curso de Engenharia de Produção (EAD-
-UniCesumar).
Currículo Lattes disponível em: http://lattes.cnpq.br/3102388870189147
Métodos Numéricos

13

Solução de Sistemas
de Equações
Lineares

39

Aproximação de
Funções

63
Integração Numérica
Criação e Execução
e Equações
de Programas
Diferenciais

87 163

Programas e
Conceitos Básicos
Bibliotecas
de Programação
Matemáticos

115 189

Linguagens de Cálculo Numérico


Programação Utilizando Octave

139 217
17 Método de bissecção
127 Loop + Ramificação condicional
170 Processo de compilação

Utilize o aplicativo
Unicesumar Experience
para visualizar a
Realidade Aumentada.
Me. André Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos

Métodos Numéricos

PLANO DE ESTUDOS

Método das Cordas Método de Newton

Método da Bisseção Método Pégaso Método da Iteração

OBJETIVOS DE APRENDIZAGEM

• Entender o uso de métodos numéricos para obtenção de • Conhecer o método Pégaso para convergir para soluções.
soluções a partir do método da bisseção. • Estudar o método de Newton para encontrar raízes.
• Aprender o método das cordas para a obtenção de so- • Analisar o método da iteração para resolver equações.
luções.
Método
da Bisseção

Olá, aluno(a), tudo bem? Seja muito bem-vindo(a)


ao nosso estudo de métodos numéricos. Trataremos,
nesta primeira unidade, como encontrar raízes de
funções. Primeiramente, veremos como fazer para
casos com equações algébricas e, posteriormente,
trataremos dos casos em que as equações são trans-
cendentes.
Segundo Barroso et al. (1987), as equações al-
gébricas de 1º e 2º graus, certas equações de 3º e 4º
graus e algumas equações transcendentes podem
ter raízes computadas por métodos analíticos; po-
rém, as demais podem ser resolvidas apenas por
métodos que aproximam as resoluções.
Para encontrarmos as raízes dessas equações
ou o zero das funções, ou seja, para resolvermos
f ( x) = 0 , iremos precisar dispor de métodos nu-
méricos para encontrar tais valores aproximados
para a raiz. Assim, chegaremos ao ponto deste
capítulo, em que, juntos, iremos conhecer a exis-
tência e aplicabilidade desses métodos numéricos
que irão nos ajudar a resolver essas equações al-
gébricas e transcendentes.
Equações Algébricas e Transcendentes

Primeiramente, vamos esclarecer o que são as equações algébricas ou transcendentes.


As equações algébricas são aquelas funções y = f ( x) que, segundo Chapra e
n n 1
Canale (2011), podem ser expressas na forma f n y  f n1 y  ...  f1 y  f0  0 ,
onde f1 é um polinômio de grau n em x.
Os polinômios são uma classe simples de funções algébricas que são representadas,
2 n
em geral, por f n ( x)  a0  a1 x  a2 x  ...  an x , (em que n é o grau do polinômio
e as letras “a” são constantes).
Como exemplos, temos:
3 x 4  5 x3  x2  2 x  1  0

x3  4 x2  2 x  5  0

Para Chapra e Canale (2011, p. 94) “[...] uma função transcendental é uma função
que não é algébrica. Incluem-se as funções trigonométricas, exponenciais, logarítmicas
e outras funções menos familiares” (grifo do autor). Exemplos são:

f ( x)  ln x2  1

f ( x )  e 0,2 x sen(3x  0, 5)

Não existem fórmulas que resolvam essas equações, assim, as equações algébricas
racionais inteiras também são designadas, por sua vez, por equações polinomiais.
O método da bisseção é um método em que reduzimos o intervalo onde a raiz
de f ( x) está contida. Para isso, devemos saber que:
1. A raiz está dentro de um dado intervalo [a, b] .
2. f ( x) é uma função contínua.
3. A equação possui uma solução.

Quando esse é o caso, f ( x) tem sinais opostos nos pontos finais do intervalo, ou
seja, f (a ) f (b) < 0 . Conforme mostrado na Figura 1, se f ( x) é contínua e tem uma
solução entre os pontos x = a e x = b , então ou f (a ) > 0 e f (b) < 0 ou f (a ) < 0
e f (b) > 0 (GILAT; SUBRAMANIAM, 2008).

UNIDADE 1 15
y y y y
Solução Solução
ƒ(a) > 0 ƒ(a) > 0 exata exataƒ(b) > 0 ƒ(b) > 0

X NS b X NS bX X a a
X NS X NS X X
a a b b
Solução Solução
ƒ(b) < 0 ƒ(b) < 0 ƒ(a) < 0 ƒ(a) < 0
exata exata

Figura 1 - Solução de f(x) = 0 entre x = a e x = b


Fonte: Gilat e Subramaniam (2008, p. 77).

Algoritmo para o Método da Bisseção

Seguindo em nosso estudo, Gilat e Subramaniam (2008) ainda dizem que podemos basear
o método da bisseção em quatro passos, facilitando a sua execução e compreensão. São eles:
1. Escolha o primeiro intervalo, encontrando os pontos a e b entre os quais
existe uma solução. Isso significa que f (a ) e f (b) têm sinais diferentes, de
forma que f (a ) f (b) < 0 . Os pontos podem ser determinados a partir de um
gráfico de f ( x) versus x .
2. Então, vamos fazer uma estimativa da solução, que será um ponto entre a e b,
que chamaremos de xNS1 . Calcule a primeira estimativa da solução numérica
xNS1 usando:
( a  b)
xNS1 
2

3. Determine se a solução exata está entre a e xNS1 ou entre xNS1 e b. Isso é feito
com a verificação do sinal do produto. Se f (a ) f ( xNS 1 ) < 0 , a solução exata
está entre a e xNS1 . Se f (a ) f ( xNS 1 ) > 0 , a solução exata está entre xNS1 e b.
4. Selecione o subintervalo que contém a solução exata (a até xNS1 ou xNS1
até b) como o novo intervalo [a, b] e volte para o passo 2. Os passos 2 a 4 são
repetidos até que a tolerância especificada seja satisfeita ou um determinado
limite de erro seja atingido.

Tenha sua dose extra de conhecimento assistindo ao vídeo.


Para acessar, use seu leitor de QR Code.

16 Métodos Numéricos
ƒ(x) Solução
exata
a x
b

Primeira Solução
estimativa exata
Primeira x
iteração xNS1
a b
Primeiro intervalo
Segunda
Solução estimativa
exata
Segunda x
iteração xNS2
a b Método de bissecção
Segundo intervalo
Terceira
Solução estimativa
Terceira exata x
iteração
a xNS3 b
Terceiro intervalo

Figura 2 - Método da Bisseção


Fonte: Gilat e Subramaniam (2008, p. 77).

Agora, para fixarmos, iremos resolver um exemplo em que será possível aplicar esses
passos e praticarmos o método da bisseção.

1 EXEMPLO Vamos determinar um valor aproximado da raiz quadrada de 5, com erro menor ou
igual a 0,01. Determinar 5 é equivalente a determinar o zero positivo da equação
x2  5  0 (HUMES et al., 1984).
Resolução: sabemos que o intervalo [2, 3] contém esta raiz. Vamos aplicar o algo-
ritmo da dicotomia. Em cada iteração i, em que i = 0, 1, 2,... , denotaremos por ai
e bi os extremos inferior e superior, respectivamente; do intervalo que está sendo
considerado por xi , o valor aproximado da raiz; e por ei o erro máximo cometido
na i-ésima iteração. Estes valores estão dispostos na Tabela 1. Inicialmente, temos:
f (a0 )  f (2.0)  0 e f (b0 )  f (3.0)  0 .

UNIDADE 1 17
Tabela 1 - Dados obtidos pelo Método da Bissecção
~ bi ai bi ai
ai bi
~
i xi i
2
f xi f ai
2

0 2,0 3,0 2,5 0,5 -


1 2,0 2,5 2,25 0,25 -
2 2,0 2,25 2,125 0,125 +
3 2,125 2,25 2,1875 0,0625 +
4 2,1875 2,25 2,21875 0,03125 +
5 2,21875 2,25 2,234375 0,015625 +
6 2,234375 2,25 2,2421875 0,0078125
Fonte: adaptada de Humes et al. (1984).

Portanto, 5 2 2421875 0, 0078125.


É importante lembrar que o método sempre converge para uma resposta, desde
que uma raiz esteja contida no intervalo inicial [a, b] . Além de que o método pode
falhar quando a função é tangente ao eixo x, não o cruzando em f ( x) = 0 . Ainda,
a convergência do método é lenta em comparação com outros métodos (GILAT;
SUBRAMANIAM, 2008).

18 Métodos Numéricos
Método
das Cordas

O método das cordas, também conhecido como


método da secante, é uma outra ferramenta para
encontrar, de forma numérica, a solução de equa-
ções. Neste método, segundo Barroso et al. (1987),
o intervalo é dividido em partes proporcionais à
razão − f (a ) / f (b) , ou seja:

h1  f (a)

b  a  f (a )  f (b)

Em que:
x1  a  h1

portanto, temos:
f (a)
x1  a  (b  a )
f (b)  f (a )

Aplicando ao novo intervalo ∑ ([a, x1 ]ou[ x1 , b]) ,


obtém-se uma nova aproximação x2 da raiz.

UNIDADE 1 19
Barroso et al.(1987) apresentaram a interpretação geométrica a seguir, na qual a
curva y = f ( x) é substituída por uma corda que passa pelos pontos A[a, f (a )] e
B[b, f (b)] , e duas das possíveis situações são:
 f (a )  0, f (b)  0 : CasoI
f ( x)  0 
 f (a )  0, f (b)  0 : CasoII
y y

ƒ(b) ƒ(a) A
B

h1
a = x0 x1 x2 b a x2 x1 b = x0
0 x 0 x

ƒ(a) A ƒ(b) B

Figura 3 - Caso I Figura 4 - Caso 2


Fonte: Barroso et al. (1987, p. 111). Fonte: Barroso et al. (1987, p. 111).

Para o Caso I, analisando a Figura 3, temos que:


f (b)  f ( x0 ) 0  f ( x0 )

b  x0 x1  x0

x1  x0 x0  b

 f ( x0 ) f ( x0 )  f (b)

f ( x0 )
x1  x0  ( x0  b)
f ( x0 )  f (b)

Por indução:
f ( xn )
xn1  xn  ( xn  b)
f ( xn )  f (b)

Em que n = 0, 1, 2,...

Para o Caso II, analisando a Figura 4, temos que:


f (a )  f ( x0 ) 0  f ( x0 )

x0  a x0  x1

x1  x0 x0  a

f ( x0 ) f ( x0 )  f (a )

f ( x0 )
x1  x0  ( x0  a )
f ( x0 )  f (a )

20 Métodos Numéricos
Por indução:
f ( xn )
xn1  xn  ( xn  a )
f ( xn )  f (a )

Em que n = 0, 1, 2,...
Com base no que Barroso et al. (1987) expõem, podemos chegar na equação geral
descrita a seguir:

f ( xn )
xn1  xn  ( xn  c)
f ( xn )  f (c)

em que:

• c é um ponto extremo de [a, b] .


• A função apresenta o mesmo sinal de f ′′( x) , ou seja, f (c) f (c)  0 .

“A análise do método da secante mostra que, quando os dois pontos que definem
a reta secante são próximos entre si, esse método é na realidade uma forma apro-
ximada do método de Newton” (GILAT; SUBRAMANIAM, 2008, p. 88).
Podemos ver pela fórmula geral do método da secante que ela pode ser reescrita
de forma a aproximar o valor da derivada de f ( x) em xi , contida no método de
Newton.

UNIDADE 1 21
Método
Pégaso

O método Pégaso também consiste em reduzir o


intervalo [a, b] onde está a raiz, no entanto, além
disso, ele também reduz o valor de f ( xn−1 ) por
um fator f ( xn ) . Para Barroso et al.
f ( xn ) + f ( xn+1 )
(1987), faz-se isso de modo a evitar a retenção de
um ponto, a fim de obter um método de conver-
gência mais rápido.

22 Métodos Numéricos
Considerando f ( x) uma função contínua no intervalo [ x0 , x1 ] e f ( x0 ) f ( x1 ) < 0 ,
as aproximações ( x2 , x3 , x4 ,...) da raiz desta função podem ser obtidas pela fórmula
a seguir:
f ( xn )( xn  xn1 )
xn1  xn 
f ( xn )  f ( xn1 )

Em que n = 1, 2, 3,...
Considerando que, se f ( xn1 ) f ( xn )  0 , então

[ xn1 , f ( xn1 )]  [ xn , f ( xn )] ,

e que se

f ( xn1 ) f ( xn )  0 ,

então

f ( xn1 ) f ( xn )
[ xn1 , ].
( f ( xn )  f ( xn1 ))

A origem ao nome do Método Pégaso ocorreu devido ao método estar salvo em


um computador do tipo Pégaso, o qual todos utilizavam para fazer seus cálculos,
porém até hoje não se sabe quem o desenvolveu.
Fonte: adaptado de Barroso et al. (1987).

Ainda segundo Barroso et al. (1987), para ambos os casos, [ xn , f ( xn )] é trocado


por [ xn+1 , f ( xn+1 )] , garantindo que os valores usados a cada iteração sejam sempre
positivos.

UNIDADE 1 23
Método
de Newton

O método de Newton, também conhecido como


método de Newton-Raphson, é o método mais
usado para encontrar raízes de funções (CHA-
PRA; CANALE, 2011). É um esquema usado para
se obter a solução numérica de uma equação na
forma f ( x) = 0 , em que f ( x) é contínua e di-
ferenciável, e sua equação possui uma solução
próxima a um ponto dado (GILAT; SUBRAMA-
NIAM, 2008). O método é ilustrado na Figura 5.
Se a aproximação inicial da raiz for x1 , pode-
-se estender uma reta tangente a partir do ponto
[ x1 , f ( x1 )] . O ponto onde essa tangente cruza
o eixo x usualmente representa uma estimativa
melhorada da raiz, e assim sucessivamente.
Para Chapra e Canale (2011), o método de
Newton pode ser deduzido com base em sua
interpretação geométrica. Como na Figura 6, a
primeira derivada em x é equivalente à inclinação.

24 Métodos Numéricos
y y=ƒ(x) ƒ(x)

ƒ(x1) Inclinação = ƒ’(xi)


Inclinação: ƒ’(x1)
ƒ(xi)

ƒ(x2) ƒ(xi) – 0
Solução
ƒ(x3)
x 0
xi+1 xi x
x4 x3 x2 x1 xi – xi+1
Inclinação: ƒ’(x3) Inclinação: ƒ’(x2)

Figura 5 - Método de Newton Figura 6 - Tangente - Método de Newton


Fonte: Gilat e Subramaniam (2008, p. 82). Fonte: Chapra e Canale (2011, p. 121).

f ( xi )  0
f ( xi ) 
xi  xi 1

Reorganizando, temos a fórmula de Newton:


f ( xi )
xi 1  xi 
f ( xi )

É importante lembrar, assim como definem Gilat e Subramaniam (2008), que as


iterações devem ser interrompidas nos casos a seguir:
a) Erro relativo estimado: as iterações são interrompidas quando o erro relativo
estimado é menor que um valor especificado e :

xi 1  xi
e
xi

b) Tolerância em f ( x) : as iterações são interrompidas quando o valor absoluto


de f ( x1 ) é menor que algum número d :

f ( xi ) ≤ d

c) O método de Newton, quando bem-sucedido, converge rapidamente. A não


convergência usualmente ocorre porque o ponto de partida não está suficien-
temente próximo da solução.

Vamos, agora, colocar um pouco em prática o que aprendemos com um exemplo:

UNIDADE 1 25
2 EXEMPLO Use o método de Newton (Newton-Raphson) para fazer uma estimativa da raiz de
f ( x)  e x  x , utilizando uma aproximação inicial x0 = 0 (CHAPRA; CANALE,
2011).

Resolução: a primeira derivada da função pode ser calculada como:


f ( x)  e x  1

que pode ser substituída junto com a função original na equação:


f ( xi )
xi 1  xi 
f ( xi )

e assim temos:
e xi  xi
xi 1  xi 
e  xi  1

Começando com uma aproximação inicial de x0 = 0 , essa equação iterativa pode


ser aplicada para calcular:
Tabela 2 - Dados obtidos pelo Método de Newton
i xi et(%)
0 0 100
1 0,5 11,8
2 0,566311003 0,147
3 0,567143165 0,000022
4 0,567143290 < 10-8

Fonte: adaptada de Chapra e Canale (2011).

Assim, a aproximação converge rapidamente para a raiz verdadeira. Observe que o


erro relativo percentual verdadeiro em cada iteração diminui rapidamente.

26 Métodos Numéricos
Método
da Iteração

O Método da Iteração Linear ou Método do Ponto


Fixo é definido por Gilat e Subramaniam (2008)
como um método usado para resolver uma equa-
ção na forma f ( x) = 0 . O método é implemen-
tado rescrevendo a equação como:

x = g ( x)

Assim, a partir de uma aproximação inicial x0


gerar a sequência {xi } de aproximações para x
dada por xi 1  g ( xi ) , transformando o proble-
ma de encontrar um zero de f ( x) no problema
de encontrar um ponto fixo de g ( x) , sendo a
função g ( x) chamada de função de iteração.

UNIDADE 1 27
y y=x

Solução
y = g(x)

x
x

Figura 7 - Método da iteração de ponto fixo


Fonte: Gilat e Subramaniam (2008, p. 89).

É importante ressaltar que este método pode tomar dois caminhos diferentes, como
Gilat e Subramaniam (2008) afirmam e expressam nos gráficos a seguir:
• Quando o método funciona, os valores de x obtidos são iterações sucessivas
que convergem progressivamente em direção à solução.

y y
y=x y=x y = g(x)

g (x2) g (x4)
y = g(x)
Solução g (x1)
g (x3) Solução
g (x1)

g (x2)
x TS x g(x3) x
x1 x1
x2 = g(x1) x3 = g(x2) x TS x2 = g(x1)
x3 = g(x2)
x4 = g(x3)

Figura 8 - Convergência do método da iteração de ponto fixo


Fonte: Gilat e Subramaniam (2008, p. 90).

• É possível, no entanto, que as iterações divirjam. A Figura 9 mostra que, mesmo


que o ponto de partida esteja próximo da solução, os pontos subsequentes
podem se afastar da solução.

28 Métodos Numéricos
y y
y = g(x) y=x
g (x4)
g (x3) y=x g (x2)
Solução
g (x2) g (x1)
g (x1)
Solução g (x3)
y = g(x)
x x
x4 = g(x3) x1
x1 x4 = g(x3) x3 = g(x2)
x3 = g(x2) x2 = g(x1)
x2 = g(x1)
Figura 9 - Divergência do método da iteração de ponto fixo
Fonte: Gilat e Subramaniam (2008, p. 90).

3 EXEMPLO Use a iteração de ponto fixo para localizar a raiz de g(x) (CHAPRA; CANALE, 2011).
Resolução: a função pode ser separada diretamente e expressa na forma a seguir:

xi 1  e  xi

Começando com uma aproximação inicial x0 = 0 , essa equação iterativa pode ser
usada para calcular.

Tabela 3 - Dados obtidos pelo Método do Ponto Fixo


i xi ea(%) et(%)
0 0 100,0
1 1,000000 100,0 76,3
2 0,367879 171,8 35,1
3 0,692201 46,9 22,1
4 0,500473 38,3 11,8
5 0,606244 17,4 6,89
6 0,545396 11,2 3,83
7 0,579612 5,90 2,20
8 0,560115 3,48 1,24
9 0,571143 1,93 0,705
10 0,564879 1,11 0,399
Fonte: adaptada de Chapra e Canale (2011).

Assim, cada iteração traz o valor estimado para mais perto do valor verdadeiro:
0,56714329.

UNIDADE 1 29
Comparação entre Métodos

Como ressaltam Barroso et al. (1987), cada um dos métodos apresentados aqui possui
uma particularidade, vejamos no quadro comparativo a seguir:
Quadro 1 - Comparação dos métodos

Método Observações finais


Não exige conhecimento de derivada.
Bisseção Convergência lenta.
Deve ser usado apenas para diminuir intervalo que contém raiz.
Exige que o sinal da derivada segunda permaneça constante no intervalo.
Cordas Se o ponto c for razoavelmente próximo da raiz ( f (c)  10) , terá boa
convergência, caso contrário, será mais lento que a bisseção.
Não exige conhecimento do sinal da derivada.
Pégaso
Tem boa convergência, superada apenas por Newton.

Requer conhecimento da forma analítica de f ′( x) .


Newton
Convergência extraordinária.
Difícil de encontrar uma função de iteração que satisfaça a condição
de convergência.
Iteração
O teste f ( x0 )  1 pode levar a um engano se x0 não estiver suficien-
Linear
temente próximo à raiz.
A velocidade de convergência é inversamente proporcional à f ′(e) .

Fonte: adaptada de Barroso et al. (1987).

Chegamos ao fim da nossa primeira unidade, cuja finalidade foi mostrar as possíveis
formas de como calcular raízes de equações algébricas e transcendentes.
Vimos que cada método tem sua particularidade que o caracteriza singularmente
e, mesmo sendo o de Newton o mais indicado para diversas situações, isso não o
torna o melhor método. O que torna o método o melhor é a exigência e informação
fornecida por cada situação que será calculada. Podemos dizer que a escolha do me-
lhor método para se encontrar a raiz de uma equação está diretamente ligada com as
suas características, ou seja, depende do comportamento na função na região da raiz
exata, das dificuldades com o cálculo de f ′( x) , critério de paradas etc.
De forma geral, a escolha do método está ligada à natureza e características dos
seus dados de entrada, sendo a qualidade e a eficácia do método ligados diretamente
à assertividade da análise prévia dos dados iniciais.
Observamos, desde o início, como os computadores nos auxiliarão em cálculos
que precisam de um determinado nível de precisão e de repetição de métodos, coisas
que os computadores fazem muito bem e que, para nós, são maçantes.

30 Métodos Numéricos
Você pode utilizar seu diário de bordo para a resolução.

1. Sobre equações algébricas e transcendentes:


I) As equações algébricas são aquelas funções y = f ( x) , que puderam ser
n n 1
expressas na forma f n y  f n 1 y  ...  f1 y  f0  0 , em que fi é um
polinômio de grau n em x .
II) Os polinômios são uma classe simples de funções algébricas que são repre-
2 n
sentadas, em geral, por f n ( x)  a0  a1 x  a2 x  ...  an x (em que n é o grau
do polinômio e os a’s são constantes).
III) f ( x)  ln x2  1 é um exemplo de equação algébrica.
IV) Uma função transcendental é uma que não é algébrica. Incluem-se as funções
trigonométricas, exponenciais, logarítmicas e outras funções menos familiares.

Assinale a alternativa correta:


a) Apenas I e II estão corretas.
b) Apenas II e III estão corretas.
c) Apenas I está correta.
d) Apenas I, II e IV estão corretas.
e) Nenhuma das alternativas está correta.

2
2. Dada a função f ( x)  x  log10 x , encontre a raiz pelo método da bissecção.
(sendo a=0,5; b=1,0; E=0,005).
a) r  0, 987  0, 004
b) r  0, 244  0, 003
c) r  0, 526  0, 005
d) r  0, 421  0, 006
e) r  0, 735  0, 005

31
3. Use o método das cordas para fazer uma estimativa da raiz de
f ( x)  x3  9 x  3 . Comece com as estimativas iniciais de x1  0 e x0 = 1, 0 .
Assinale a alternativa correta:

x1 = 0, 45327
a)
x2 = 0, 34567
x3 = 0, 26743

x1 = 0, 83270
b) x2 = 0, 70384
x3 = 0, 50045

x1 = 0, 37500
c) x2 = 0, 33194
x3 = 0, 33763

x1 = 0, 85900
d) x2 = 0, 09546
x3 = 0, 00356

x1 = 0, 61270
e) x2 = 0, 56384
x3 = 0, 56717

32
FILME

O Jogo da Imitação
Ano: 2014
Sinopse: durante a Segunda Guerra Mundial, o governo britânico monta uma
equipe que tem por objetivo quebrar o Enigma, o famoso código que os ale-
mães usam para enviar mensagens aos submarinos. Um de seus integrantes é
Alan Turing (Benedict Cumberbatch), um matemático de 27 anos estritamente
lógico e focado no trabalho, que tem problemas de relacionamento com prati-
camente todos à sua volta. Não demora muito para que Turing, apesar de sua
intransigência, lidere a equipe. Seu grande projeto é construir uma máquina que
permita analisar todas as possibilidades de codificação do Enigma em apenas
18 horas, de forma que os ingleses conheçam as ordens enviadas antes que
elas sejam executadas. Entretanto, para que o projeto dê certo, Turing terá
que aprender a trabalhar em equipe e temem Joan Clarke (Keira Knightley) sua
grande incentivadora.

WEB

Métodos Numéricos - Aula 01 - Introdução: motivação e exemplos iniciais


Esse é o primeiro vídeo de uma série de aulas sobre métodos numéricos da
Univesp. Você pode complementar seu conhecimento com essa série.
Para acessar, use seu leitor de QR Code.

33
BARROSO, L. C.; BARROSO, M. M. A.; CAMPOS, F. F. C.; CARVALHO, M. L. B.; MAIA, M. L. Cálculo numé-
rico (com aplicações). 2. ed. São Paulo: Harbra, 1987.

CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.

GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre:
Bookman,2008.

HUMES, A. F. P. C.; MELO, I. S. H.; YOSHIDA, L. K.; MARTINS, W. T. Noções de cálculo numérico. São Paulo:
McGraw-Hill do Brasil, 1984.

34
1. D.

A afirmação III está incorreta, pois a expressão é transcendente e não algébrica.

2.
A ± B R ± ER
0,5 - 1,0 0,75 + 0,5
0,5 - 0,75 0,625 + 0,25
0,5 - 0,625 0,5625 + 0,125
0,5 - 0,5625 0,5313 + 0,0625
0,5 - 0,5313 0,5157 - 0,0313
0,5157 - 0,5313 0,5235 - 0,0156
0,5235 - 0,5313 0,5274 + 0,0078
0,5235 - 0,5274 0,5255 - 0,0039

R = 0, 526 ou r  0, 526  0, 005


f ( xn )
3. Aplicando a fórmula xn 1  xn  ( xn  c), temos:
f ( xn )  f (c)

f 1 5 5
x1  1  1  0   1   1   0, 375
f 1  f  0  5  3 8

f  0, 375 
x2  0, 375   0, 375  1
f  0, 375   f 1

0, 32226
 0, 375   0, 625 
0, 32226   5 

= 0, 331942348

f  0, 33194 
x3  0, 33194   0, 33194  0, 375 
f  0, 33194   f  0, 375 
0, 049114531
 0, 33194   0, 04306 
0, 049114531   0, 32226 
= 0, 33763414

Portanto,

x1 = 0, 37500
x2 = 0, 33194
x3 = 0, 33763

35
36
37
38
Me. André Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos

Solução de Sistemas de
Equações Lineares

PLANO DE ESTUDOS

Solução de
Métodos Jacobi
Sistemas Triangulares

Sistemas de
Métodos Gauss Métodos Gauss-Seidel
Equações Lineares

OBJETIVOS DE APRENDIZAGEM

• Apresentar o conceito de sistemas de equações lineares • Entender a utilização dos Métodos Jacobi para solucionar
e possíveis aplicações. sistemas.
• Identificar sistemas triangulares e aplicar a decomposição • Utilizar os métodos Gauss-Seidel para obter as soluções
de sistemas. de sistemas lineares.
• Estudar o procedimento de solução de sistemas lineares
proposto por Gauss.
Sistemas
de Equações Lineares

Olá, aluno(a)! Espero que você tenha chegado


bem à nossa segunda unidade e que tenha com-
preendido bem a unidade sobre os métodos nu-
méricos. Em sua caminhada pelo conhecimento, é
importante que você realize as atividades, faça os
exercícios e refaça os exemplos. São boas formas
de fixar o conteúdo. Além disso, é o momento em
que surgem as dúvidas que precisam ser sanadas
para uma melhor compreensão.
Agora, o foco do nosso estudo está nos Sis-
temas de Equações Lineares. Esses sistemas são
aqueles nos quais temos equações com um núme-
ro grande de variáveis dependentes. Esses sistemas
têm vasta aplicabilidade na engenharia, como cál-
culos estruturais e redes elétricas, porém, assim
como Gilat e Subramaniam (2008) explicam, além
da engenharia e ciência, os sistemas de equações
lineares são aplicados virtualmente em todas as
demais áreas, tais como negócios, estatística e eco-
nomia, por exemplo, em que um sistema de duas
ou três equações com duas ou três incógnitas po-
dem ser resolvidos manualmente por substituição
ou com o uso de métodos numéricos.

40 Solução de Sistemas de Equações Lineares


Para resolver esses sistemas de equações lineares de forma computacional, apli-
caremos, nesta unidade, métodos diretos e iterativos. Juntos, compreenderemos a
importância desses tópicos e sua aplicabilidade.

Classificação de Sistemas Lineares

Como já vimos, sistemas de equações lineares são amplamente utilizados para cál-
culos de estruturas, redes elétricas ou solução de equações diferenciais, tornando-se
um problema de grande interesse prático.
Formalmente, temos uma equação linear quando cada termo da equação apresen-
ta apenas uma variável, que aparece apenas na primeira potência (FRANCO, 2006).
2
Com isso, uma equação 3 xy = 0 não é linear, nem uma equação 2 x  3 x  1  0 .
Sendo assim, um Sistema de n Equações Lineares ou um Sistema Linear de
Ordem n é um conjunto de n equações lineares com n variáveis. Resolver um sis-
tema linear significa encontrar os valores para as n variáveis de forma que todas as
equações sejam satisfeitas simultaneamente (FRANCO, 2006).
Um sistema linear Sn pode ser escrito da seguinte forma:

a11 x1  a12 x2  ...  a1n xn  b1


a x  a x  ...  a x  b
 2n n
Sn   21 1 22 2 2


an1 x1  an2 x2  ...  ann xn  bn

ou
n
Sn   aij x j  bi , i  1, 2,..., n
j 1

Sob a forma matricial Sn pode ser escrita como:


Ax = b

em que A é uma matriz nxn, x e b são vetores de n elementos.


Os sistemas lineares podem ser classificados como:
• Sistema possível (ou consistente): quando possui, pelo menos, uma solução.
• Sistema impossível (ou inconsistente): quando não admite solução.

UNIDADE 2 41
Dentre os sistemas possíveis, temos os sistemas determinados, quando admitem
uma única solução, ou indeterminados, quando admitem mais de uma solução
(FRANCO, 2006).
Por exemplo, dados os três sistemas a seguir:

x  y  3 x  2 y  3 2 x  y  5
(I )  ( II )  ( III ) 
x  y  1 2 x  4 y  6 2 x  y  1

Para o sistema linear (I), temos apenas um par de x e y que satisfazem o sistema, que
é: x = 2 e y = 1 . Portanto, é um sistema possível e determinado.

Para resolver circuitos eletrônicos e determinar as grandezas de tensões, correntes


ou resistência, muitas vezes podemos utilizar as Leis de Kirchhoff, em que temos a
lei das malhas e a lei dos nós, que nos dizem que: (i) a soma das tensões em uma
malha é igual a zero e (ii) a soma das correntes em um nó é zero.
Essas leis produzem equações lineares que podem ser resolvidas a partir de um
sistema linear. Dependendo do tamanho do circuito e do tamanho da malha, um
sistema computacional com métodos numéricos se mostra bem eficaz para resolver
um circuito.

Ao representar as duas equações do sistema em um gráfico, podemos observar o


ponto onde as retas se encontram, que é exatamente a nossa solução.
x+
y=

=1
3

x -y

Figura 1 - Representação do encontro das equações de um sistema possível e determinado


Fonte: os autores.

42 Solução de Sistemas de Equações Lineares


Perceba que o sistema linear (II) é um sistema possível, porém indeterminado, pois as
retas de ambas equações são coincidentes, ou seja, o sistema admite infinitas soluções.
Por exemplo, os pares (0, 1,5), (1, 1) ou (3, 0) são soluções para as equações de (II).
Graficamente, vemos como as retas se sobrepõem.

2x+
4
x+2 y=6
y=3

Figura 2 - Representação do encontro das equações de um sistema possível e indeterminado


Fonte: os autores.

Por último, o sistema linear (III) é um sistema impossível, pois não há valores para
x e y que satisfaçam as duas equações simultaneamente. Isto é, temos duas retas que
nunca se encontram, ou sejam, retas paralelas no plano. São chamadas de equações
contraditórias (FRANCO, 2006).
2x+

2x+
y
=1

y=
5

Figura 3 - Representação das equações de um sistema impossível


Fonte: os autores.

UNIDADE 2 43
Métodos Diretos (Exatos) ou Iterativos

Para resolver sistemas lineares, utilizaremos métodos numéricos para sistemas de


ordem n que possuem uma única solução, ou seja, sistemas lineares possíveis deter-
minados.
Temos dois tipos de métodos numéricos utilizados para resolver sistemas de equa-
ções lineares algébricas, são eles os diretos, também chamados de exatos, e os métodos
iterativos. Nos métodos diretos, a solução é obtida com a realização de operações
algébricas nas equações. Nos métodos iterativos, uma solução inicial aproximada é
assumida e, então, utilizada em um processo iterativo para que soluções mais precisas
sejam obtidas sucessivamente (GILAT; SUBRAMANIAM, 2008).
Os métodos diretos e os métodos iterativos possuem vantagens e desvantagens.
O método direto pode encontrar uma solução exata, se houver, e, desconsiderando
erros de arredondamento, em um número finito de operações, enquanto os métodos
iterativos podem exigir um número infinito de operações para chegar à solução exata.
Os métodos iterativos possuem erro de truncamento e arredondamento, enquanto
os métodos exatos possuem apenas erros de arredondamento.
Contudo, em sistemas de grande porte, os erros de arredondamento em métodos
diretos podem levar a soluções sem significado, enquanto em métodos iterativos não
há acumulação de erros de arredondamento (FRANCO, 2006).

44 Solução de Sistemas de Equações Lineares


Solução de
Sistemas Triangulares

Prezado(a) aluno(a), vamos dar uma rápida re-


cuada nesta aula, enfatizando que, nos métodos
diretos, manipulamos o sistema inicial, de forma
a facilitar a sua resolução, ou seja, encontramos
sistemas equivalentes, que nos permitem encon-
trar a mesma solução, porém de uma maneira
mais simples.
As formas mais comuns de manipulação são
os sistemas triangular superior, triangular inferior
e diagonal apresentados nos exemplos a seguir.

Sistemas Triangulares
Inferior, Triangular
Superior e Diagonal

Um sistema é considerado triangular inferior


se ele pode ser escrito como o exemplo a seguir,
em que há valores apenas nas posições que com-
põe a diagonal da matriz e nas posições abaixo
da diagonal. As posições acima da diagonal são
todas nulas (zero).

UNIDADE 2 45
 a11 0 0 0   x1   b1 
a a22 0 0   x2  b2 
 21 
 a31 a32 a33 0   x3   b3 
    
 a41 a42 a43 a44   x4  b4 

a11 x1  b1
a x  a x  b2
 21 1 22 2
a31 x1  a32 x2  a33 x3  b3
  

an1 x1  an2 x2  an3 x3  …  ann xn  bn

Se o sistema linear puder ser escrito na forma de uma matriz triangular inferior, fa-
cilmente percebemos que ele pode ser resolvido por meio de substituições simples,
iniciando pelo valor obtido na primeira equação, em que há apenas uma variável.
De forma análoga, um sistema linear de ordem n é triangular superior quando
possui valores apenas na diagonal e acima da diagonal da matriz A que forma o sistema.
 a11 a12 a13 a14   x1   b1 
0
 a22 a23 a24   x2   b2 

0 0 a33 a34   x3   b3 
    
0 0 0 a44   x4  b4 

a11 x1  a12 x2  a13 x3  …  a1n xn  b1


 a22 x2  a23 x3  …  a2 n xn  b2

 a33 x3  …  a3n xn  b3
  

 ann xn  bn

Da mesma forma, também pode ser resolvido por meio de substituições simples, a
partir da última equação, que possui apenas uma variável, com o resultado direto.
Por fim, temos o sistema linear diagonal, que é escrito de forma em que há valo-
res apenas na diagonal principal da matriz A, gerando o sistema. Dessa forma, cada
equação terá apenas um termo com uma variável cada, o que já nos entrega a solução
do sistema (GILAT; SUBRAMANIAM, 2008).
a11 x1  b1
 a11 0 0 0   x1   b1  a x  b
0 0   x2   b2   22 2 2
 a22 0
 a33 x3  b3
0 0 a33 0   x3   b3    
     
0 0 0 a44   x4  b4 
ann xn  bn

46 Solução de Sistemas de Equações Lineares


Decomposição LU

Em geral, os sistemas de equações lineares não são sistemas triangulares como os que
foram apresentados. Contudo, podemos decompor uma matriz quadrada A = (aij )
no produto de uma matriz triangular inferior por uma matriz triangular superior.
Temos o seguinte teorema, conhecido como Teorema LU:

1 TEOREMA sejam A = (aij ) a matriz quadrada de ordem n, e Ak o menor principal, constituído


das k primeiras linhas e k primeiras colunas de A. Assumimos que det( Ak ) ≠ 0 para
k  1, 2,..., n  1 . Então, existe uma única matriz triangular inferior L = ( ij ) , com
=11 = 22 = ... = nn 1 , e uma única matriz triangular U = (uij ) , tal que LU = A .
Além disso, det( A) = u11u22 ...unn (FRANCO, 2006).
Não iremos, neste curso, demonstrar a prova do teorema, porém, ele serve de base
para realizarmos a decomposição LU.
A decomposição de uma matriz em uma matriz L (triangular inferior) e uma
matriz U (triangular superior) pode ser feita a partir da igualdade . De forma prática,
as matrizes L e U podem ser representadas como:
 1   u11 u12 u13 ... u1n 
  
  21 1  u22 u23 ... u2 n 
LU    31  32 1  u33 ... u3n 
  
 ... ... ... 1  ... ... 

 n1  n2  n3 ... 1   unn 

Tenha sua dose extra de conhecimento assistindo ao vídeo.


Para acessar, use seu leitor de QR Code.

Decomposição LU Passo a Passo

Podemos calcular os elementos das matrizes L e U seguindo os seguintes passos


(FRANCO, 2006):
1a linha de U: calculamos o produto da primeira linha de L por todas as colunas
de U, igualando com os elementos da primeira linha de A:

UNIDADE 2 47
1  u11  a11  u11  a11

1  u12  a12  u12  a12

...
1  u1n  a1n  u1n  a1n

Logo,
u1 j a=
= 1 j , j 1, 2,..., n

1a coluna de L: calculamos o produto de todas as linhas de L (a partir da segunda


linha) pela 1a coluna de U, igualando com os elementos da 1a coluna de A:

a21
 21u11  a21   21 
u11
a31
 31u11  a31   31 
u11

...
a
 n1u11  an1   n1  n1
u11

Logo,
ai1
=
 i1 = , j 2, 3,..., n
u11

2a linha de U: podemos calcular o produto da 2a linha de L por todas as colunas de


U (a partir da segunda), igualando com os elementos da 2a linha de A (a partir da
diagonal principal):
 21u12  u22  a22  u22  a22   21u12

 21u13  u23  a23  u23  a23   21u13

...
 21u1n  u2 n  a2 n  u2 n  a2 n   21u1n

Logo,
u2 j  a2 j   21u1 j , j  2, 3,..., n

48 Solução de Sistemas de Equações Lineares


2a coluna de L: obtemos a 2a coluna de L calculando o produto de todas as linhas
de L (a partir da terceira) pela segunda coluna de U, igualando aos elementos da 2a
coluna de A (a seguir da diagonal principal):
a32   31u12
 31u12   32u22  a32   32 
u22
a42   41u12
 41u12   42u22  a42   42 
u22

...
a  u
 n1u12   n2u22  an2   n2  n2 n1 12
u22

Logo,
ai 2   i1u12
 i2  , i  3,..., n
u22

O processo continua pelas próximas linhas e colunas, levando às fórmulas gerais a


seguir:
 i 1
uij  aij    ik ukj , i  j ,
 k 1
 j 1
  
 ij  ij   ik ukj  / u jj , i  j.
   a 
  k 1 

Aplicando a Decomposição LU
a Sistemas Lineares

Temos por definição que um sistema de equações lineares pode ser escrito como
Ax = b . Sendo um sistema que satisfaz as condições para a decomposição LU, vimos
que LU = A , logo, nosso sistema pode ser escrito na forma LUx = b .
Então, para encontrar a solução do sistema decomposto, podemos fazer Ux = y
e aplicar na equação anterior, para resolver primeiro pelo sistema triangular inferior,
tendo Ly = b . Ao obter o vetor y, aplicamos na equação em relação ao sistema trian-
gular superior para obter o vetor x, que é a solução para o nosso sistema original.
Mais adiante, em nosso livro, veremos como esse método pode ser aplicado em
programação, utilizando sistemas como Matlab ou Octave para solucionar sistemas
lineares.

UNIDADE 2 49
Métodos
Gauss

Caro(a) aluno(a), resolveremos, agora, um sis-


tema de equação linear pelo método de Gauss,
que, apesar de ser um dos métodos mais antigos
para resolver equações simultâneas, mantém-se
como um dos algoritmos mais importantes. É a
base da resolução de equações lineares em mui-
tos pacotes de software populares (CHAPRA;
CANALE, 2011).
Nesse procedimento, um sistema de equações
genérico é manipulado até apresentar a forma
triangular superior, que é então resolvida com
o emprego da substituição regressiva (GILAT;
SUBRAMANIAM, 2008).
Para ajudar na compreensão deste método,
vamos resolver um exemplo:

50 Solução de Sistemas de Equações Lineares


1 EXEMPLO Resolver (BARROSO et al., 1987):
2 x1  3 x2  x3  5

4 x1  4 x2  3 x3  3
2 x  3 x  x  1
 1 2 3

Resolução: pelo método de Gauss


1ª etapa:
Escreve-se a matriz aumentada apresentada do sistema:
2 3 1 | 5
B0   4 4 3 | 3    A | b 
 2 3 1 | 1

(0 ) (0 ) (0 )
Fazendo B0 = B e chamando de L1 , L2 , L3 as linhas 1, 2 e 3, respectivamente,
(0 )
de B0 , escolhe-se a11 como pivô e calculam-se os multiplicadores:
a (0) 4
m21(0)  21(0)   2
a11 2

a31(0) 2
m31(0)    1
a11(0) 2
Fazem-se, agora, as seguintes transformações elementares sobre as linhas de B0 :
L1(0) → L1(1)

m21(0) L1(0)  L2(0)  L2(1)

m31(0) L1(0)  L3(0)  L3(1)

L1(1) , L2(1) , L3(1) são linhas da matriz transformada B1 .


Finaliza-se, assim, a 1ª etapa, que consiste em eliminar todos os valores a seguir
(0 )
do pivô a11 = 2 .
Efetuando-se as transformações na matriz apresentada, tem-se:
 2 3 1 | 5 
 
B1   0 2 1 | 7    A | b 
 0 6 2 | 6 


UNIDADE 2 51
2ª etapa
(1)
Escolhe-se a22  2 como pivô e calcula-se o multiplicador:

a32(1) (6)
m32(1)  (1)
  3
a22 2

São feitas, agora, as seguintes transformações elementares sobre as linhas B1 :

L1(1) → L1(2)

L2(1) → L2(2)

m32(1) L2(1)  L3(1)  L3(2)

L1(2) , L2(2) , L3(2) são linhas da matriz transformada B2 , que já está na forma
triangular:
2 3 1 | 5
B2   0 2 1 | 7    A | b 
 0 0 5 | 15 

sendo a matriz B2 a matriz aumentada do sistema triangular superior:

2 x1  3 x2  x3  5

 2 x2  x3  7
 5 x3  15

T
Resolvendo-o por substituição retroativas, obtém-se a solução x  1 2 3 , que
é também a solução do sistema dado, uma vez que são equivalentes.

52 Solução de Sistemas de Equações Lineares


Métodos
Jacobi

Sigamos adiante em nossos métodos numéri-


cos. Segundo Gilat e Subramaniam (2008), nos
métodos iterativos, as equações são colocadas
em uma forma explícita na qual cada incógnita
é escrita em termos das demais incógnitas.

Existem diversas operações matemáticas que reali-


zamos em nosso dia a dia, principalmente na área
de Engenharias, em que precisamos do cálculo
numérico para resolver. Não nos damos muito
conta disso porque, quando precisamos, pegamos
uma calculadora e ela realiza o trabalho pesado.

UNIDADE 2 53
A forma explícita de um sistema de equações, que foi adaptado de Gilat e Subrama-
niam (2008), é ilustrada a seguir: à direita (a) está a forma padronizada; à esquerda
(b) está a forma explícita de um sistema de quatro equações.
a11 x1  a12 x2  a13 x3  a14 x4  b1 x1  [b1  (a12 x2  a13 x3  a14 x4 )] / a11
a21 x1  a22 x2  a23 x3  a24 x4  b2 Escrevendo as equações x2  [b2  (a21 x1  a23 x3  a24 x4 )] / a22
a31 x1  a32 x2  a33 x3  a34 x4  b3 de forma explícita x3  [b3  (a31 x1  a32 x2  a34 x4 )] / a33
a41 x1  a42 x2  a43 x3  a44 x4  b4  x4  [b4  (a41 x1  a42 x2  a43 x3 )] / a44
(a) (b)

Ainda como Gilat e Subramaniam (2008) explicam, o processo de solução começa


com a escolha de valores iniciais para as incógnitas (primeira solução estimada).
Na primeira iteração, a primeira solução assumida é substituída no lado direito
das equações, e os novos valores calculados para as incógnitas formam a segunda
solução estimada. Na segunda iteração, a segunda solução é substituída de volta nas
equações para que novos valores sejam obtidos para as incógnitas, e isso constitui
a terceira solução estimada. As iterações continuam da mesma forma e, quando
o método dá certo, as soluções obtidas durante as iterações sucessivas convergem
para a solução real. Em um sistema com n equações, as equações explícitas para
as incógnitas [xi] são (ARENALES; DAREZZO, 2016):
  
1   j n (k ) 
xi ( k 1)  bi    aij x j   , i = 1, 2, ..., n
aii   j 1 
  j i  

De acordo com Barroso et al. (1987), o Método Jacobi funciona do seguinte modo:
(0 )
a) Escolhe-se uma aproximação inicial x .
(k )
b) Geram-se aproximações sucessivas de x a partir da iteração:

x ( k 1)  Fx ( k )  d , k = 0, 1, 2, ...

c) Continua-se a gerar aproximações até que um dos critérios a seguir sejam


satisfeitos:
( k 1)
• max xi  xi ( k )  e , em que e é a tolerância
ou
• k > M , em que M é o número máximo de iterações.

Observação: a tolerância e fixa o grau de precisão das soluções.

54 Solução de Sistemas de Equações Lineares


Métodos
Gauss-Seidel

Passamos, agora, ao próximo método em nosso


estudo. Seguindo a linha de explicação de Barroso
et al. (1987), se temos o sistema Ax = b , o método
iterativo de Gauss-Seidel consiste em:
a) Partindo-se de uma aproximação inicial
 
t
x (0)  x1(0) , x2(0) ,..., xn (0) .

b) Calcula-se a sequência de aproximações


x (1) , x (2) ,..., x ( k ) ,... , utilizando-se as
equações:

UNIDADE 2 55
1 
x1( k 1)  b1  a12 x2( k )  a13 x3( k )  ...  a1n xn ( k ) 
a11  

1 
x2( k 1)  b2  a21 x1( k )  a23 x3( k )  ...  a2 n xn ( k ) 
a22  

1 
xn ( k 1)  bn  an1 x1( k 1)  an2 x2( k 1)  ...  an,n1 xn1( k 1) 
ann  

ou, então,

 i 1 n  i  1, 2,..., n
xi ( k 1)  d    Fij x (jk 1)   ij j  , onde k  0,1, 2,...
F x (k )
 j 1 j i 1  

c) Continua-se a gerar aproximações até que um dos critérios a seguir sejam


satisfeitos:
• max xi ( k 1)  xi ( k )  e , com tolerância 1 ≤ i ≤ n ou

• k > M , em que M é o número máximo de iterações.

Sendo assim, percebemos que os métodos iterativos podem ser executados até chegar a
um limite mínimo de tolerância (erro) ou até um número máximo de iterações. Devemos
lembrar que, por mais que os sistemas computacionais sejam cada vez mais potentes e
baratos, ainda são finitos e limitados. Uma aproximação boa o suficiente muitas vezes é
o que precisamos.
Terminamos, então, nossa unidade sobre Sistemas de Equações Lineares. Vale lembrar
que adiante veremos como aproveitar esse conhecimento em linguagens computacionais.
Ainda temos mais a tratar sobre o cálculo numérico, mas até aqui você já deve ter per-
cebido que encontramos formas de automatizar processos mecânicos de cálculos e, por
vezes, utilizamos caminhos diferentes do que usaríamos para calcular manualmente. Isso
é necessário, pois a máquina não tem a mesma visão do todo e do contexto que nós temos.
É importante frisar que não precisamos ter medo dessas fórmulas e desses cálculos,
porque, a partir do ponto em que eles foram estabelecidos, esse processo será passado para
as máquinas calcularem. Para elas, um processo mecânico repetitivo é simples e menos
suscetível a erros do que quando nós fazemos os cálculos.
Continue firme em seus estudos e nos vemos na próxima unidade!

56 Solução de Sistemas de Equações Lineares


Você pode utilizar seu diário de bordo para a resolução.

1. Nos métodos diretos, manipulamos o sistema inicial, de forma a facilitar a sua


resolução, ou seja, encontramos sistemas equivalentes, que nos permitem en-
contrar a mesma solução, porém de uma maneira mais simples.
Considerando o texto, avalie as afirmações a seguir.
I) Um sistema triangular inferior necessita de um sistema triangular superior
para que a solução seja encontrada.
II) A partir da manipulação de sistemas lineares, podemos deixá-los na forma
triangular, de onde a solução é obtida de forma mais fácil.
III) A decomposição LU gera duas matrizes triangulares a partir de um sistema
original.
IV) Um sistema triangular superior possui apenas valores 0 (zero) na parte su-
perior da matriz, ou seja, acima da diagonal principal.
Está correto o que se afirma em:
a) Apenas I e II estão corretas.
b) Apenas II e III estão corretas.
c) Apenas III e IV estão corretas.
d) Apenas I, II e III estão corretas.
e) Apenas II, III e IV estão corretas.

5 3
2. Dada a matriz A   8 4  , faça a decomposição de A em LU, ou seja, em uma
 
matriz triangular inferior e uma matriz triangular superior.

3. Como o nome diz, um sistema de equações lineares possui apenas equações


ditas lineares. Dentre as equações a seguir, assinale a equação que é não linear.
a) 3x + 4y = z
b) 2t – 5w + 10h = 48
c) 9y + 12k = 5w + 2x
d) 8u + 3yz – 4 = 0
e) t = y

57
FILME

O Homem que viu o Infinito


Ano: 2015
Sinopse: trata-se da história de Srinivasa Ramanujan, matemático indiano que
fez importantes contribuições para o mundo da matemática, bem como a teoria
dos números, a série e frações contínuas.

58
ARENALES, S.; DAREZZO, A. Cálculo Numérico: Aprendizagem com Apoio de Software. 2. ed. São Paulo:
Cengage, 2016.

BARROSO, L. C.; BARROSO, M. M. A.; CAMPOS, F. F. C.; CARVALHO, M. L. B.; MAIA, M. L. Cálculo numé-
rico (com aplicações). 2. ed. São Paulo: Harbra, 1987.

CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.

FRANCO, N. M. B. Cálculo Numérico. Pearson: São Paulo, 2006.

GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre: Bookman,
2008.

59
1. B.

2.
5 3
A 
8 4
u11  a11  5
u12  a12  3
11  1
12  0
a21 8
 21    1, 6
u11 5
u21  0
u22  a22   21u12  4  1, 6  3  0, 8
 22  1
 1 0
L 
 1, 6 1 
5 3 
U  
 0 0, 8 

3. D.

60
61
62
Me. André Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos

Aproximação de Funções

PLANO DE ESTUDOS

Interpolação Linear Interpolação de Lagrange

Aproximação Polinomial Interpolação Quadrática Interpolação de Newton

OBJETIVOS DE APRENDIZAGEM

• Apresentar o conceito de aproximação polinomial e sua • Estudar a interpolação quadrática e sua utilização.
aplicação. • Aprender a utilizar a interpolação de Lagrange.
• Entender o conceito de interpolação linear para aproxi- • Analisar e aplicar o método de interpolação polinomial
mação. de Newton.
Aproximação
Polinomial

Olá, aluno(a), tudo bem? Seja muito bem-vindo(a)


novamente à continuação dos nossos estudos! Nesta
unidade, trataremos de aprofundar nossos conhe-
cimentos e aprender a calcular de forma numérica
problemas que exijam aproximações de funções.
Existem várias formas de se realizar uma apro-
ximação polinomial, como Interpolação, Métodos
dos Mínimos Quadrados, Mini-Max, entre outros.
Para Chapra e Canale (2011), é oportuno fazer
estimativas de valores intermediários entre dados
precisos. O método mais comum usado para esse
propósito é a interpolação polinomial, por isso
dedicaremos o nosso foco agora a esse método.
Dividimos nosso estudo do método de interpo-
lação em: linear, quadrática, Lagrange e interpo-
lação de Newton. Antes de apresentar cada uma,
abordaremos o que vem a ser essa aproximação.

64 Aproximação de Funções
No uso cotidiano, algumas funções podem ser complexas de serem resolvidas e
uma boa forma de simplificar é aproximar essas funções a funções mais simples, de
onde os resultados possam ser obtidos com menos esforço.
Podemos utilizar de aproximações quando precisamos avaliar diferentes pontos
ou quando precisamos derivar ou integrar; também quando temos um conjunto de
pontos da função, mas não sabemos sua forma analítica real (ARENALES; DARE-
ZZO, 2016).
É comum a necessidade de se fazer estimativas de pontos intermediários entre
dados precisos. Para isso, usamos as técnicas de Aproximação Polinomial. O método
mais comum, que discutimos nesta unidade, é a interpolação polinomial. A fórmula
geral para um polinômio de grau n é

f ( x)  a0  a1 x2  ...  an x n

Para n +1 pontos dados, existe um e somente um polinômio de grau n que passa por
todos os pontos. A interpolação polinomial consiste em determinar o único polinômio
de grau n que passa pelos n +1 pontos dados. Esse polinômio, então, fornece uma
fórmula para calcular valores intermediários (CHAPRA; CANALE, 2011).
Este polinômio recebe o nome de polinômio interpolador. O polinômio inter-
polador de uma função f ( x) definida em x0 , x1 ,..., xn (n+1) pontos distintos de um
intervalo  a, b  é o polinômio P ( x) de grau igual ou menor a n, que coincide com a
função nos pontos xi , i = 0,..., n . Isso significa que P=
( xi ) f=
( xi ) yi , y = 0,..., n
(ARENALES; DAREZZO, 2016).

A interpolação gráfica é um recurso bastante utilizado em computação gráfica, seja


para gráficos estáticos 2D ou 3D ou, ainda, para animações e jogos de computador.
A partir da interpolação, é possível “criar” pontos e/ou elementos a partir de um
contexto.
Em jogos de computador, a interpolação pode suavizar efeitos como “zoom in” e
“zoom out”, utilizando o seu cenário e interpolando a modificação da imagem, para
fazer a transição de forma mais suave.
Fonte: Isidro (2016, on-line)1.

UNIDADE 3 65
De uma forma um pouco mais visual, podemos entender um pouco do funciona-
mento por meio da figura a seguir, em que temos alguns pontos da função f(x) e
encontramos um polinômio P(x) que passa por esses pontos.
y
f(x)
yn
Pn (x)
...


Pn (x)

ƒ(x)
y1
y0

x0 = a x1 –
x ... xn = b x
Figura 1 - Exemplo de polinômio interpolador
Fonte: adaptada de Arenales e Darezzo (2016).

Descreveremos no tópico a seguir algumas alternativas de cálculo do método de


interpolação polinomial.

66 Aproximação de Funções
Interpolação
Linear

A forma mais simples de interpolação é ligar dois


pontos dados com uma reta. Essa técnica, chama-
da de interpolação linear, é descrita graficamente
na Figura 2, usando semelhança de triângulos,
que é a fórmula de interpolação linear.

f1 ( x)  f ( x0 ) f ( x1 )  f ( x0 )

x  x0 x1  x0

que pode ser reescrito como:


f ( x1 )  f ( x0 )
f1 ( x)  f ( x0 )  ( x  x0 )
x1  x0

A notação f1 ( x) indica que esse é um polinô-


mio interpolador de primeiro grau. Observe que,
além de representar a inclinação da reta ligando
os pontos, o termo  f ( x1 )  f ( x0 )  / ( x1  x0 ) é
uma aproximação por diferenças divididas finitas
da primeira derivada. Em geral, quanto menor o
intervalo entre os pontos dados, melhor a apro-
ximação, o que se deve ao fato de que, conforme
o intervalo diminui, uma função contínua será
mais bem aproximada por uma reta (CHAPRA;
CANALE, 2011).

UNIDADE 3 67
ƒ(x)

ƒ(x1)

ƒ1(x)

ƒ(x0)

x0 x x1 x
Figura 2 - Representação gráfica de interpolação linear
Fonte: Chapra e Canale (2011, p. 410).

1 EXEMPLO Seja a função y = f ( x) definida pelos pontos (0,00; 1,35) e (1,00; 2,94), determinar
aproximadamente o valor de f (0, 73) (BARROSO et al., 1987).

Resolução: P1 ( x)  a1 x  a0 é o polinômio interpolar de 1º grau que passa pelos


pontos dados. Logo, tem-se:
 P1 (0)  a1  0  a0  1, 35  a0  1, 35

 P1 (1)  a1  1  a0  2, 94  a1  1, 59

P1 ( x)  1, 59 x  1, 35

P1 (0, 73)  1, 59  0, 73  1, 35  2, 51

Segundo Barroso et al. (1987), o resultado obtido no Exemplo 1 está afetado por
dois tipos de erro:
a) Erro de arredondamento (e A ) : é cometido durante a execução das operações
e no caso de o resultado ser arredondado.
b) Erro de truncamento (eT ) : é cometido quando a fórmula de interpolação a
ser utilizada é escolhida, pois a aproximação de uma função conhecida apenas
por meio de dois pontos é feita por um polinômio de 1º grau.

68 Aproximação de Funções
2 EXEMPLO Faça uma estimativa do logaritmo natural de 2 usando uma interpolação linear. Pri-
meiro, faça o cálculo interpolando entre ln(1) = 0 e ln(6) = 1, 791759 . Então, repita
o procedimento, mas use o intervalo menor de ln(1) a ln(4) = 1, 386294 . Observe
que o valor verdadeiro de ln(2) = 0, 6931472 (CHAPRA; CANALE, 2011).

f ( x1 )  f ( x0 )
Resolução: usamos a Equação f1 ( x)  f ( x0 )  ( x  x0 ) e a interpo-
x1  x0

lação linear para ln(2) de x0 = 1 a x1 = 6 para obter:

1, 791759  0
f1 (2)  0  (2  1)  0, 3583519
6 1

o que representa um erro de eT = 48, 3% . O uso do intervalo menor de x0 = 1 a


x1 = 4 fornece:
1, 386294  0
f1 (2)  0  (2  1)  0, 4620981
4 1
Logo, o uso do intervalo menor reduz o erro relativo percentual para eT = 33, 3% .
Ambas as interpolações estão mostradas na Figura 3, junto com a função verdadeira.

ƒ(x)
2 ƒ(x) = In x

Valor
1 verdadeiro
ƒ1(x)

Estimativas lineares

0
0 5 x
Figura 3 - Duas interpolações lineares para estimar ln(2)
Fonte: Chapra e Canale (2011, p. 411).

Pelos exemplos, podemos perceber que, quanto menor o intervalo, mais próxima
será a nossa aproximação. Entretanto, em muitos casos, a aproximação pode trazer
um erro aceitável.

UNIDADE 3 69
Interpolação
Quadrática

Para Chapra e Canale (2011), a interpolação qua-


drática é um método mais preciso do que a linear,
devido ao fato de que a aproximação não é de uma
reta com uma curva. A fim de obter-se uma certa
curvatura, são necessários três pontos, o que pode
ser conseguido com um polinômio de segundo
grau (também chamado de polinômio quadrático
ou de parábola). Uma fórmula particularmente
conveniente para esse propósito é:

f2 ( x)  b0  b1 ( x  x0 )  b2 ( x  x0 )( x  x1 )

Desenvolvendo-a, temos:

f2 ( x)  b0  b1 x  b1 x0  b2 x2  b2 x0 x1  b2 xx0  b2 xx1

Colecionando os termos:

f2 ( x)  a0  a1 x  a2 x2
em que
a0  b0  b1 x0  b2 x0 x1

a1  b1  b2 x0  b2 x1
a2 = b2

70 Aproximação de Funções
Retomando a equação f2 ( x)  b0  b1 ( x  x0 )  b2 ( x  x0 )( x  x1 ) e considerando
x = x0 para encontramos b0 , temos que:

b0 = f ( x0 )

Logo, substituindo b0 = f ( x0 ) na equação f2 ( x)  b0  b1 ( x  x0 )  b2 ( x  x0 )( x  x1 ) ,


e ainda considerando x = x1 , podemos encontrar b1 :

f ( x1 )  f ( x0 )
b1 
x1  x0

Seguindo a mesma lógica, resolvendo a substituição de b0 e b1 em


f2 ( x)  b0  b1 ( x  x0 )  b2 ( x  x0 )( x  x1 ) , e considerando x = x2 , teremos, final-
mente, uma equação para b2 :

f ( x2 )  f ( x1 ) f ( x1 )  f ( x0 )

x2  x1 x1  x0
b2 
x2  x0

Ainda segundo Chapra e Canale (2011), b1 representa a inclinação da reta ligando


os pontos x0 e x1 . Logo, b0  b1 ( x  x0 ) são equivalentes à interpolação linear de
x0 e x1 ; já o último termo, b2 ( x − x0 )( x − x1 ) , introduz a curvatura de segundo
grau na fórmula.

3 EXEMPLO Ajuste um polinômio de segundo grau aos três pontos usados no Exemplo 2, veja a
seguir (CHAPRA; CANALE, 2011):
=x0 1=f ( x0 ) 0
x1 = 4 f ( x1 ) = 1, 386294
x2 = 6 f ( x2 ) = 1, 791759

Use o polinômio para calcular ln(2) .

Resolução: aplicando b0 = f ( x0 ) , temos que b0 = 0 .

Para b  f ( x1 )  f ( x0 )
1
x1  x0

1, 386294  0
b1   0, 4620981
4 1

UNIDADE 3 71
Finalmente, para b2 , temos:
f ( x2 )  f ( x1 ) f ( x1 )  f ( x0 )

x2  x1 x1  x0
b2 
x2  x0

1, 791759  1, 386294
 0, 4620981
b2  64  0, 0518731
6 1

Substituindo esses valores na equação f2 ( x)  b0  b1 ( x  x0 )  b2 ( x  x0 )( x  x1 ) ,


obtém-se a fórmula quadrática:
f2 ( x)  0  0, 4620981( x  1)  0, 0518731( x  1)( x  4)

f2 ( x)  0, 0518731x2  0, 7214636 x  0, 6695905

a qual pode ser calculada em x = 2 para fornecer:

f2 ( x) = 0, 5658444

o que representa um erro relativo de eT = 18, 4% . Logo, a curvatura introduzida


pela fórmula quadrática melhora a interpolação quando comparada com o resultado
obtido usando-se retas no Exemplo 2.
Veja a comparação gráfica entre os Exemplos 2 e 3, em que o Exemplo 2 é repre-
sentado pela linha rosa tracejada, enquanto o Exemplo 3 é representado pela linha
contínua rosa, e a função real pela linha contínua preta:
ƒ(x)
ƒ(x) = In x
2

ƒ2(x)
Valor
1 verdadeiro

Estimativa quadrática
Estimativa linear
0
0 5 x
Figura 4 - Interpolações linear e quadrática (Exemplos 2 e 3)
Fonte: Chapra e Canale (2011, p. 412).

Percebemos o quanto a interpolação quadrática se aproxima mais do que a interpolação


linear do valor real. Podemos encarar como um refinamento da nossa solução.

72 Aproximação de Funções
Interpolação
de Lagrange

Como falamos no tópico anterior, a aproximação


por interpolação não precisa ser feita a partir ape-
nas da definição das funções, mas pode ser feita
a partir de pontos conhecidos. Agora, trabalhare-
mos com a interpolação de Lagrange para realizar
a interpolação a partir desses pontos.



Os polinômios interpoladores de Lagrange
formam uma classe específica de polinô-
mios que podem ser usados para fazer o
ajuste de um determinado conjunto de da-
dos simplesmente a partir dos valores dos
pontos. Os polinômios podem ser escritos
diretamente, e os coeficientes são determi-
nados sem a necessidade de nenhum cálcu-
lo preliminar (GILAT; SUBRAMANIAM,
2008, p. 218).

UNIDADE 3 73
ƒ(x) (x–x2) (x–x1)
ƒ(x)= y1 + y2
(x1–x2) (x2–x1)

(x2, y2)
(x, y)
*
(x1, y1)

Figura 5 - Polinômio de Lagrange de primeira ordem


Fonte: Gilat e Subramaniam (2008, p. 218).

Ainda segundo Gilat e Subramaniam (2008), para dois pontos, ( x1 , y1 ) e ( x2 , y2 ) , o


polinômio de Lagrange de primeira ordem (Figura 5) tem a forma:

f ( x)  y  a1 ( x  x2 )  a2 ( x  x1 )

Podemos substituir os pontos na equação, o que nos leva a:

y1
y1  a1 ( x1  x2 )  a2 ( x1  x1 ) ou a1  e
( x1  x2 )
y2
y2  a1 ( x2  x2 )  a2 ( x2  x1 ) ou a2 
( x2  x1 )

Depois, pode-se substituir a1 e a2 de volta na equação para obter:


( x  x2 ) ( x  x1 )
f ( x)  y1  y2
( x1  x2 ) ( x2  x1 )

Nesse caso, obtemos uma função linear, na qual, se x = x1 , teremos o polinômio igual
a y1 . No caso de x = x2 , podemos ver que o polinômio seria y2 . Quando x for um
outro valor, entre x1 e x2 , teremos um valor que é a interpolação em y.
Podemos, ainda, escrever a equação como:
( y2  y1 ) x y x y
f ( x)  x 2 1 1 2
( x2  x1 ) ( x2  x1 )

Se trabalharmos em função de três pontos, ou seja, ( x1 , y1 ) , ( x2 , y2 ) e ( x3 , y3 ) , o


polinômio de Lagrange de segunda ordem tem a forma:
f ( x)  y  a1 ( x  x2 )( x  x3 )  a2 ( x  x1 )( x  x3 )  a3 ( x  x1 )( x  x2 )

74 Aproximação de Funções
E o polinômio que passa pelos três pontos:

( x  x2 )( x  x3 ) ( x  x1 )( x  x3 ) ( x  x1 )( x  x2 )
f ( x)  y1  y2  y3
( x1  x2 )( x1  x3 ) ( x2  x1 )( x2  x3 ) ( x3  x1 )( x3  x2 )

Esta equação já é uma equação quadrática, diferente da anterior. Segundo Gilat e


Subramaniam (2008):



Quando a coordenada x1 , x2 ou x3 de um dos três pontos é substituída, o va-
lor do polinômio é igual a y1 , y2 ou y3 , respectivamente. Isso ocorre porque o
coeficiente na frente do termo yi correspondente é igual a 1 e o coeficiente dos
outros dois termos é igual a zero (GILAT; SUBRAMANIAM, 2008, p. 219).
(x-x2)(x-x3) (x-x1)(x-x3)
ƒ(x)= y1 + y2
(x1-x2)(x1-x3) (x2-x1)(x2-x3)
(x-x1)(x-x2)
+ y3
ƒ(x) (x3-x1)(x3-x2)

(x3, y3)

(x, y)
(x2, y2)
*

(x1, y1)
x

Figura 6 - Polinômio de Lagrange de segunda ordem


Fonte: Gilat e Subramaniam (2008, p. 219).

Como podemos trabalhar com diferentes números de pontos para o polinômio,


uma fórmula geral para o polinômio de Lagrange, que passe por n pontos, é descrita
a seguir:
( x  x2 )( x  x3 )...( x  xn ) ( x  x1 )( x  x3 )...( x  xn )
f ( x)  y1  y2 
( x1  x2 )( x1  x3 )...( x1  xn ) ( x2  x1 )( x2  x3 )...( x2  xn )
( x  x1 )( x  x2 )...( x  xi 1 )( x  xi 1 )...( x  xn )
...  yi  ... 
( xi  x1 )( xi  x2 )...( xi  xi 1 )( xi  xi 1 )...( xi  xn )
( x  x1 )( x  x2 )...( x  xn1 )
yn
( xn  x1 )( xn  x2 )...( xn  xn1 )

De forma compacta, para não assustar (tanto):

UNIDADE 3 75
n n n (x  x j )
f ( x)   yi Li ( x)   yi 
i 1 i 1 j 1 ( xi  xj)
j i

n (x  x )
j
L
em que as funções i ( x )   ( x  x ) são chamadas de funções de Lagrange. Essa
j 1 i j
j i

forma pode ser facilmente implementada em um programa de computador (GILAT;


SUBRAMANIAM, 2008).

4 EXEMPLO Use um polinômio interpolador de Lagrange de primeiro e segundo graus para cal-
cular ln(2) com base nos dados fornecidos no Exemplo 2, veja a seguir (CHAPRA;
CANALE, 2011):
=x0 1= f ( x0 ) 0
x1 = 4 f ( x1 ) = 1, 386294
x2 = 6 f ( x2 ) = 1, 791759

Resolução: o polinômio de primeiro grau pode ser usado para se obter a estimativa
em x = 2 ,
( x  x2 ) ( x  x1 )
f ( x)  y1  y2
( x1  x2 ) ( x2  x1 )
(2  4) (2  1)
f1 (2)  0 1, 386294  0, 4620981
(1  4) (4  1)

De modo semelhante, o polinômio de segundo grau é desenvolvido como:


( x  x2 )( x  x3 ) ( x  x1 )( x  x3 ) ( x  x1 )( x  x2 )
f ( x)  y1  y2  y3
( x1  x2 )( x1  x3 ) ( x2  x1 )( x2  x3 ) ( x3  x1 )( x3  x2 )

(2  4)(2  6) (2  1)(2  6) (2  1)(2  4)


f2 (2)  0 1, 386294  1, 791760
(1  4)(1  6) (4  1)(4  6) (6  1)(6  4)

f2 (2) = 0, 5658444

Apesar de utilizar métodos diferentes, conseguimos os mesmos valores que obtivemos


ao calcular a interpolação quadrática.

76 Aproximação de Funções
Interpolação
de Newton

Para introduzir a interpolação de Newton, preci-


samos apresentar o conceito de diferenças divi-
didas. Dados os pontos x0 , x1 ,..., xn que são n+1
pontos em um intervalo  a, b  , e f0 , f1 ,..., f n
os n+1 valores de uma função aplicada a esses
pontos, a diferença dividida de uma função f ( x)
pode ser definida como:
f [ xk ] f=
= ( xk ), k 0, 1,..., n,
f [ x1 , x2 ,..., xn ]  f [ x0 , x1 ,..., xn1 ]
f [ xo , x1 ,..., xn ] 
xn  x0 .

Para simplificar o entendimento da definição, a


diferença dividida pode ser entendida como o
cálculo de uma função recursiva, em que você
pode calcular o valor para diferentes pontos; para
isso, você precisa recorrer a resultados anteriores,
até retornar ao caso base, em que se tem
f [ xk ] = f ( xk ) .

UNIDADE 3 77
Dessa forma, podemos escrever:
f [ x1 ]  f [ x0 ]
f [ xo , x1 ] 
x1  x0
f [ x1 , x2 ]  f [ x0 , x1 ]
f [ xo , x1 , x2 ] 
x2  x0
f [ x1 , x2 , x3 ]  f [ x0 , x1 , x2 ]
f [ xo , x1 , x2 , x3 ] 
x3  x0
e assim por diante (FRANCO, 2006).

Cuidado para não se perder no cálculo das diferenças divididas. Como auxí-
lio, você pode montar uma tabela em que vai anotando por níveis os resul-
tados, primeiro para um ponto, depois para dois pontos e assim por diante.

Seguindo nosso estudo propriamente para a interpolação de Newton, começamos


com algumas definições. Primeiro, vamos considerar uma função f ( x) contínua e
que possua derivadas contínuas no intervalo  a, b  . Também, que temos os pontos
x0 , x1 ,..., xn e que eles são todos distintos no intervalo  a, b  .
Também definimos:
f [ x]  f [ x0 ]
f [ x0 , x]  , para x  x0
x  x0

f [ x0 , x]  f [ x0 , x1 ]
f [ x0 , x1 , x]  , para x  x0 e x  x1
x  x1

f [ x0 , x1 ,..., xn1 , x]  f [ x0 , x1 ,...xn ]


f [ x0 , x1 ,..., xn , x]  ... , para x  xk , k  0,1,..., n
x  xn

A partir das definições para a interpolação de Newton, podemos chegar ao polinômio


interpolador de Newton, que é escrito como:

Pn ( x)  f [ x0 ]  ( x  x0 ) f [ x0 , x1 ]  ( x  x0 )( x  x1 ) f [ x0 , x1 , x2 ] 
...  ( x  x0 )...( x  xn1 ) f [ x0 , x1 ,..., xn ]

Sendo ele o polinômio de interpolação da função y = f ( x) sobre os pontos


x0 , x1 ,..., xn .

78 Aproximação de Funções
Tenha sua dose extra de conhecimento assistindo ao vídeo.
Para acessar, use seu leitor de QR Code.

5 EXEMPLO Conhecendo a tabela (FRANCO, 2006):

x -1 0 3

f(x) 15 8 -1

Calcular f (1) usando a fórmula de Newton do polinômio da interpolação.


Sabemos que:
x0  1, f0  f ( x0 )  15,
x1  0, f1  f ( x1 )  8,
x2  3, f2  f ( x2 )  1

Portanto, temos que n=2 e o polinômio de Newton é calculado a partir de:

P2 ( x)  f [ x0 ]  ( x  x0 ) f [ x0 , x1 ]  ( x  x0 )( x  x1 ) f [ x0 , x1 , x2 ]

Resolvendo as diferenças divididas, temos:


f [ x0 ]  15, f [ x0 , x1 ]  7 e f [ x0 , x1 , x2 ]  1 .

Calculando o polinômio:
P2 ( x)  15  ( x  1)(7)  ( x  1)( x  0)(1)

P2 ( x)  x2  6 x  8

Portanto, P2 (1) = 3  f (1) .


Chegamos, enfim, ao final de nossa unidade sobre aproximação de funções. As
interpolações têm diversos usos práticos e facilitam bastante a obtenção de valores
aproximados que necessitamos.
Lembre-se de que esses métodos que aprendemos aqui geralmente trazem uma
aproximação que pode contar com erros de arredondamento e/ou truncamento.
Portanto, é importante saber, na prática, qual é a margem de erro tolerável, que varia
muito de acordo com cada domínio de aplicação.
Tire um tempo de descanso (após responder as atividades), tome um café bacana e
logo voltaremos a conversar sobre cálculo numérico, aplicando à integração numérica
e equações diferenciais. Bom estudo!
UNIDADE 3 79
Você pode utilizar seu diário de bordo para a resolução.

1. No uso cotidiano, algumas funções podem ser complexas de serem resolvidas, e


uma boa forma de simplificar é aproximar essas funções a funções mais simples,
de onde os resultados possam ser obtidos com menos esforço.
Considerando o texto, avalie as afirmações a seguir.
I) Os métodos de interpolação permitem encontrar valores aproximados para
funções em pontos que não conhecemos ainda na função.
II) A interpolação polinomial permite a simplificação de funções a partir de
aproximação.
III) A partir de métodos como a Interpolação Lagrange, podemos encontrar va-
lores exatos para funções em qualquer ponto em um intervalo [a,b].
IV) O método de Newton permite a descoberta do polinômio interpolador, que,
em outras palavras, é equivalente à função f(x) original.
Assinale a alternativa correta:
a) Apenas I e II estão corretas.
b) Apenas II e III estão corretas.
c) Apenas III e IV estão corretas.
d) Apenas I, II e III estão corretas.
e) Apenas II, III e IV estão corretas.

2. Encontre o polinômio de Newton correspondente que passa por esses pontos


conforme os dados a seguir:

f (1)  2
f (0)  0
f (1)  2
f (2)  4

80
3. A fim de encontrar o polinômio interpolador, podemos usar um cálculo chamado
“diferenças divididas”. Assinale a alternativa com o método que utiliza diferenças
divididas para definir o polinômio.
a) Interpolação Linear.
b) Interpolação Quadrática.
c) Interpolação Lagrange.
d) Interpolação de Newton.
e) Interpolação Circular.

81
WEB

Interpolação Gráfica – Dando um “up” no seu jogo


Um artigo simples e claro do Prof. Isidro, explicando como a interpolação pode
ser utilizada em jogos de computador.
Para acessar, use seu leitor de QR Code.

WEB

Canal do YouTube do Prof. Isidro


No canal, o professor dá dicas de programação e desenvolvimento de jogos. Dá
para aprender um pouco mais sobre como aplicar os conceitos aprendidos em
uma área em crescimento que é o desenvolvimento de jogos.
Para acessar, use seu leitor de QR Code.

82
ARENALES, S.; DAREZZO, A. Cálculo Numérico: Aprendizagem com Apoio de Software. 2. ed. São Paulo:
Cengage, 2016.

BARROSO, L. C.; BARROSO, M. M. A.; CAMPOS, F. F. C.; CARVALHO, M. L. B.; MAIA, M. L. Cálculo numé-
rico (com aplicações). 2. ed. São Paulo: Harbra, 1987.

CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.

FRANCO, N. M. B. Cálculo Numérico. Pearson: São Paulo, 2006.

GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre:
Bookman,2008.

REFERÊNCIAS ON-LINE
1
Em: http://www.professorisidro.com.br/interpolacao-grafica-dando-um-up-no-seu-jogo/. Acesso em: 10 set.
2019.

83
1. A.

2. Temos que n=3 e o polinômio de Newton é calculado a partir de:

P3 ( x)  f [ x0 ]  ( x  x0 ) f [ x0 , x1 ]  ( x  x0 )( x  x1 ) f [ x0 , x1 , x2 ]  ( x  x0 )( x  x1 )( x  x2 ) f [ x0 , x1 , x2 , x3 ]

Resolvendo as diferenças divididas, temos:

f [ x0 ]  2 .

f [ x1 ]  0
f [ x2 ]  2
f [ x3 ]  4
f [ x0 , x1 ]  2
f [ x1 , x2 ]  2
f [ x2 , x3 ]  2
f [ x0 , x1 , x2 ]  0
f [ x1 , x2 , x3 ]  0
f [ x0 , x1 , x2 , x3 ]  0
Calculando o polinômio:

P3 ( x)  2  ( x  1)(2)  ( x  1)( x  0)(0)  ( x  1)( x  0)( x  1)(0)

P3 ( x) = 2 x
3. D.

84
85
86
Me. André Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos

Integração Numérica
e Equações Diferenciais

PLANO DE ESTUDOS

Regra 1/3 de Simpson Método de Euler

Regra dos Trapézios Regra 3/8 de Simpson Método de Runge-Kutta -


RK (Quarta Ordem)

OBJETIVOS DE APRENDIZAGEM

• Estudar a regra dos trapézios para resolver integração • Aprender o método de Euler para a solução de equações
numérica de forma computacional. diferenciais.
• Entender a regra 1/3 de Simpson para aproximar integrais. • Analisar o método Runge-Kutta para equações diferen-
• Utilizar uma outra forma de aproximação no cálculo de ciais.
integrais.
Regra
dos Trapézios

Estamos iniciando mais uma etapa do nosso


aprendizado. Eu sei que cálculo numérico não é
algo tão amigável e convidativo à primeira vista,
mas podemos nos consolar ao pensar que estamos
estudando métodos que não serão usados por nós
mesmos, mas pelos nossos computadores.
Nesta unidade, discutimos a resolução de
integrais de forma numérica. Existem casos em
que as integrais são muito difíceis ou que não se
sabe como resolvê-las ou, ainda, casos em que não
exista uma solução analítica. Quando chegamos
a essas situações, é necessário tomar o caminho
numérico para resolvê-las. O método pelo qual
nos aprofundaremos nesta unidade é o chamado
Newton-Cotes, aquele que se aplica às funções
com valores conhecidos em pontos igualmente
espaçados, o qual dividiremos em duas metodo-
logias para o cálculo: a Regra do Trapézio e Regra
de Simpson.

88 Integração Numérica e Equações Diferenciais


Por fim, focaremos nossos estudos de cálculo numérico em encontrar soluções
numéricas para equações diferenciais. Os problemas que envolvem a taxa de variação
de uma variável em relação à outra são os que modelamos por meio de equações
diferenciais. Aqui, detalhamos os métodos de Euler e Runge-Kutta, que são os mais
comuns.

Integração Numérica

Antes de iniciarmos nosso estudo da regra dos Trapézios, vamos pensar um pouco
sobre como resolvemos nosso problema de integração numérica. Nosso objetivo é
encontrar métodos numéricos para calcular a integral definida de uma função. Uma
fórmula que forneça um valor numérico aproximado da integral de uma função é
chamada de quadratura numérica ou fórmula de integração numérica (HUMES et
al., 1984). Exploraremos como o método de Newton-Cotes se aplica a funções com
valores conhecidos em pontos igualmente espaçados.
Segundo Chapra e Canale (2011), esse método é baseado na substituição de uma
função complicada ou de dados tabulados por um polinômio simples que é fácil de
integrar. Três das fórmulas mais amplamente usadas de Newton-Cotes serão discuti-
das em detalhes: a regra do trapézio, a regra 1/3 de Simpson e a regra 3/8 de Simpson.
Todas essas fórmulas se destinam aos casos nos quais os dados a serem integrados
estão igualmente espaçados.

Utilizando os Trapézios

Para dar início ao nosso pensamento, observe a Figura 1. Vamos nos lembrar do mo-
tivo de usarmos a integração numérica, a princípio. Suponha que queremos descobrir
a área do gráfico que fica entre o eixo x e a nossa função y = f ( x) , no intervalo
compreendido entre os pontos a e b. Qual é a forma da nossa figura? Temos uma
figura com o topo arredondado, que não sabemos calcular a área.
Para calcular a área, podemos aproximar o desenho real ao desenho de um tra-
pézio que “se encaixa” em nossa área desejada. Afinal, nós sabemos como se calcula
a área de um trapézio.
Facilitando mais ainda, como vemos na figura, podemos dividir a área do nosso
trapézio em duas áreas: a área de um retângulo e a área de um triângulo, que possuem
fórmulas triviais para o cálculo da área.

UNIDADE 4 89
y y=ƒ(x)
ƒ(b)
Área
= 1 (b-a)(ƒ(b) - ƒ(a))
2
ƒ(a)
Área
= ƒ(a)(b-a)
x
a b
Figura 1 - Método do trapézio
Fonte: Gilat e Subramaniam (2008, p. 293).

Com isso, conseguimos a área de nosso trapézio, que é uma aproximação da área
original a que queremos medir, com um erro claramente visto na área em que o
trapézio não cobre a área original.
Como nosso objetivo sempre é chegar mais próximo do valor real, precisamos
diminuir ao máximo o erro no cálculo. Basicamente, podemos diminuir essa diferença
dividindo o intervalo [a, b] em intervalos menores, no qual cada intervalo possui
o seu trapézio, e quanto menor o trapézio, menor o erro em relação à área original.
Segundo Gilat e Subramaniam (2008), podemos encontrar uma função linear de
aproximação ao longo do intervalo para refinar os métodos do retângulo e do ponto
central na integração numérica. Vimos, na unidade anterior, o polinômio de Newton.
Entre os pontos x = a e x = b , o polinômio é:

f ( x )  f ( a )  ( x  a ) f [ a, b]  f ( a )  ( x  a )
 f (b)  f (a)
ba
Então, podemos substituir a equação obtida na fórmula antiderivada e realizar a
integração analítica:
b
I ( f )   f ( x)dx (antiderivada)
a

90 Integração Numérica e Equações Diferenciais


b
I ( f )    f (a)  ( x  a)
 f (b)  f (a) dx

a
ba 

1
 f (a )(b  a )   f (b)  f (a)  b  a 
2
A partir daí, encontramos a fórmula conhecida como regra ou método trapezoidal.

 f (a)  f (b)
I( f )  b  a 
2
Se a gente parar para observar a fórmula apresentada, o termo f (a )(b − a ) representa
a área de um triângulo de altura f (a ) e largura (b − a ) . O segundo termo equivale à
área do triângulo, que pode ser calculada como (b − a ) de base e  f (b)  f (a )  de
altura, levando-nos à imagem do trapézio, que é formado pelo retângulo e o triângulo.
Analisando a imagem, percebemos que o uso do trapézio é mais eficaz do que o uso
de apenas um retângulo.

Erro na Regra do Trapézio

Vimos, anteriormente, como funciona o erro em aproximação de valores. Utilizando


trapézios para aproximar a integração na curva, encontramos um erro que pode ser
considerável em nossa solução. Podemos estimar o erro de truncamento da seguinte
forma:
1
Et   f (x )(b  a )3
12

h3
Et   f (x )
12
Em que x está em algum ponto do intervalo entre a e b. Dessa forma, se estivermos
integrando uma função linear, a regra dos trapézios é exata. Se não for linear, podemos
ter algum erro (CHAPRA; CANALE, 2011).

UNIDADE 4 91
1 EXEMPLO Calcular, pela regra do trapézio e, depois, analiticamente, o valor de (BARROSO
et al., 1987):
3,6 dx
I 
3,0 x

Resolução:

a) Pela regra do trapézio

h
I  y0  y1 
2
1
como y = , então:
x
1 1
y=
0 =
x0 3

1 1
y=
1 =
x1 3, 6

h  x1  x0  3, 6  3, 0  0, 6

logo,
0, 6  1 1 
I   0, 18333
2  3 3, 6 

Cálculo do erro:

h3 h3 2
Et   f (x )    3
12 12 x

como 3 < x < 3, 6 , então:


2 2 2
f (x ) máx   
x3 33 27

(0, 6)3 2
E   1, 333  103
12 27
então:

I  0, 18333  1, 333  103  0, 18200

b) Pelo cálculo integral:


3,6 1
3,0 x dx  ln(3, 6)  ln(3, 0)  0,18232

92 Integração Numérica e Equações Diferenciais


Regra 1/3
de Simpson

Você, então, possui a função e quer integrar a área.


Vejamos uma outra forma, onde podemos tam-
bém aproximar a integral utilizando polinômios
de grau mais alto que passe pelos pontos dados.
Dessa forma, se entre f (a ) e f (b) existir um
ponto médio, pode-se ligar os pontos por uma pa-
rábola (Figura 2(a)) (CHAPRA; CANALE, 2011).

UNIDADE 4 93
ƒ(x) ƒ(x)

x x
(a) (b)

Figura 2 - (a) Descrição gráfica da regra 1/3 de Simpson; (b) Descrição gráfica da regra 3/8 de Simpson
Fonte: Chapra e Canale (2011, p. 514).

No caso de haver dois pontos igualmente espaçados entre f (a ) e f (b) , os quatro


pontos podem ser ligados por um polinômio de 3º grau (Figura 2(b)). As fórmulas
que resultam de tomar as integrais desses polinômios são chamadas de regras de
Simpson (CHAPRA; CANALE, 2011).
Na regra 1/3 de Simpsom, um polinômio quadrático (de segunda ordem) é usado
para aproximar o integrando (GILAT; SUBRAMANIAM, 2008). Então, a partir de
três pontos, podemos obter os coeficientes de um polinômio quadrático. Para uma
integral ao longo do domínio  a, b  são usados os dois pontos finais x1 = a , x3 = b ,
( a  b)
e o ponto central, x2  (GILAT; SUBRAMANIAM, 2008).
2

x3 x3 h
I  f ( x)dx   p ( x)dx   f ( x1 )  4 f ( x2 )  f ( x3 )
x1 x1 3

h  ab 
I  f (a)  4 f    f (b)  , onde h=(b-a)/2.
3  2  

94 Integração Numérica e Equações Diferenciais


Quando diminuímos o espaçamento de h entre os pontos, diminuímos também o
limitante superior do erro, chegando mais próximo ao valor real da integral.
Fonte: adaptado de Arenales e Darezzo (2016).

ƒ(x3)
y = ƒ(x)

p(x)
ƒ(x1)
ƒ(x2)

h h
x
x1 = a x2 x3 = b
Figura 3 - Regra 1/3 de Simpson
Fonte: Gilat e Subramaniam (2008, p. 296).

Então, utilizamos a regra 1/3 de Simpson quando temos n=2, ou seja, vamos integrar
a função entre três pontos consecutivos usando um polinômio de segundo grau
(FRANCO, 2006). No caso de utilizar quatro pontos, podemos utilizar a regra 3/8,
que será vista adiante.

UNIDADE 4 95
Regra 3/8
de Simpson

Agora você já sabe que o método de Simpson não


tem nada a ver com o desenho animado. Então,
vamos aprofundar e ver uma outra regra. Na regra
3/8 de Simpson, utilizamos 4 pontos consecutivos
para aproximar a integração e obtermos um poli-
nômio de terceira ordem. Dessa forma, você pode
aproximar uma integral no domínio  a, b  , usando
os pontos finais x1 = a e x4 = b , e dois pontos x2
e x3 que dividem o intervalo em três seções iguais
(GILAT; SUBRANIAM, 2008):

b b 3
I   f ( x)dx   p ( x)dx  h  f (a )  3 f ( x2 )  3 f ( x3 )  f (b) 
a a 8

3
I  f ( x1 )  3 f ( x2 )  3 f ( x3 )  f ( x4 )
8

96 Integração Numérica e Equações Diferenciais


y
y = ƒ(x)
ƒ(x4)
ƒ(x3)
p(x)
ƒ(x1)

ƒ(x2)
h h h
x
x1 = a x2 x3 x4 = b

Figura 4 - Regra 3/8 de Simpson


Fonte: Gilat e Subramaniam (2008, p. 299).

2 EXEMPLO Use a regra 3/8 de Simpson para integrar (CHAPRA; CANALE, 2011):

f ( x)  0, 2  25 x  200 x2  675 x3  900 x 4  400 x5

de a = 0 a b = 0, 8 .

Resolução: uma única aplicação da regra 3/8 de Simpson exige quatro pontos igual-
mente espaçados:

= f (0) 0=
,2 f (0, 2667) 1, 432724
=f (0, 5333) 3=, 487177 f (0, 8) 0, 232

aplicando,
3
I  f ( x1 )  3 f ( x2 )  3 f ( x3 )  f ( x4 )
8
3
I 0, 2  3(1, 432724)  3(3, 487177)  0, 232
8

I = 1, 519170

Chegamos nossa solução da integral.

Método 3/8 de Simpson Composto

De forma similar ao que vimos no método 1/3 de Simpson, podemos subdividir o


intervalo em N subintervalos, que podem ter tamanhos diferentes, mas estudaremos
a divisão em subintervalos de larguras iguais.

UNIDADE 4 97
1 3 3 2 3 3 2 3 3 2 3 3 1
y
1 3 3 1
1 3 3 1 ƒ(x12) ƒ(b)
1 3 3 1 1 3 3 1 ƒ(x11)
ƒ(x3) ƒ(x4)ƒ(x5)
ƒ(x2) ƒ(x6) ƒ(x10)
ƒ(a) ƒ(x7)
ƒ(x8) ƒ(x9)

h h h x
x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12
x1 = a x13 = b

Figura 5 - Soma ponderada usando o método de Simpson 3/8 composto


Fonte: Gilat e Subramaniam (2008, p. 300).

Como o método 3/8 utiliza 4 pontos consecutivos, o método composto analisa 3


subintervalos adjacentes de cada vez. Por isso, precisamos ter N subintervalos, em
que N seja divisível por 3.
A equação geral para o método 3/8 composto de Simpson pode ser escrita como:
3h  N 1 N 2 
If 
8 
 
 f  a   3   f  x i   f  x i 1    2  f x j  f  b  

 i 2,5,8 j  4 ,7 ,10

Tenha sua dose extra de conhecimento assistindo ao vídeo.


Para acessar, use seu leitor de QR Code.

Como a gente já viu no método anterior, para este também há pré-requisitos para o
uso desta equação:
1. Os subintervalos devem ser igualmente espaçados.
2. O número de subintervalos no domínio  a, b  deve ser divisível por 3.

Esses não são os únicos métodos numéricos para aproximar a integração numérica,
porém são os principais que analisamos nesta obra. A seguir, passaremos aos métodos
para soluções de equações diferenciais.

98 Integração Numérica e Equações Diferenciais


Método
de Euler

Passamos, agora, ao estudo das soluções de equa-


ções diferenciais por meio de métodos numéri-
cos. Problemas envolvendo a taxa de variação de
uma variável em relação à outra são modelados
por meio de uma equação diferencial ou de uma
equação de diferenças. Existe um número mui-
to restrito de equações diferenciais cuja solução
pode ser expressa sob uma forma analítica simples
(HUMES et al., 1987). São esses métodos numé-
ricos que estudaremos.

UNIDADE 4 99
Segundo Gilat e Subramaniam (2008), a aplicação do método de Euler na so-
lução de sistemas de EDOs (Equações Diferenciais Ordinárias) pode ser mostrada
primeiro para o caso de duas EDOs. Um sistema de duas EDOs de primeira ordem,
com y e z como variáveis dependentes e x como variável independente, tem a forma:
dy
= f1 ( x, y, z )
dx
dz
= f 2 ( x, y , z )
dx

para o domínio  a, b  , com condições iniciais y (a ) = y1 e z (a ) = z1 . Para um sistema


de duas EDOs, o método explícito de Euler é dado por:
xi 1  xi  h

yi 1  yi  f1  xi , yi , zi  h

zi 1  zi  f2  xi , yi , zi  h

O processo de solução começa com i = 1 no primeiro ponto, x1 , no qual os valores


y1 e z1 são conhecidos. Em seguida, uma vez atribuído um valor a h, calcula-se o
segundo ponto da solução (já que todas as grandezas no lado direito das equações
são conhecidas). O processo continua, então, com i = 2, 3,... até o final do domínio
da solução. Essa abordagem pode ser facilmente estendida para resolver um sistema
de n EDOs.
3 EXEMPLO Use o método de Euler para integrar numericamente a equação a seguir (CHA-
PRA; CANALE, 2011):

dy
 2 x3  12 x2  20 x  8, 5
dx

de x = 0 a x = 4 com um tamanho de passo de 0,5. A condição inicial em x = 0


é y = 1 . Lembre-se de que a solução exata é:

y  0, 5 x 4  4 x3  10 x2  8, 5 x  1

100 Integração Numérica e Equações Diferenciais


Resolução:
yi 1  yi  f1  xi , yi  h

y (0, 5)  y (0)  f1 (0, 1)  0, 5

em que y(0) = 1 e a estimativa da inclinação em x = 0 é:

f (0, 1)  2(0)3  12(0)2  20(0)  8, 5  8, 5


Portanto,

f (0, 1)  1, 0  8, 5(0, 5)  5, 25

A solução verdadeira em x = 0, 5 é

y  0, 5(0, 5) 4  4(0, 5)3  10(0, 5)2  8, 5(0, 5)  1  3, 21875

Logo, o erro é:
Et  verdadeiro  aproximado  3, 21875  5, 25  2, 03125

ou expresso como um erro relativo porcentual, eT  63, 1% . Para o segundo passo,

y (1)  y (0, 5)  f (0, 5; 5, 25)  0, 5

y 1  y  0, 5   f  0, 5, 5, 25  0, 5

3 2
y 1  5, 25   2  0, 5   12  0, 5   20  0, 5   8, 5 0, 5
 

y 1  5, 875

A solução verdadeira em x=1,0 é 3,0 e, portanto, o erro relativo porcentual é -95,8%. O


cálculo é repetido e os resultados estão resumidos na Tabela 1 e na Figura 5. Observe
que, embora os cálculos capturem a tendência geral da solução verdadeira, o erro é
considerável. Esse erro pode ser reduzido pelo uso de um tamanho de passo menor
(CHAPRA; CANALE, 2011).

UNIDADE 4 101
Tabela 1 - Comparação dos valores verdadeiro e aproximado da integral de
y  2 x3  12 x2  20 x  8, 5 ,com a condição inicial de que y=1 em x = 0

x y verdadeiro y Euler Global Local


0,0 1,00000 1,00000
0,5 3,21875 5,25000 -63,1 -63,1
1,0 3,00000 5,87500 -95,8 -28,0
1,5 2,21875 4,75000 131,0 -1,41
2,0 2,00000 4,50000 -125,0 20,5
2,5 2,71875 4,75000 -74,7 17,3
3,0 4,00000 5,87500 46,9 4,0
3,5 4,71875 7,12500 -51,0 -11,3
4,0 3,00000 7,00000 -133,3 -53,0
Fonte: Chapra e Canale (2011, p. 589).

h = 0,5

Solução verdadeira

0
0 2 4 x
Figura 6 - Comparação da solução verdadeira com a de Euler
Fonte: Chapra e Canale (2011, p. 589).

102 Integração Numérica e Equações Diferenciais


Método de
Runge-Kutta -
RK (Quarta Ordem)

“Eu sei Kung-fu!”, disse o Neo no primeiro Matrix


(que é o que vale a pena dos três filmes). Neste
ponto você deve estar dizendo pra quem está ao
seu lado: “Eu sei resolver EDOs!” Sim, mas vamos
ver como fazer isso com o método Runge-Kutta.
Os métodos RK mais populares são os de
quarta ordem. Como no caso das abordagens de
segunda ordem, existe um número infinito de
versões. A seguinte é a forma mais comumente
usada e, assim, a chamamos método RK de quarta
ordem clássico (CHAPRA; CANALE, 2011):

1
yi 1  yi   k1  2k2  2k3  k4  h
6

UNIDADE 4 103
em que
k1  f  xi , yi 

 1 1 
k2  f  x1  h, yi  k1h 
 2 2 

 1 1 
k3  f  xi  h, yi  k2 h 
 2 2 
k4  f  xi  h, yi  k3 h 

Observe que para EDOs, que são uma função apenas de x, o método RK de quarta
ordem clássico é parecido com a regra 1/3 de Simpson. Além disso, no método RK de
quarta ordem são desenvolvidas múltiplas estimativas da inclinação para se chegar a
uma inclinação média melhorada no intervalo. Cada um dos k’s representa uma incli-
1
nação. Então, a equação yi 1  yi   k1  2k2  2k3  k4  h representa uma média
6
ponderada delas para chegar a uma inclinação melhorada (CHAPRA; CANALE, 2011).

4 EXEMPLO Use o método RK de quarta ordem para integrar

f  x, y   4e0,8 x  0, 5 y

usando h = 0,5 com y(0) = 2 de x = 0 a 0,5.

Resolução: nesse caso, a inclinação no início do intervalo é calculada como

k1  f  0, 2   4e    0, 5  2   3
0,8 0

Esse valor é usado para calcular um valor de y e uma inclinação no ponto médio,
y  0, 25   2  3  0, 25   2, 75

k2  f  0, 25, 2, 75   4e    0, 5  2, 75   3, 510611
0,8 0,25

Essa inclinação, por sua vez, é usada para calcular um outro valor de y e uma outra
inclinação no ponto médio,
y  0, 25   2  3, 510611  0, 25   2, 877653

k3  f  0, 25, 2, 877653   4e    0, 5  2, 877653   3, 446785


0,8 0,25

104 Integração Numérica e Equações Diferenciais


A seguir, essa inclinação é usada para calcular um valor de y e uma inclinação no
final do intervalo
y  0, 5   2  3, 071785  0, 5   3, 723392

k4  f  0, 5, 3, 723392   4e    0, 5  3, 723392   4, 105603


0,8 0,5

Finalmente, as quatro estimativas de inclinação são combinadas para fornecer uma


inclinação média, que é, então, usada para fazer a previsão final no fim do intervalo,
1
j  3  2  3, 510611  2  3, 446785   4, 105603  3, 503399
6
y  0, 5   2  3, 503399  0, 5   3, 751699

o que se compara favoravelmente com a solução verdadeira, de 3,751521.

dv c
Na dedução da equação, g v , baseada na segunda lei de Newton, para
dt m
calcular a velocidade “v” de um paraquedista em queda livre como função do
tempo, temos que g é a constante gravitacional, “m” é a massa e “c” é o coeficiente
de arrasto. Tais equações, que são compostas por uma função desconhecida e
suas derivadas, são chamadas equações diferenciais. Essa equação é, algumas
vezes, denominada equação de taxa, porque expressa a taxa de variação de
uma variável como uma função das variáveis e parâmetros. Essas equações
desempenham papel fundamental na engenharia, já que muitos fenômenos
físicos são mais bem formulados matematicamente em termos de sua taxa de
variação.
Fonte: adaptado de Chapra e Canale (2011).

UNIDADE 4 105
Chegamos ao fim de mais uma unidade! Quantas coisas novas aprendemos! Uma
delas foi calcular de forma numérica problemas que exigem integração numérica e
ainda equações diferenciais. Vimos que há várias formas de executar esses cálculos
e cada uma possui uma particularidade, o que é importante ressaltar.
Outro ponto fundamental no cálculo numérico é a questão dos arredondamentos
e casas decimais. Nesta unidade, percebemos como essa questão é fundamental para
obtermos um bom resultado.
Vimos que as integrais resolvidas numericamente são utilizadas principalmente
em casos em que as integrais são muito difíceis ou que não se sabe como resolvê-las
ou, ainda, em casos em que não exista solução analítica, e mostraram-se de forma
simples quando aplicamos as fórmulas do método de Newton-Cotes, que é aquele
que se aplica a funções com valores conhecidos em pontos igualmente espaçados.
Pudemos aprofundar nosso conhecimento nas famosas Regra do Trapézio e Regra
de Simpson.
Por fim, apresentamos os métodos de resolução de equações diferenciais por meio
numérico, mediante os métodos de Euler e Runge-Kutta. Esses métodos aplicados a
problemas que envolvem taxa de variação de uma variável em relação à outra exigem
atenção no momento de desenvolvê-los manualmente, devido ao grande volume de
informação.

Quando os dados a serem diferenciados são obtidos a partir de medições experi-


mentais, eles usualmente apresentam dispersão por causa de erros experimentais
ou incertezas nas medições. Essa afirmação feita por Gilat e Subramaniam (2008)
deve nos fazer pensar sobre como cada método influência nos resultados e como
escolhê-lo bem é fundamental!
Fonte: Gilat e Subramaniam (2008).

106 Integração Numérica e Equações Diferenciais


Você pode utilizar seu diário de bordo para a resolução.

1 In  x 
4
1. Calcule o Valor da Integral I  3
 e x  1 dx aplicando a regra dos 3/8 com
3 subintervalos.
n=3 h=1
i x1 yi ci
0 1 1,0744 1
1 2 2,3884 3
2 3 3,4529 3
3 4 4,2691 1

O resultado correto é:
a) 8,5753.
b) 7,9988.
c) 9,9997.
d) 4,5432.
e) 6,0009.

dy
2. Use o método de Euler para resolver a EDO  1, 2 y  7e0,3 x de x=0 a
dx
x=2,5 com a condição inicial y=3 em x=0, use h=0,5. Faça até o sexto ponto.
As coordenadas x e y do sexto ponto são:
a) (3,5; 2,879).
b) (1,3; 2,324).
c) (4,2; 5,278).
d) (6,7; 4,341).
e) (2,5; 3,542).

107
3. Use o método de Runge-Kutta de quarta ordem para resolver a EDO
dy
 1, 2 y  7e0,3 x de x=0 a x=1,5 com a condição inicial y=3 em x=0, use h=0,5.
dx
Faça até o quarto ponto.
As coordenadas x e y do quarto ponto são:
a) (1,9; 2,366).
b) (3,5; 3,867).
c) (1,5; 4,167).
d) (2,7; 1,252).
e) (4,2; 3,365).

108
LIVRO

Métodos Numéricos para Engenharia


Autores: Steven C. Chapra e Raymond P. Canale
Editora: AMGH
Sinopse: escrito por autores renomados, Métodos Numéricos para Engenharia
apresenta uma extensa gama de métodos numéricos, como o tratamento de
otimização e de equações diferenciais. Com explicações simples e voltadas para a
prática, conta com exemplos, estudos de caso e problemas elaborados de acordo
com a prática da engenharia, incluindo áreas emergentes como bioengenharia.
Esta edição mantém seu foco no uso apropriado de ferramentas computacionais,
trazendo discussões meticulosas sobre seus alicerces matemáticos. Também
fornece pseudocódigos para os algoritmos dos métodos numéricos e uma vi-
são geral de pacotes de software populares, como MATLAB, Excel e MathCAD.
Ganhador do prêmio de melhor livro-texto da American Society for Engineering
Education, este é um recurso indispensável para os cursos de Engenharia e ou-
tros da área de Ciências Exatas, como Química, Física, Matemática e Computação.

FILME

Uma Mente Brilhante


Ano: 2002
Sinopse: John Nash (Russell Crowe) é um gênio da matemática que, aos 21
anos, formulou um teorema que provou sua genialidade e o tornou aclamado
no meio em que atuava. Aos poucos, o belo e arrogante Nash se transforma em
um sofrido e atormentado homem, que chega até mesmo a ser diagnosticado
como esquizofrênico pelos médicos que o tratam. Contudo, após anos de luta
para se recuperar, ele consegue retornar à sociedade e acaba sendo premiado
com o Nobel.

109
ARENALES, S.; DAREZZO, A. Cálculo Numérico: Aprendizagem com Apoio de Software. 2. ed. São Paulo:
Cengage, 2016.

BARROSO, L. C.; BARROSO, M. M. A.; CAMPOS, F. F. C.; CARVALHO, M. L. B.; MAIA, M. L. Cálculo numé-
rico (com aplicações). 2. ed. São Paulo: Harbra, 1987.

CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.

FRANCO, N. B. Cálculo Numérico. 1. ed. São Paulo: Pearson Prentice Hall, 2006.

GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre:
Bookman,2008.

HUMES, A. F. P. C.; MELO, I. S. H.; YOSHIDA, L. K.; MARTINS, W. T. Noções de cálculo numérico. São Paulo:
McGraw-Hill do Brasil, 1984.

110
1. a) 8,5753.

Para resolver a integral:

4

I   In x3  e x  1 dx
1 
teremos 3 intervalos: [1,2][2,3][3,4]

Usamos a equação geral:

b b 3
I   f ( x)dx   p ( x)dx  h  f (a )  3 f ( x2 )  3 f ( x3 )  f (b) 
a a 8
onde teremos:

3 1
I 1, 0744  3  2, 3884  3  3, 4529  4, 2691
8
3
  22, 8674
8
= 8, 575275
2. e) (2,5; 3,542).
dx
Para calcular a EDO,  1, 2 y  7e0,3 x , x de 0 a 2,5, com passo de 0,5. Condição inicial y=3 e x=0.
dy
Temos que xi 1  xi  h e yi 1  yi  f  xi , yi  h .

X Y
1 (inicial) 0 3
2 0,5 4,7
3 1 4,892
4 1,5 4,550
5 2 4,052
6 2,5 3,542

111
3. c) (1,5; 4,167).
dx
Para calcular a EDO,  1, 2 y  7e0,3 x , de x=0 a x=1,5 com a condição inicial y=3 em x=0, use h = 0,5.
dy
1
Temos, pelo método, que yi 1  yi   k1  2k2  2k3  k4  h , onde
6

k1  f  xi , yi 

 1 1 
k2  f  xi  h, yi  k1h 
 2 2 
 1 1 
k3  f  xi  h, yi  k2 h 
 2 2 
k4  f  xi  h, yi  k3 h  .

Fazendo cálculos sucessivos, temos:

x y k1 k2 k3 k4
1 0 3 3,4 1,8742044043 2,331943083 1,0257899852
2 0,5 4,0698404 1,141147339 0,3634608336 0,5967667852 -0,056141022
3 1 4,3202955 0,0013728934 -0,373741568 -0,26120723 -0,564233252
4 1,5 4,1675657 -0,537681795 -0,698886767 -0,650525275 -0,769082238

112
113
114
Me. Andre Abdala Noel
Esp. Kryssian Romeiro

Conceitos Básicos
de Programação

PLANO DE ESTUDOS

Algoritmos Fluxograma

Hardware e Software Descrição Narrativa Pseudocódigo

OBJETIVOS DE APRENDIZAGEM

• Apontar as definições e diferenças entre hardware e software. • Utilizar fluxogramas para escrever algoritmos completos.
• Entender o conceito de algoritmos e como ele se aplica • Escrever algoritmos em forma de pseudocódigo para che-
à programação. gar próximo à programação de computadores.
• Aprender a escrever algoritmos em forma de uma des-
crição narrativa.
Hardware
e Software

Olá, aluno(a)! Após passarmos por uma boa parte


do cálculo numérico, chegamos à nossa quinta
unidade e agora iniciamos, de forma mais direta,
o estudo da programação. Isso não quer dizer que
só iniciaremos agora a parte de programação, por-
que em todas as unidades anteriores vimos como
os computadores trabalham e realizam cálculos.
Também vimos algoritmos, ainda que não escritos
em linguagens de programação.
Para entender bem a parte de programação,
começamos por entender melhor o funcionamen-
to do computador, mas fique tranquilo(a), não
desceremos muito nas entranhas das máquinas,
bits e bytes. Vamos começar entendendo os con-
ceitos de hardware e software. Depois passaremos
a estudar sobre como criar os softwares, ou seja,
como escrever algoritmos que se transformarão
em programas de computador.

116 Conceitos Básicos de Programação


Previamente, podemos dizer que hardware é a Hardware
parte física de um computador, aquilo que é tocável.
O software não é físico, são os programas da má- O hardware de um computador é constituído, ba-
quina que permitem o processamento dos dados sicamente, por: unidade central de processamen-
inseridos pelo usuário. Entendendo e tendo o que to, unidades de memória e unidades de entrada
é hardware e software bem definido, permite-nos e saída (E/S). Dos três componentes básicos do
dar continuidade à nossa unidade de forma mais hardware, dois são fundamentais para o proces-
produtiva, pois é a partir de então que nossos estu- samento dos dados propriamente dito: a Unidade
dos sobre programação têm início de fato. Central de processamento (CPU) e a Memória
Um sistema de computador é integrado pelo Principal (VELLOSO, 1999).
hardware e pelo software. O hardware é o equipa- Ainda segundo Velloso (1999), a CPU é a uni-
mento propriamente dito, incluindo os periféricos dade “ativa” desse núcleo, pois nela são coorde-
de entrada e de saída; a máquina é composta por nadas e executadas as instruções e as operações
elementos físicos: carcaça, placas, fios e compo- aritméticas e lógicas.
nentes em geral. O software é constituído pelos A memória principal é uma unidade“passiva”,
programas que lhe permitem atender às necessi- pois é para ela ou por ela que os elementos são en-
dades do usuário, abrigando programas forneci- viados ou recebidos da CPU ou de uma unidade
dos pelos fabricantes do computador e programas de entrada/saída. Quanto ao sistema de entrada
desenvolvidos pelo próprio usuário (VELLOSO, e saída, ele é composto por periféricos, interface,
1999). controladores, drivers, portas de entrada e saída e
Para não se esquecer mais, há uma velha pia- barramentos (NOEL, 2019). Estamos mais acostu-
dinha que diz: “hardware é o que você chuta e mados a lidar com os periféricos de E/S, que são
software é o que você xinga”. Isto é, tire tudo da dispositivos, em geral, que possuem mais contato
tomada, desligue tudo, o que continuar visível ou com os usuários.
acessível é o hardware. O software é aquela parte



que funciona apenas quando o sistema todo está Podemos ter periféricos de entrada, que
“ligado”. são aqueles que só transferem dados ao com-
Não há como dar mais importância ao har- putador (mouse, teclado, joystick etc.), pe-
dware ou ao software, pois um não faz sentido riféricos de saída, aqueles que recebem os
sem o outro. Contudo, historicamente, no início, dados do processador (monitor, impressora,
apenas o hardware tinha valor, enquanto o soft- placa de som etc.), periféricos de entrada
ware era apenas “necessário” para a máquina fun- e saída, que enviam e recebem dados (pen-
cionar. Foi a partir da década de 80 que o software drives, CD-RW, cartões de memória etc.), ou
passou a ter mais valor e a ser mais reconhecido ainda os periféricos de comunicação, que
com a estabilização das licenças de software e a permitem a comunicação com outras má-
concorrência entre desenvolvedores de softwares quinas e/ou pessoas (modem, placa de rede
em geral e sistemas operacionais. etc.) (NOEL, 2019, p. 151, grifos do autor).

UNIDADE 5 117
Temos, então, que a arquitetura de computadores compreende essa Software
estrutura básica de entrada, processamento (CPU e memória) e
saída. Quando falamos em computadores, estamos generalizando, De acordo com Mokarzel e
pois equipamentos como smartphones, tablets e diversos outros Soma (2008), define-se por
dispositivos modernos se enquadram como computadores e se- software um conjunto de pro-
guem essa arquitetura. gramas de um computador
– programa como sendo uma
entidade pela qual se consegue
instruir um computador para
que ele faça o que se deseja. Pro-
A introdução de textos em um computador a partir do teclado se grama nada mais é do que uma
dá por meio de uma conversão de cada tecla digitada para um sequência de instruções que, ao
determinado conjunto de 8 bits. Cada tipo de caractere tem seu serem executadas, realizam uma
conjunto específico denominado padrão de bits. Ora, com 8 bits, determinada tarefa.
existem 256 combinações de bits distintas, possibilitando repre- Existem diferentes formas
sentar em um computador 256 caracteres diferentes. de classificar os softwares. Uma
A determinação dos padrões de bits para cada caractere é esta- forma é a partir de sua utilização.
belecida por convenções internacionais denominadas códigos Softwares que prestam serviço
para informação. O código mais conhecido é o ASCII (American para deixar a máquina mais atra-
Standard Code for Information Interchange) [...]. tiva, por exemplo, são denomina-
Fonte: Mokarzel e Soma (2008, p. 31). dos softwares de sistema, como
sistemas operacionais, compila-
dores e montadores. Outro tipo
É importante ter em mente que, apesar das inúmeras variações de software é de aplicação, ou
de equipamentos em capacidade e qualidade, o funcionamento aplicativos, que é voltado para
dos diferentes computadores é similar. No início, era necessário simples usuários de máquinas,
aprender funções de programação específicas para cada arquitetura, como planilhas eletrônicas e pro-
enquanto hoje nós programamos independente (ou quase) da cessadores de texto, por exemplo
arquitetura, e o sistema operacional se encarrega de conversar (HENNESSY; PATTERSON,
com o hardware. 2000).

118 Conceitos Básicos de Programação


A figura a seguir mostra um desenho clássico com os níveis hierárquicos do software e do hardware:

Softwares de
aplicação

twares
Sof istema de
s

Hardware

Figura 1 - Níveis hierárquicos do software e do hardware (simplificado)


Fonte: Hennessy e Patterson (2000, p. 4).

Existem softwares para as mais diferentes utilidades. É bom ressaltar que eles são programas executáveis
escritos a partir de algoritmos (que veremos à frente) em uma determinada linguagem de programação,
que possui as instruções para o sistema operacional.
Apesar da popularização do termo “app” ou “aplicativo” para descrever especificamente software
para plataformas móveis, como smartphones, esses aplicativos são “programas de computador” ou
“software” como os demais. A forma de programar é parecida, tendo que tratar, é claro, de algumas
especificidades de plataformas móveis.
Mais adiante, na Unidade 6, veremos um pouco mais sobre linguagens de programação e, na Unidade
7, veremos como se dá o processo de escrita e compilação de software, para que possamos escrever
nossos próprios programas. Nas Unidades 8 e 9, colocaremos um pouco de mão na massa, utilizando
programação específica para a área matemática, em que veremos algumas implementações do que
discutimos nas primeiras unidades.

UNIDADE 5 119
Algoritmo

Você já deve ter percebido que diversas tarefas


que executamos em nosso dia a dia envolvem uma
sequência de tarefas. Pense em como você faz para
escovar os dentes. Ignorando algumas variações,
fica algo como: ir ao banheiro, pegar a escova de
dentes, pegar a pasta de dentes, passar um pouco
de pasta de dentes na escova, levar a escova até a
boca, esfregar os dentes com a escova até limpar (o
suficiente), enxaguar a boca e enxaguar a escova.
Ah, não se esqueça de escovar a língua, para não
ficar com mau hálito.
Independentemente do dia, o processo é o
mesmo. Essa sequência de tarefas é essencial para
aprendermos a programação, pois a essa sequên-
cia damos o nome de algoritmo. Esse nome vem
de Muhammad ibn Musa al-Khwarizmi (780-
850), o mesmo matemático que introduziu os nú-
meros arábicos e os cálculos decimais no ocidente
(BROCKMAN, 2013).
De um modo mais formal, algoritmo é uma
sequência de tarefas bem definidas e não ambí-
guas para resolver um determinado problema.

120 Conceitos Básicos de Programação


Para simplificar o entendimento sobre algoritmo, podemos ini- Considerando que já conhe-
ciar com um exemplo bem simples, como a receita de bolo a seguir: cemos os métodos de cálculos,
podemos criar sequências de
Como preparar um bolo
comandos, as quais inseridas
1 Prepare: preaqueça o forno
a 180 °C. Unte duas formas em um software realizarão esse
redondas de 20 ou 23 cm. cálculo de forma mais rápida e
eficiente com resultados mais
2 Misture os ingredientes:
a mistura para bolo, água, precisos e menos suscetíveis ao
óleo e ovos. Despeje nas erro humano. Isto é, podemos
formas.
escrever os algoritmos de uma
3 Asse o bolo e deixe esfriar forma em que o computador
por 15 minutos na forma.
Tempo de forno:
entenda, usando uma lingua-
32 a 36 min. (forma de 20 cm). gem de programação.
28 a 32 min. (forma de 23 cm). Para Mokarzel e Soma
4 Misture açúcar e (2008), define-se algoritmo
creme de leite fresco como sendo uma sequência fi-
em ponto de chantili.
nita e ordenada de comandos
5 Cubra o bolo com a executáveis e não ambíguos,
cobertura.
que levam à aplicação de um
Figura 2 - Receita de bolo (tipo de algoritmo do cotidiano humano) método para a execução de
Fonte: adaptada de Brockman (2013).
uma tarefa ou resolução de um
Para Mokarzel e Soma (2008), um algoritmo pode descrever tanto problema.
atividades de cálculos complexas quanto atividades simples do Quando se utiliza um com-
cotidiano humano, como uma receita, troca de pneu furado, lâm- putador para encontrar uma
pada queimada etc. Por isso, informalmente, pode-se dizer que um solução numérica de um pro-
algoritmo é uma sequência de passos que transformam a entrada blema, um programa realiza as
na saída ou, ainda, como uma ferramenta para resolver problemas operações associadas ao méto-
(CORMEN et al., 2002). do numérico específico utiliza-
Como vimos nas primeiras unidades, para chegarmos a soluções de do. Antes de fazer a programa-
raízes mais complexas, abria-se o processo de cálculo em vários passos ção de um método numérico, é
menores e/ou repetidos para chegarmos a um resultado aceitável. No útil planejar todos os passos que
entanto, até agora viu-se a forma manual de realizar esses cálculos, de têm que ser seguidos para que
forma simplificada, para cálculos mais complexos nos quais o número esse método possa ser imple-
de repetições é grande e demandaria muito tempo. Para alguns casos, mentado, ou seja, é necessário
seria até impossível calcular de forma exaustiva e manual. escrever um algoritmo.

UNIDADE 5 121
Algoritmos podem ser escritos em vários níveis de detalhe (GILAT; SUBRAMANIAM, 2008). Como
um exemplo simples, considere um algoritmo para a solução da equação quadrática:

b  b2  4 ac b  b2  4 ac
x1  x2 
2a 2a

Sendo conhecidas as três constantes da equação quadrática, a, b, c:


1. Calcule o valor do discriminante D  b2  4 ac .
2. Se D ≥ 0 , calcule as duas raízes.
b
3. Se D = 0 , calcule a raiz: x  e mostre a mensagem: “A equação possui raiz única”.
2a
4. Se D < 0 , mostre a mensagem: “A equação não possui raízes reais”.

Uma vez planejado, o algoritmo pode ser implementado em um programa de computador e ser usado
para quaisquer valores de a, b e c.

Como Descrever Algoritmos Para fazer bolo

Existem três formas básicas para descrever algo-


ritmos. A primeira, e mais simples, é chamada de Preparar
descrição narrativa (Figura 2) que consiste em
descrever detalhadamente o que o algoritmo faz
em linguagem natural (a linguagem que usamos
no dia a dia). A segunda é uma forma gráfica e Misturar bolo
mais formal (Figura 3), usando diagramas conhe-
cidos como fluxogramas, que definem início, fim
e estruturas. A terceira é uma forma descritiva,
porém usando uma linguagem Assar
precisa chamada pseudocódi-
go ou pseudolinguagem (Fi- Para fazer um bolo:
gura 4), que consiste em uma
• Preparar Misturar cobertura
linguagem próxima à lingua-
gem natural, porém com uma • Misturar massa
gramática mais restrita e sem • Assar
ambiguidades. Ainda utilizan- • Misturar cobertura Aplicar cobertura
do o exemplo do bolo, veja a
• Aplicar cobertura Figura 3 - Receita de bolo(flu-
seguir exemplos de fluxogra-
xograma)
Figura 4 - Receita de bolo
ma e da descrição narrati- Fonte: adaptada de Brockman
(descrição narrativa).
(2013).
va(BROCKMAN, 2013): Fonte: adaptada de Brockman (2013).

122 Conceitos Básicos de Programação


Descrição
Narrativa

Já vimos o que é um algoritmo e você já pensou


um pouco sobre como se faz para escovar os den-
tes. Tenho um amigo que diz que toda vez em
que pensamos num processo, nós desligamos mo-
mentaneamente o modo automático. Por exem-
plo, acompanhe comigo: expire! Agora inspire.
Expire. Inspire. Pronto, tiramos sua respiração do
modo automático.
Nós estudamos há pouco um exemplo simples
de algoritmo para escovar os dentes. Espero que
não tenha sido novidade para você (e que você já
saiba como fazer). Portanto, utilizar a descrição
narrativa não tem muitos segredos, já que utili-
zamos isso em nosso dia a dia.
Entretanto, em qual momento a descrição nar-
rativa se faz interessante? Certamente ela está num
estágio ainda distante do código, porque ela ainda
pode conter certa ambiguidade (que o computador
não entende) e também pode trabalhar em níveis
bem diferentes de detalhes. Por exemplo, dissemos
para esfregar a escova nos dentes, mas poderíamos
detalhar em vários passos o que seria isso.

UNIDADE 5 123
Para facilitar o entendimento da solução e ficar melhor visualmente, é comum utilizar a descrição
narrativa como uma lista de passos. Por exemplo, já pensou em como você faz para assistir TV?

1 Ir até a sala.
2 Procurar o controle remoto.
3 Se jogar no sofá.
4 Ligar a televisão.
5 Passar pelos canais até achar algo interessante.
6 Desistir e abrir plataformas de streaming.
7 Escolher o filme ou série.
8 Relaxar.

Essa é uma sequência de passos que costumamos executar. Por mais simples que pareça, ela nos introduz
conceitos interessantes e importantes sobre algoritmos. Aprendemos que algoritmos são sequências de
tarefas. Isso é visto no exemplo apresentado na forma de uma lista. O algoritmo nos introduz à ideia
de looping (ou repetição). No quinto passo, passamos pelos canais de forma repetitiva até encontrar
algo interessante (cuidado que podemos cair em um looping infinito se não houver algo interessante
na TV). No sexto item, interrompemos o looping e partimos para uma outra opção, o que pode nos
apresentar uma estrutura condicional, que significa algo como: “Se chegar a um número de tentativas
sem sucesso, faça outra coisa”.
Em resumo, a descrição narrativa é um ótimo primeiro passo para colocar as ideias em ordem e
descrever a sequência de ações necessária para resolver o nosso problema.
Para um problema matemático simples, como a soma de dois números, podemos ter o seguinte
algoritmo:
1. Obter o primeiro número.
2. Obter o segundo número.
3. Realizar a soma dos dois números.
4. Exibir o resultado da soma na tela.

124 Conceitos Básicos de Programação


Fluxograma

Sim, você pensou certo, a descrição narrativa é ba-


cana para organizar o pensamento, mas inútil para
o computador. Bom, pelo menos por enquanto,
antes deles aprenderem a entender a nossa lin-
guagem e as nossas ambiguidades.
Contudo, podemos organizar os mesmos pen-
samentos em estruturas mais interessantes, como
os diagramas de blocos, muitas vezes chamados
de fluxogramas. Eles são usados para descrever
comandos, estruturas condicionais e de repeti-
ção, podem ser considerados como uma outra
linguagem de descrição de algoritmos muito usa-
da quando surgiram as primeiras linguagens de
programação e foram usadas por muito tempo;
porém, seu uso inadequado ocasionava algorit-
mos muito confusos e difíceis de serem corrigidos.
Por este motivo, a fim de obter-se uma estrutura
mais coesa e confiável, foi substituído pelos pseu-
docódigos.
Por muitos anos, os fluxogramas foram deixados
de lado. Entretanto, devido à sua importância didá-
tica e, principalmente, ao potencial de explicar de
forma eficiente e concisa comandos mais complexos,
apresentaremos aqui esta ferramenta.

UNIDADE 5 125
Variáveis reais: A, B, C, X1, X2, delta, real, imag
Testes de
Início A, B, C Delta  B²– 4*A*C Condição

No algoritmo, quando chegamos


–B + Delta –B
X1  Real  ao ponto que há a necessidade
2*A Delta ≥ 0 2*A
de fazer escolhas entres diferen-
–B – Delta –Delta
X2  Imag  tes possibilidades, chamamos de
2*A 2*A
ramificação condicional ou ape-
“X1 = ” , X1, “X1 = (” , Real, nas ramificação (BROCKMAN,
“ e X2 = ” , X2 “) + i (” , Imag,
2013). Utilizando o exemplo do
“) e X2 = (” , Real,
Fim “) – i (” , Imag, “)” bolo, veja na figura a seguir que
a possibilidade de usarmos duas
Figura 5 - Fluxograma para equação do segundo grau formas de bolo nos coloca em
Fonte: Mokarzel e Soma (2008, p. 65). um ponto de ramificação do
Cada elemento do fluxograma possui um formato que nos ajuda a nosso algoritmo.
entender a ação que será realizada. Apesar de haver variações em Para assar

algumas definições de fluxograma, podemos definir os elementos


como visto no quadro a seguir. Tamanho
da forma?
Quadro 1 – Símbolos e significados comumente usados em 20 cm 23 cm
fluxogramas
Assar por Assar por
32-36 min 28-32 min
Início ou fim do algoritmo.
Esfriar por
15 min
Comando de atribuição.
Figura 6 - Fluxograma com ramifi-
Teste de condição. cação
Fonte: Brockman (2013, p. 254).

Entrada de dados. Em programas de computador,


diversas vezes precisamos uti-
Saída de dados. lizar testes condicionais. Difi-
cilmente um programa não os
Fonte: os autores.
utilizará. Com esse elemento, o
As setas que interligam os elementos indicam o fluxo de execução fluxograma já nos indica o que
do algoritmo. Sem muita informação adicional, já conseguimos fazer para cada possibilidade de
entender bem a solução quando ela é expressa em um fluxograma resposta do teste. A implemen-
e ela tende a ser menos ambígua que uma descrição narrativa. tação se torna bem mais clara.

126 Conceitos Básicos de Programação


Loopings (ou Repetições)

Processos com uma ou várias repetições, chamamos de loop. Ele é mostrado graficamente por um
percurso fechado do fluxograma. Para que ele chegue até o final, é preciso que um dos passos do loop
seja uma ramificação condicional; caso contrário, haverá uma repetição infinita (BROCKMAN, 2013).
Em outras palavras, um looping sempre precisa de uma condição de parada. Veja a seguir um exemplo
de um fluxograma com um loop e uma ramificação condicional:

Para contar
moedas

Zerar
contador

Moedas no Mostrar
bolso? Não
contagem

Sim

Remover
moeda
Loop + Ramificação condicional

Incrementar
contador

Figura 7 - Fluxograma com loop+ramificação condicional


Fonte: Brockman (2013, p. 256).

De posse de tal fluxograma, podemos escrever um código que pode ser transformado em programa
de computador.

Tenha sua dose extra de conhecimento assistindo ao vídeo. Para acessar, use
seu leitor de QR Code.

UNIDADE 5 127
Pseudocódigo

Acredito que agora você já está craque em fluxo-


gramas e descrição narrativa, então já deve estar
querendo ver o código propriamente dito. Esta-
mos chegando lá. Neste tópico nos dedicamos
ao pseudocódigo, que já é uma forma de código,
porém limitado e usando elementos de linguagem
natural para melhor entendimento. Pedimos que
preste atenção em como os fluxogramas fornecem
uma estrutura bem definida, que pode ser imple-
mentada de forma praticamente direta.
Iniciando pela definição, pseudocódigo é a
descrição de um processo que utiliza um vocabu-
lário restrito e um formato bem definido para evi-
tar ambiguidades. O nome vem do fato de muitos
programadores usarem “código” para se referirem
às instruções de um programa (BROCKMAN,
2013).
Um pseudocódigo é escrito em uma pseudo-
linguagem, ou seja, uma linguagem que não existe
de verdade, mas que é próxima à nossa, mas com
gramática (ou comandos) mais restrita. Por isso,
é comum encontrarmos pseudocódigos descri-
tos como “português estruturado”, que seria um
subconjunto da língua portuguesa, com algumas
estruturas que utilizamos em programação.

128 Conceitos Básicos de Programação


Por ser uma linguagem que não existe, não existe um único formato para o pseudocódigo ou por-
tuguês estruturado. Não é uma linguagem que precisa passar por um compilador e ser executada, mas
uma linguagem que vai escrever um algoritmo que executaremos apenas mentalmente.

Apesar de ter sido criada apenas para fins didáticos ou para estruturar o código antes de uma im-
plementação real, existem alguns projetos de compiladores para pseudocódigo, geralmente com
finalidade didática. Neles, é possível programar em português bem estruturado e definido, bem
como executar para ver o resultado.
Um desses projetos mais conhecido é o VisualG. Ele possui a vantagem de mostrar um resultado
do programa que você escreveu na tela, o que pode funcionar como um incentivo. Contudo, tome
cuidado, porque um compilador de pseudocódigo pode te deixar preguiçoso para entender o código,
já que ele vai analisar e tentar compilar o que você fez. Sempre saiba ler o seu código e encontrar
os erros, não deixe isso só para o compilador.

Em nossos exemplos de pseudocódigos, os algoritmos são iniciados com um nome que os identifica,
seguido de seu corpo delimitado pelas chaves “{” e “}”. No corpo do algoritmo, são colocadas, primeiro,
as declarações de variáveis e, depois, os vários comandos do programa, que podem ser comandos de
atribuições, de entrada e saída de dados, condicionais ou de repetição.

RaizesEquação2Grau {
Variáveis Reais: A, B, C, X1, X2, Delta, Real, Imag;

Ler (A, B, C);


Delta <- B^2 - 4*A*C;
Se (Delta >= 0) {
X1 <- (-B + Raiz(Delta)) / (2*A);
X2 <- (-B - Raiz(Delta)) / (2*A);
Escrever (“X1 = “, X1, “ e X2 = “, X2);
}
Senão {
Real <- -B/(2*A);
Imag <- Raiz(-Delta)/(2*A);
Escrever (“X1 = (“, Real, “) + i (“, Imag, “) e X2 = (“, Real, “) – i (“, Imag, “)”);
}
}

Figura 8 - Pseudocódigo para equação do segundo grau


Fonte: Mokarzel e Soma (2008, p. 58).

Sub-Rotina

Na linguagem dos algoritmos, o termo para uma sequência detalhada que está incluída em um passo
mais geral é sub-rotina, e também se chama de sub-rotina a ação de ir do processo principal para uma
sub-rotina (BROCKMAN, 2013). Para ficar mais claro, vamos voltar ao exemplo do bolo:

UNIDADE 5 129
Fluxograma Sub-rotinas
principal sub-rotinas proporcionam um
Para fazer Para Para misturar Para misturar mecanismo de abstração a um
o bolo preparar bolo cobertura processo que permite ao proje-
tista ignorar detalhes menores
e se preocupar apenas com o
Colocar mistura Bater açúcar
Preaquecer de bolo, água conjunto.
Preparar óleo e ovos em com manteiga
forno a 180°C por 1 minuto
uma tigela
Testes de
Condição
Bater por Adicionar leite
Misturar bolo Untar forma e uma clara
2 minutos em neve De forma análoga ao que já vi-
mos com os fluxogramas, em
pseudocódigo também pode-
Bater por mos escrever repetições em
Assar 4 minutos
nossos algoritmos. Usando o
exemplo que foi dado com os
fluxogramas, veremos como
Misturar decidir o tempo de assar o
cobertura
bolo. Para a descrição de uma
sequência simples como essa,
a representação em pseudocó-
Aplicar digo não é muito diferente da
cobertura
linguagem comum. Na descri-
Figura 9 - Fluxograma principal e sub-rotina ção de uma ramificação é que
Fonte: Brockman (2013, p. 253). o pseudocódigo começa a ad-
quirir um formato diferente.
Veja que as sub-rotinas não mudam o processo para se fazer o Reescrevendo a ramificação
bolo, elas apenas acrescentam mais passos ao roteiro, dando mais do algoritmo do fluxograma
detalhes ao processo e o simplificando, já que as tarefas ficam me- (Figura 10) em pseudocódigo,
nores e mais simples. Ainda de acordo com Brockman (2013), as temos:

130 Conceitos Básicos de Programação


Para assar: também é uma variante desse tipo de estrutura
SE o tamanho da forma é de 20 centímetros
ENTÃO asse por 32 a 36 minutos de decisão. Em vez de testar as condições indivi-
FIM-SE dualmente, o desvio é realizado com base no valor
SE o tamanho da forma é de 23 centímetros de uma simples expressão de teste. Dependendo
ENTÃO asse por 28 a 32 minutos desse valor, diferentes blocos de código podem
FIM-SE
ser executados. Além disso, um bloco opcional
Figura 10 - Pseudocódigo com ramificação SE/ENTÃO pode ser implementado se a expressão não as-
Fonte: adaptada de Brockman (2013). sume nenhum dos valores prescritos (CHAPRA;
Com a estrutura SE/ENTÃO, pode haver um desvio CANALE, 2011).
no fluxo do programa se o valor lógico da condição
é verdadeiro. Caso seja falso, nada acontece e o pro- Loopings (ou Repetições)
grama vai diretamente para a próxima instrução,
depois pode se acrescentar o FIM-SE. Para decisão Para aplicarmos o loop em pseudocódigos, é ne-
com dupla alternativa, utiliza-se a estrutura SE/ cessário conhecermos pelo menos mais três novos
ENTÃO/SENÃO; essa estrutura comporta-se da comandos, que são: PARA/FAÇA, ENQUANTO
mesma maneira para a condição verdadeira. No en- e REPITA.
tanto, se a condição é falsa, o programa implementa Utilizamos a estrutura PARA (ou PARA/
o código entre o SENÃO e o FIM-SE (CHAPRA; FAÇA) quando já sabemos previamente o número
CANALE, 2011) de vezes que um comando deve repetir. Por exem-
plo, para realizar uma soma de todos os números
Para assar: de 1 a 10, temos uma quantidade conhecida de
SE o tamanho da forma é de 20 centímetros
ENTÃO asse por 32 a 36 minutos operações. Podemos utilizar o seguinte código:
SENÃO SE o tamanho da forma é de 23 centímetros
ENTÃO asse por 28 a 32 minutos
SENÃO pare e troque a forma
FIM-SE Soma <- 0
PARA X de 1 até 10 FAÇA
Figura 11 - Pseudocódigo com ramificação SE/ENTÃO/ Soma <- Soma + X
SENÃO FIM-PARA
Fonte: adaptada de Brockman (2013). ESCREVA (“A soma é “, Soma)

Embora as estruturas SE/ENTÃO e SE/ENTÃO/


SENÃO sejam suficientes para construir qualquer Figura 12 - Pseudocódigo para somar os números de 1 a 10
algoritmo numérico, duas outras variantes são Fonte: os autores.

comumente usadas. Suponha que a cláusula SE- Quando não conhecemos o número de repeti-
NÃO de um SE/ENTÃO/SENÃO contenha outro ções, podemos utilizar o comando ENQUAN-
SE/ENTÃO. Para esses casos, o SENÃO e o SE TO. A ideia é que enquanto uma determinada
podem ser combinados na estrutura SE/ENTÃO/ condição for verdadeira, um bloco de comandos
SENÃOSE. A estrutura CASO (ou ESCOLHA) é executado.

UNIDADE 5 131
Para o nosso algoritmo de contar moedas, te- o bloco de código vai executar, pelo menos, uma
mos em fluxograma e podemos escrever o código vez, diferentemente do ENQUANTO ou mesmo
a seguir. do PARA.
Por exemplo, imagine que você quer somar os
Contador <- 0
ENQUANTO (Tem moedas no bolso) FAÇA
números de 1 a 10. Você pode escrever o seguinte
Remover moeda código:
Contador <- Contador + 1
FIM-ENQUANTO
ESCREVA (“Havia “, Contador, “ moedas no bolso”)
Soma <- 0
Figura 13 - Pseudocódigo para contar as moedas do bolso X <- 1
Fonte: os autores.
REPITA
Por último, temos o comando REPITA, que fun- Soma <- Soma + X
ciona de forma muito similar ao ENQUANTO, ATÉ QUE X = 10
com a diferença que ele, primeiro, executa um blo-
Figura 14 - Pseudocódigo para somar números de 1 a 10,
co de código para, depois, testar se vai continuar usando a estrutura REPITA
em looping. Com isso, temos uma certeza de que Fonte: os autores.

Note que a condição no comando REPITA é contrária ao que usaríamos no ENQUANTO, pois no
REPITA o bloco continua em looping enquanto a condição for falsa e não verdadeira. Algumas lin-
guagens implementam o comando FAÇA/ENQUANTO, que funciona como o REPITA, mas permanece
em looping enquanto a condição for verdadeira.

No caso do nosso algoritmo apresentado, o número 10 entrou na soma? Sim, ele entrou, porque pri-
meiro a soma foi efetuada para depois o valor de X ser testado.
Chegamos, então, ao final de nossa unidade. Ela apresentou conceitos a respeito do funcionamento de
computadores e também de programação. Lembrando que o que foi apresentado aqui não é suficiente
para você aprender a programar, mas também esse não é o nosso objetivo neste livro. Contudo, os con-
ceitos iniciais apresentados lhe podem ser muito úteis no estudo de programação. Tendo em vista que a
programação está a cada dia mais presente em nosso dia a dia e que ela vem a ser uma ferramenta muito
útil em qualquer área do conhecimento, aprender programação funciona, hoje em dia, como uma segunda
linguagem para a nossa vida.

132 Conceitos Básicos de Programação


Você pode utilizar seu diário de bordo para a resolução.

1. Hardware e software são diferentes elementos em um computador, mas são


elementos que se complementam, afinal um não vive sem o outro.
Encontre, nas alternativas a seguir, um elemento que não seja um exemplo de
hardware.
a) Impressora.
b) Mouse.
c) Windows.
d) Monitor.
e) Leitor de código de barras.

2. Quando descrevemos um algoritmo em descrição narrativa, ele pode ter dife-


rentes níveis de profundidade, chegando mais próximo de uma implementação
ou não. Quando dizemos, em nossa descrição narrativa, para escovar os dentes,
“esfregue a escova até que os dentes fiquem limpos”, temos um exemplo de:
a) Teste de condição.
b) Looping.
c) Atribuição de valor.
d) Implementação.
e) Variáveis.

133
3. Para programar um computador, precisamos escrever os nossos algoritmos em
uma linguagem que o computador entenda.
Considerando o texto da questão 2, avalie as afirmações a seguir.
I) Algoritmos são comandos de linguagens de programação que podem ser
executados.
II) A linguagem conhecida como Português Estruturado é uma linguagem de
programação comercial que utiliza comandos em português.
III) Os algoritmos não, necessariamente, têm a ver com computadores.
IV) Português Estruturado possui uma gramática limitada e não ambígua.

Assinale a alternativa correta.


a) Apenas II está correta.
b) Apenas III está correta.
c) Apenas I e IV estão corretas.
d) Apenas III e IV estão corretas.
e) Apenas I, II e III estão corretas.

134
FILME

Piratas da Informática (Pirates of Silicon Valley)


Ano: 1999
Sinopse: o filme conta a ascensão da Apple e da Microsoft, as duas maiores
empresas de informática do planeta. Em busca da liderança do mercado, Steve
Jobs (Noah Wyle) e Bill Gates (Anthony Michael Hall), fundadores das empresas,
enfrentam-se em uma guerra de bastidores.
Comentário: um filme ótimo para entender o começo da era dos PCs, as parce-
rias, as intrigas e as personalidades marcantes de Bill Gates e Steve Jobs.

FILME

Revolutions OS
Ano: 2001
Sinopse: com a participação de algumas das pessoas mais influentes da história,
como Richard Stallman, Eric Raymond e Linus Torvalds, o documentário come-
ça no início da década de 80 com o projeto GNU, passando pela definição de
software livre e código aberto, o papel do Apache na adoção inicial do Linux, a
liberação do código-fonte do navegador Netscape para combater o monopólio
do Internet Explorer da Microsoft, o IPO da Red Hat e a adoção do Linux e do
software aberto de forma geral como modelo viável de negócios.
Comentário: vale muito a pena assistir esse documentário porque é feito com
depoimento das próprias pessoas que fazem parte da história da computação
e, mais especificamente, de software.

135
BROCKMAN, J. B. Introdução à engenharia: modelagem e solução de problemas. Rio de Janeiro: LTC, 2013.

CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.

CORMEN, T. H. et al. Algoritmo: teoria e prática. 2. ed. Rio de Janeiro: Elsevier, 2002.

GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre: Bookman,
2008.

HENNESSY, J. L.; PATTERSON, D. A. Organização e projeto de computadores: a interface hardware/software.


2. ed. Rio de Janeiro: LTC, 2000.

MOKARZEL, F. C.; SOMA, N. Y. Introdução à ciência da computação. Rio de Janeiro: Elsevier, 2008.

NOEL, A. A. Fundamentos e arquitetura de computadores. Maringá: Unicesumar, 2019.

VELLOSO, F. C. Informática: conceitos básicos. 4. ed. Rio de Janeiro: Campus, 1999.

136
1. C.

2. B.

3. D.

137
138
Me. Andre Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos

Linguagens de
Programação

PLANO DE ESTUDOS

Paradigmas de Linguagens Linguagens de Programação


de Programação de Baixo Nível

As Linguagens que os Linguagens Simbólicas Linguagens de


Computadores Falam Programação de Alto Nível

OBJETIVOS DE APRENDIZAGEM

• Conceituar as linguagens de programação, identificando a • Analisar o conceito de programação em baixo nível.


forma em que elas fazem a comunicação com a máquina. • E
studar princípios de programação em alto nível e suas
• Conhecer diferentes paradigmas ou estilos de programação. aplicações.
• Apresentar o conceito de linguagens simbólicas e a sua
utilidade.
As Linguagens que
os Computadores Falam

Olá, aluno(a), seja bem-vindo(a) à mais uma


unidade, na qual você desenvolverá outra habi-
lidade de extrema relevância para sua formação
profissional. Destacamos, aqui, a importância dos
conhecimentos em programação para a socieda-
de contemporânea, cada vez mais digitalizada e
dependente deste recurso.
Internamente, os computadores se comunicam
e trabalham a informação em uma linguagem co-
nhecida como “linguagem de máquina”. A forma
de definir comandos e procedimentos simples
pode ocupar páginas de programação, o que torna
lento e trabalhoso o desenvolvimento de software.
Para tornar viável o processo de desenvolvi-
mento de software, os projetistas buscaram de-
senvolver linguagens intermediárias, que estives-
sem entre a linguagem natural (a linguagem que
falamos) e a linguagem de máquina, tornando o

140 Linguagens de Programação


entendimento e o desenvolvimento de software dados com algum significado. Para o olho huma-
algo viável para os programadores. Desta forma, no, não é simples identificar uma longa sequência
um programa de computador escrito em uma de zeros e uns e entender o que está vendo. E por
“linguagem de programação de alto nível” (ve- que os computadores utilizam o “zero-um”? Acre-
remos a definição adiante) pode ser “traduzido” dite, essa não foi a primeira ideia dos projetistas
para a linguagem de máquina e executado pelo de computadores.
hardware. Um computador (moderno ou não) é, basi-
Nesta unidade, entenderemos melhor como o camente, uma máquina de calcular (sim, uma
computador trata as instruções em linguagem de calculadora), muito rápida e programável. O
máquina (de modo superficial), discutiremos as processador de um computador atual consegue
diferentes categorias de linguagens de programa- fazer bilhões de operações aritméticas por segun-
ção, depois, veremos linguagens de programação do (é isso o que significam os “Gigahertz” de um
simbólicas, linguagens de baixo nível e linguagens processador). E as operações que ele faz são sim-
de alto nível. ples, basicamente as operações aritméticas soma,
subtração, multiplicação e divisão; as operações
Linguagem de Máquina: lógicas E, OU, NÃO e NÃO-EXCLUSIVO; as ope-
Comunicação em Zero-Um rações de deslocamento à direita e à esquerda; e as
operações de incremento e decremento (MON-
Existe uma noção de que a linguagem de máquina TEIRO, 2001).
é muito complicada e que os humanos não con- Os primeiros computadores surgiram da neces-
seguem entender. Bom, ela não é, de fato, compli- sidade de automatizar as operações aritméticas, ou
cada no sentido de complexidade, mas trabalhosa seja, eram calculadoras automatizadas. Inicialmen-
para se entender. Não tem como uma linguagem te, com soma e subtração, depois, com multiplica-
de apenas dois símbolos ser mais complicada do ção e divisão. Contudo, eram máquinas que usavam
que a linguagem que usamos com 26 símbolos (do o sistema decimal, ou seja, algarismos de 0 a 9.
alfabeto) somados às pontuações, acentuações e Com o surgimento dos computadores ele-
combinações com números, isso sim é compli- trônicos, os projetistas perceberam a vantagem
cado! Ainda mais quando estudamos gramática. em utilizar um sistema digital (ou binário), que
Contudo, como há apenas dois símbolos (0 e possuísse apenas dois números. Basicamente, re-
1) para a linguagem, é preciso criar mais combi- presentar apenas dois estados é mais simples do
nações desses símbolos para formar palavras ou que uma faixa “analógica” de valores.

UNIDADE 6 141
Sendo assim, os sistemas digitais trabalham apenas com duas
possibilidades de informação: 0 ou 1, falso ou verdadeiro, tensão
baixa ou tensão alta. Esse formato digital é a maneira pela qual a
informação é armazenada e manipulada, seja em um disco rígido,
na memória principal, no processador ou no tráfego de informações
em uma rede.

Como toda informação armazenada no computador é numérica, as


conversões de números para outros formatos acontecem o tempo
todo durante o uso do computador. O texto que escrevemos, por
exemplo, é todo armazenado na forma de números e há uma
tabela para convertê-los nos caracteres esperados.
O padrão mais comum há um tempo era a Tabela ASCII, que pos-
suía 128 caracteres (todas as letras do alfabeto, os números e ainda
vários outros caracteres). Logo veio a Tabela ASCII estendida, que
aumentou para 256 caracteres. Por fim, estamos usando o Uni-
code, que possibilita representar até bilhões de caracteres, o que
contempla os diferentes alfabetos do mundo e ainda muita coisa a
mais, como os amados emojis, que são também caracteres unicode!

A boa notícia é que você não precisa aprender essa linguagem e


muito menos utilizá-la para programar. De fato, é muito difícil
identificar de forma rápida o significado para um humano e a
possibilidade de errar um zero ou um é muito grande. Por isso,
vamos ver os outros tipos de linguagens que podemos utilizar.

142 Linguagens de Programação


Paradigmas de
Linguagens de
Programação

Como vimos, não precisamos aprender a lingua-


gem de máquina para passar instruções para um
computador. Existem linguagens especiais que
são chamadas de linguagens de programa-
ção, que nos possibilitam escrever instruções
de uma forma mais fácil de ser entendida por
seres humanos.
Essas linguagens são assim chamadas por-
que possuem muitas características similares
às das linguagens “tradicionais”. Você se lembra
das aulas de Português em que estudou sobre o
receptor, o emissor, o canal, o código etc.? Então,
uma linguagem de programação também possui
esses elementos.

UNIDADE 6 143
Contudo, não podemos (ainda) utilizar lin- Ainda existem as linguagens fortemente
guagens naturais para programar. E o que seriam tipadas em que os tipos de dados das variá-
elas? As linguagens que usamos em nosso dia a veis não mudam em tempo de execução e não
dia (português, inglês, espanhol), que são cheias podem ser realizadas operações com variáveis
de ambiguidades e possuem uma noção de con- de tipos diferentes. Por outro lado, existem as
texto que as máquinas não dão conta de entender. linguagens fracamente tipadas, na qual a mis-
Por isso, as linguagens de programação são não tura de tipos ou a troca do tipo de dados de uma
ambíguas e com uma gramática simplificada. variável não ocasiona nenhum erro.
Temos, ainda, a classificação em níveis, que
Como Classificar mencionaremos adiante, na qual uma linguagem
as Linguagens de mais baixo nível se aproxima mais à lingua-
gem de máquina, enquanto uma linguagem de
Existem várias formas diferentes de classificar as mais alto nível se aproxima mais da linguagem
linguagens de programação. Podemos classificar natural (ou linguagem falada).
pela forma em que geram o programa final, por
exemplo. Existem as linguagens compiladas, E os Paradigmas?
cujo código-fonte (o programa escrito na lin-
guagem em questão) passa por um compilador Os paradigmas de linguagens de progra-
que verifica se há erros, otimiza o código e gera mação têm a ver com o estilo de escrita dos
um arquivo executável permanente. Existem as programas. Essa tem sido uma forma bastante
linguagens interpretadas, cujo código-fonte comum de classificar as linguagens, que leva
passa por um interpretador que faz um pro- em consideração a forma em que são utilizadas.
cesso parecido, mas toda vez em que se precisa É importante ter em mente que uma lingua-
executar o programa, ela não gera um arquivo gem de programação pode dar suporte à pro-
executável permanente. gramação em diferentes paradigmas, ou seja,
Olhando de uma outra forma, podemos ava- existem linguagens que admitem apenas um
liar como as linguagens lidam com os tipos de paradigma, mas existem linguagens que admi-
dados. Existem as linguagens estaticamente tem mais de um.
tipadas, que exigem que as variáveis sejam de- Existem vários paradigmas de programação
claradas com seus devidos tipos de dados antes diferentes, mas usaremos uma definição que
de serem utilizadas. Há também as linguagens foca nos principais. Segundo Sebesta (2010),
dinamicamente tipadas que não exigem a de- existem quatro paradigmas principais: Impera-
claração de variáveis. A variável recebe o tipo de tivo, Funcional, Lógico e Orientado a Objetos.
dados quando recebe um valor, o tipo da variável Já Scott (2009) separa os paradigmas em dois
será o tipo daquele valor. grupos:

144 Linguagens de Programação


• Declarativos
• Funcionais (Lisp/Scheme, ML, Haskell)
• Lógicas (Prolog)
• Imperativos
• Procedurais (C, Pascal, Fortran)
• Scripting (Perl, Python, PHP, JavaScript)
• Orientadas a objetos (Smalltalk, C++, Java)

Na prática, qual é a diferença? Nos paradigmas imperativos, a programação segue uma lógica de pro-
gramação com a ideia das tarefas (ou instruções) executadas pelo computador. São paradigmas mais
naturais para o computador.
Os paradigmas declarativos seguem uma ideia de que as informações são “declaradas” ao com-
putador e o resultado final vem por meio da combinação das informações ou funções. Aproxima-se
um pouco mais do funcionamento do cérebro humano. O processamento é efetuado de acordo
com todo o conhecimento e as regras informadas na programação, mas lembrando que tudo acaba
sendo ainda traduzido para a linguagem de máquina para ser efetivamente processado.

UNIDADE 6 145
Linguagens
Simbólicas

Como sabemos, qualquer que seja o computador,


seu funcionamento é dependente de um progra-
ma. Deste modo, antes da execução de um serviço
qualquer, é necessário que haja a gravação do res-
pectivo programa que executará a tarefa na me-
mória do equipamento, pois com isso a máquina
passa a ser comandada por ele, rapidamente, sem
discutir, pensar, julgar ou compreender o signifi-
cado do que faz até que encontre a ordem “pare”
(VELLOSO, 1994).
Os programas são gravados na memória de
determinado equipamento na forma de uma série
de dados que obedecem a um código que é assi-
milável pela máquina. Quando um computador
deseja executar uma certa tarefa, ele interpreta
esses dados na forma de uma ordem a ser seguida
passo a passo. O significado e a ordem desse có-
digo são o que dá forma à linguagem de máquina
(VELLOSO, 1994).

146 Linguagens de Programação


Um programa, em linguagem de máquina, como já dissemos, é uma sequência de ordens que, por
sua vez, são sequências de bits 0 e 1 (o bit é a menor unidade de informação em um computador, que
pode armazenar apenas um 0 ou um 1). Por exemplo, uma tarefa a ser executada por um computador
poderia ser a sequência de bits:
00011000 00011011 (A)
que poderia também ser escrita na forma de caracteres hexadecimais:
1 8 1 B (B)

No entanto, escrever um programa diretamente em qualquer uma das linguagens (A) ou (B) torna-se
um trabalho extremamente monótono e cansativo, que ocuparia muito tempo, tornando-o altamente
sensível a numerosos erros, o que nos leva a pensar que seria extremamente conveniente se fosse pos-
sível escrever instruções para o equipamento diretamente na linguagem fluente, como:

“TRANSFERIR PARA O REGISTRADOR 1


O CONTEÚDO DO REGISTRADOR 11” (C)

Infelizmente, não é possível programar da forma apresentada. Como forma de contornar este incon-
veniente, criou-se uma série de linguagens simbólicas de programação, que apresentam características
intermediárias entre ambas as linguagens, ou seja, uma similaridade entre a linguagem interna do
equipamento (A e B) e a linguagem humana (C), permitindo, assim, que a programação possa ser
entendida por alguém que seja familiarizado com certas regras, ainda se assemelhando de maneira
suficiente à linguagem da máquina, tornando possível a um determinado programa fazer a conversão
da linguagem simbólica para a linguagem da máquina. Veja o exemplo a seguir.
Quadro 1 – Comparação entre as linguagens utilizadas por humanos e máquinas

Linguagem Humana: “MULTIPLICAR O NÚMERO


DE HORAS PELA TAXA”
Linguagem Interna “F C 5 2 3 2 A 4 3 2 C 8”
da Máquina: ou
“11111100 01010010 0011010”
Linguagem Simbólica: “MP HORAS,TAXA”

Fonte: adaptado de Haberkorn (1977).

UNIDADE 6 147
É possível observar, pelo Quadro 1, que a lingua-
gem simbólica force uma ideia geral da natureza
da operação, sem trazer a fluência e a redundância
da linguagem humana. No entanto, é importante
destacar que a utilização deste tipo de linguagem
requer, ainda, a criação de um programa conver-
sor, que traduza um programa simbólico para a
linguagem interna da máquina. Mesmo assim, é
possível destacar algumas vantagens na utilização
da linguagem simbólica (HABERKORN, 1977):
1. Redução do tempo e, consequentemente,
do custo de programação.
2. Por ser um trabalho menos monótono e
cansativo, minimiza a ocorrência de erros.
3. Redução do tempo de testes para a corre-
ção de erros.
4. Facilidade em introduzir alterações em
programas já existentes.
5. Facilidade em desenvolver rotinas pa-
dronizadas a serem utilizadas em vários
programas.

Como linguagem simbólica, nós temos a lingua-


gem Assembly, que é bem próxima à linguagem de
máquina e, por isso, bem dependente da arquite-
tura utilizada. Por isso, temos versões de Assembly
específicas para plataformas diferentes.
Um código escrito em Assembly passa por
um montador (assembler) que é quem “traduz” o
código para instruções que o processador utiliza
em linguagem de máquina.

148 Linguagens de Programação


Linguagens de
Programação de
Baixo Nível

De forma geral, as linguagens de programação são


divididas em duas categorias: linguagens de alto
nível e linguagens de baixo nível. Linguagens
de alto nível são linguagens que se aproximam
mais da linguagem natural (a linguagem que as
pessoas usam), enquanto as linguagens de mais
baixo nível estão mais próximas à linguagem de
máquina. A literatura diverge um pouco na sepa-
ração dos níveis, mas não importa tanto ter uma
divisão exata.
Na Figura 1, observa-se que de um lado tem-
-se o mais alto nível de linguagem, utilizado por
uma pessoa (usuário), ou seja, a linguagem natu-
ral ou humana, e, do outro lado, o computador
(hardware), que só compreende 0 e 1. A ligação
entre homem e máquina é feita por meio do uso
do software, que quanto mais baixo o nível de
linguagem utilizada, mais próximo estará da lin-
guagem da máquina que é a codificação final, a
única a ser executada pelo sistema eletrônico do
equipamento (MEIRELLES, 1988).

UNIDADE 6 149
Nível da
Linguagem
“Pessoa”
Usuário
c) O número de sentenças
s Linguagem de Altíssimo Nível Natural a escrever numa lin-
ma
gra Lotus, VisiCale, dBase...
w ar
e - Pro
Linguagem de Alto Nível
Altíssimo guagem de baixo nível é
t
Sof Basic, Cobol, Pascal...
C.Forth
Alto aproximadamente igual
Sistema
Micro Montadora Operacional ao número de instruções
Linguagem Assembler
de Máquina Baixo que o programa conver-
Hardware
Equipamento sor produzirá em LM.

Figura 1 - Níveis de linguagem de programação Analisando as características


Fonte: adaptada de Meirelles (1988).
apresentadas, é possível obser-
Os computadores mais comuns utilizados nos dias de hoje, portáteis var que existem desvantagens
ou mais robustos, como sabemos, executam programas por meio e limitações no emprego deste
de instruções em Linguagem de Máquina (LM), sendo que estas tipo de linguagem. No entanto,
instruções são ordens que realizam comandos de baixa complexi- existem motivos que tornam
dade, por exemplo “pegue um byte da memória e coloque-o num necessária sua utilização. Pri-
registrador”. Esses comandos ou ordens são chamados de conjunto meiramente, o programa con-
ou set de instruções do processador e está permanentemente gra- versor utilizado em linguagem
vado no processador desde a sua fabricação (MEIRELLES, 1988). de alto nível exige mais memó-
Cada instrução em LM gravada no processador possuiu uma ria do que um programa utiliza-
representação binária e é por meio desta que o processador en- do na conversão da linguagem
tende o que deve ser feito. No entanto, para que os programadores de baixo nível, deste modo, para
não tivessem a necessidade de lembrar cada uma das sequências certas configurações de peque-
possíveis, os significados em termos do que cada uma executaria, na capacidade de memória, tor-
criou-se um sistema de codificação para representar as instruções na-se obrigatório recorrer-se a
em LM. Esse sistema é constituído pelas “Linguagens de Baixo Nível” uma linguagem de baixo nível.
(MEIRELLES, 1988). De acordo com Haberkorn (1977), as lingua- Quando o programador utili-
gens de baixo nível têm como principais características: za deste nível de linguagem, pode-
a) A linguagem é inteiramente orientada para a máquina. Deste -se dizer que ele se encontra “mais
modo, o programador que irá desenvolver um programa próximo da máquina”, permitindo
utilizando de uma linguagem de baixo nível deve saber para a ele a possibilidade de usar ar-
que modelo de computador estará programando, além de tifícios de programação e, deste
conhecer o set de instruções e as características daquele modo, utilizar recursos específi-
modelo de computador. cos de dado computador, levan-
b) Cada programa escrito em uma linguagem de baixo nível do a uma redução da memória
é específico para um modelo de computador, ou seja, ele empenhada para realizar certo
não pode ser utilizado para outro modelo, a não ser que comando, bem como o tempo de
haja compatibilidades entre ambos. execução (HABERKORN, 1977).

150 Linguagens de Programação


Assembly

O Assembly é uma linguagem de baixo nível que depende das características específicas do compu-
tador para o qual está se programando. Quando essa linguagem está sendo utilizada, o processo que
deseja ser realizado é descrito de maneira minuciosa. Implica que o programador deverá, praticamente,
escrever uma sentença em linguagem Assembly para cada processo que deseja obter em linguagem de
máquina (HABERKORN, 1977).

Tabela 1 - Exemplos de instruções escritas em linguagem Assembly

Linguagem Assembly Instrução

Move (ou copia) o inteiro 10000h para o registrador EAX. O


mov eax,10000h
primeiro operando é o destino e o segundo é a fonte.

Adiciona o valor 40000h ao registrador EAX, somando-se ao


add eax, 40000h
valor que já estava gravado.

sub eax, 20000h Subtrai 20000h do registrador EAX.

call DumpRegs Exibe os registradores.

Fonte: adaptada de Irvine (2003).

O programa em Assembly é escrito em texto puro (ou texto plano) que recebe o nome de progra-
ma-fonte. É este programa que o conversor irá transformar em um outro programa de linguagem de
máquina, que será chamado de programa-objeto ou módulo (HABERKORN, 1977).
Veremos, ainda, diferenças com a programação em linguagem C, uma linguagem escrita na década
de 70 e uma das mais utilizadas no mundo. É uma linguagem versátil e compacta, presente no códi-
go-fonte dos sistemas operacionais que usamos e em diversos sistemas embarcados, aqueles que são
programados e embutidos nos dispositivos.
A linguagem C, apesar de estar em um nível mais alto que a linguagem Assembly, ainda possui muitas
características de baixo nível, como a manipulação de ponteiros, alocação de memória, até mesmo a
possibilidade de embutir código Assembly dentro da programação em C.

UNIDADE 6 151
Linguagens de
Programação de
Alto Nível

Linguagens de programação de alto nível estão


mais distantes da linguagem de máquina e mais
próximas à dos humanos, porém ainda com gra-
máticas limitadas livres de ambiguidade e contex-
to. Com isso, um código escrito em uma lingua-
gem de programação de alto nível torna-se mais
fácil de ler por uma pessoa, ainda que a pessoa não
tenha pleno conhecimento da linguagem.
Veja o código a seguir antes de seguir adiante.

Figura 2 - Trecho de código em JavaScript para exibir um alerta


Fonte: os autores.

O código (Figura 2) é um trecho bem pequeno


escrito em JavaScript. Agora, mesmo que você
não conheça JavaScript, seria uma surpresa para
você se eu dissesse que esse código exibe uma

152 Linguagens de Programação


mensagem de alerta, com o texto “Olá, mundo!”, A Linguagem C
após carregar o conteúdo da janela? Mesmo sem
conhecer a sintaxe, nós podemos entender tre- Criada em 1972, por Denis Ritchie, nos Laboratórios
chos do que a programação faz por ela estar mais Bell, a linguagem C é uma evolução da linguagem B,
próxima da nossa linguagem (principalmente se criada em 1970 por Ken Thompson. A linguagem B
soubermos inglês). derivou do Algol, que foi projetada em 1960 por um
As linguagens de programação de alto nível comitê internacional (VELLOSO, 1994).
tiveram seu início com a linguagem Fortran, em A linguagem C é estruturada, ou seja, se-
1954. A partir daí, foram surgindo diversas outras gue o paradigma estruturado, organizando
linguagens de programação, algumas como evo- seu fluxo de execução em uma sequência de
lução de linguagens anteriores ou combinação de comandos e estruturas de controle. Foi criada
conceitos. Hoje em dia, existem muitas linguagens inicialmente para operar em sistemas UNIX,
diferentes, sendo que cada uma busca ser melhor porém se difundiu bastante devido ao seu po-
em alguma área. Temos linguagens voltadas para tencial (VELLOSO, 1994).
web, linguagens voltadas para processamento de Uma vantagem de programas escritos em
informações grandes, linguagens voltadas para C é a velocidade de execução. Programas em
desenvolvimento mobile etc. C tendem a gerar um executável pequeno e
Dentre as linguagens de programação, a lin- eficiente, justamente por trabalhar em um nível
guagem C é uma das linguagens mais importan- mais baixo, sem incluir muitas funções e biblio-
tes pelo seu histórico e pelo seu uso, pois é uma tecas que pode nem mesmo utilizar. Programas
linguagem que permite manipulações de infor- em C podem realizar quase tudo o que é pos-
mações em baixo nível, ao mesmo tempo em que sível em uma máquina, devido à versatilidade.
permite a criação de programas de propósito geral Contudo, não é uma linguagem fácil de apren-
em alto nível. Por ser uma das mais difundidas e der e acaba desencorajando alguns aprendizes
ainda muito utilizada, serviu de base para inúme- (NORTON, 1996).
ras outras linguagens. Linguagens como Java, PHP, Temos, a seguir, um exemplo de programa es-
JavaScript e várias outras mantêm uma sintaxe crito em C, que faz a soma dos termos de uma P.A.
baseada na sintaxe da linguagem C. Observe as instruções do código.

UNIDADE 6 153
Com essas informações, cria-se uma variável
de controle termo (linha 15), que armazenará ter-
mo a termo de nossa P.A. (sim, não é a melhor
forma de fazer esse cálculo), começando pelo
primeiro termo (linha 16). E há, ainda, a variável
soma (linha 17), que armazenará toda a soma,
começando com o valor zero.
Das linhas 18 a 21 há um looping que, enquan-
to não passar do último termo (linha 18), soma-se
o valor do termo atual ao resultado que temos da
soma (linha 19) e atualiza o termo para o próximo
termo (linha 20).
Por fim, exibe-se na tela o resultado final da
Figura 3 - Programa escrito em C para realizar a soma dos soma (linha 22) e termina o programa (linha 24).
termos de uma P.A.
Fonte: os autores.
FORTRAN

A linguagem FORTRAN (Formula Translation)


Tenha sua dose extra de foi desenvolvida pela IBM na década de 50, du-
conhecimento assistindo ao
rante a 2ª geração de computadores. O objetivo
vídeo. Para acessar, use seu
leitor de QR Code. original era trabalhar com cálculos matemáticos
e a linguagem fez muito sucesso. Depois de várias
atualizações e versões, a linguagem ainda é bastan-
A execução de um programa em linguagem te utilizada em sistemas mainframes (NORTON,
C se inicia pela função main, que vemos das 1996).
linhas 3 a 25. Na primeira linha, encontramos A Figura 4 traz um pequeno programa de car-
um código comum na maioria dos programas tas escrito em FORTRAN, em que se simula a
em C, que é a chamada da biblioteca stdio.h, distribuição aleatória de uma carta de baralho.
que possui funções que controlam a entrada e Com o FORTRAN, é possível embutir comentá-
saída de dados. rios iniciando uma linha com o caractere C, caso
Primeiro, são declaradas as variáveis (linha em que toda a linha é considerada um comentário
4), então é requisitado ao usuário que digite o ou, ainda, colocando um ponto de exclamação no
primeiro (linhas 6 e 7) e o último (linhas 9 e 10) meio de uma linha, o que indica que o texto inse-
termos da P.A., assim como a razão de crescimen- rido daquele ponto até o final da linha é um co-
to (linhas 12 e 13). mentário e deve ser ignorado (NORTON, 1996).

154 Linguagens de Programação


Figura 4 - Programa que simula a escolha aleatória de uma carta de baralho em FORTRAN
Fonte: Norton, (1996, p. 450).

Nós vimos que existem diversas linguagens de programação de alto nível e que as linguagens podem
ter propósitos específicos. Portanto, não há uma linguagem específica que seja melhor do que as ou-
tras para qualquer finalidade. Para você criar um programa para auxiliar no seu trabalho, é preciso
conhecer como funciona uma linguagem de programação, assim como seus comandos e estruturas.
Por mais que o intuito desse conteúdo não seja formar programadores, é interessante o conhecimento
e o domínio de, pelo menos, uma linguagem de programação, visto que a programação hoje está em
todas as áreas do conhecimento.
Nas próximas unidades, estudaremos o processo de criação de programas, algumas diferenças
entre tipos de programas de computador, para, depois, focar em softwares matemáticos que podem
nos ajudar nas áreas de engenharia.
Aproveite bem o conteúdo!

UNIDADE 6 155
Você pode utilizar seu diário de bordo para a resolução.

1. Internamente, o computador trabalha com o que chamamos de Linguagem de


Máquina, que consiste, basicamente, de um alfabeto que contém apenas os
símbolos 0 e 1.
Assim, é correto afirmar que:
a) Linguagens de baixo nível são linguagens que são bem definidas.
b) Linguagens de alto nível são linguagens orientadas a objetos.
c) Linguagens de baixo nível são linguagens mais próximas à linguagem de má-
quina.
d) Linguagens de alto nível são linguagens escritas de acordo com determinada
arquitetura de programador.
e) Linguagens de baixo nível se aproximam mais à linguagem natural.

2. Para programar computadores, podemos utilizar diferentes tipos de lingua-


gens. Com base nessa informação, analise as afirmativas a seguir e assinale V
(verdadeiro) ou F (falso).
( ) Assembly é uma linguagem simbólica que torna as instruções da máquina mais
fáceis de serem entendidas.
( ) A linguagem simbólica possui comandos em texto que tem equivalente direto
em linguagem de máquina.
( ) Linguagens de alto nível possuem alto nível de complexidade de entendimento.
Assinale a alternativa que apresenta a sequência correta:
a) V-V-V.
b) V-V-F.
c) V-F-F.
d) F-F-V.
e) F-F-F.

156
3. Existem diferentes paradigmas de linguagens de programação que podem ser
utilizados de acordo com a linguagem ou necessidade.
Assinale V (verdadeiro) ou F (falso).
( ) Os paradigmas de linguagens de programação podem ser entendidos como
estilos de programação.
( ) Uma linguagem pode ter apenas um paradigma.
( ) Os paradigmas declarativos se aproximam à forma que o computador trabalha,
enquanto os imperativos funcionam mais próximos ao pensamento humano.
Assinale a alternativa que apresenta a sequência correta:
a) V-V-V.
b) V-V-F.
c) V-F-F.
d) F-F-V.
e) F-F-F.

157
FILME

Estrelas Além do Tempo


Ano: 2016
Sinopse: 1961. Em plena Guerra Fria, Estados Unidos e União Soviética dispu-
tam a supremacia na corrida espacial ao mesmo tempo em que a sociedade
norte-americana lida com uma profunda cisão racial entre brancos e negros.
Tal situação é refletida também na NASA, em que um grupo de funcionárias
negras é obrigada a trabalhar à parte. É lá que estão Katherine Johnson (Taraji
P. Henson), Dorothy Vaughan (Octavia Spencer) e Mary Jackson (Janelle Monáe),
grandes amigas que, além de provarem sua competência dia após dia, precisam
lidar com o preconceito arraigado para que consigam ascender na hierarquia
da NASA.
Comentário: um ótimo filme para ver como foi a adoção da computação e da
programação na década de 60. Diversas pessoas eram contratadas apenas
para fazerem cálculos e é impressionante como algumas se dedicaram a serem
pioneiras em programação em uma época em que se tinha que aprender direto
dos manuais.

WEB

Cursos em Vídeo
O canal no youtube “Cursos em Vídeo” traz mais de quinze cursos, muitos deles
de programação, produzidos pelo professor Gustavo Guanabara. Os cursos são
gratuitos e com uma boa didática.
Para acessar, use seu leitor de QR Code.

WEB

Prof. Isidro
O Prof. Isidro tem um canal bem claro e didático sobre programação, com alguns
conceitos iniciais e fundamentais de programação em geral. Também dá dicas
de programação em Java e programação de games.
Para acessar, use seu leitor de QR Code.

WEB

Carol Soares
Muitos canais de conhecimento na área de desenvolvimento foram compilados
nessa lista da Carol Soares e é atualizada a partir de contribuições da comuni-
dade. Tem muito conteúdo gratuito e de qualidade.
Para acessar, use seu leitor de QR Code.

158
HABERKORN, E. M. Computador e Processamento de Dados. São Paulo: Atlas, 1977.

IRVINE, K. R. Assembly language for Intel-based computers. 4. ed. New Jersey: Prentice Hall, 2003

MEIRELLES, F. de S. Informática: Novas aplicações com microcomputadores. São Paulo: McGraw-Hill, 1988.

MONTEIRO, M. A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001.

NORTON, P. Introdução àInformática. São Paulo: Makron Books, 1996.

SCOTT, M. L. Programming Language Pragmatics. 3. ed. Morgan Kaufmann, 2009.

SEBESTA, R. W. Concepts of Programming Languages. 9. ed. Addison Wesley, 2010.

VELLOSO, F. de C. Informática: Conceitos Básicos. Rio de Janeiro: Editora Campus, 1994.

159
4. C.

5. B.

6. C.

160
161
162
Me. Andre Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos

Criação e Execução
de Programas

PLANO DE ESTUDOS

Processo de Compilação Máquina Virtual

Como Escrever Códigos Compiladores e Programação para Web


Interpretadores

OBJETIVOS DE APRENDIZAGEM

• Entender o que é necessário para escrever programas • Estudar o uso de máquinas virtuais para execução de
de computador. programas.
• Analisar o processo de transformar o programa-fonte em • Apresentar a forma de programação para web e a execu-
programa executável. ção dos programas.
• Diferenciar compiladores e interpretadores de código.
Como Escrever
Códigos

Certa vez, alguém disse que se você usa um com-


putador apenas com os programas e funções que
alguém fez, você usa o computador de uma forma
muito parecida com a forma que usa um forno de
micro-ondas. Como assim? Você fica limitado a
utilizar apenas funções que alguém definiu para
você utilizar e da forma como esse alguém achou
melhor. Quer dizer que o seu computador só pres-
ta se você mesmo programá-lo? De jeito nenhum!
O computador é uma máquina cada vez mais
acessível e multitarefas, que permite que qualquer
um faça muitas atividades diferentes e otimize os
seus trabalhos; porém, se você sabe programar,
você mesmo pode dizer ao computador o que ele
deve fazer e adaptá-lo às suas necessidades (em
vez de ter que se adaptar ao computador).

164 Criação e Execução de Programas


Nesta unidade, a gente vai ver um pouco linhas, para identificar blocos de códigos.
sobre como fazer para criar programas de com- O editor de programação ajuda a escrever
putador (o que engloba programas em geral, códigos dessa forma.
também para celulares, tablets etc.). Você pode • Autocompletar: vários editores possuem
até estar se perguntando se você se tornará um recursos de autocompletar o código, com-
programador apenas com esta unidade. Res- pletando nomes de funções, variáveis, ele-
pondemos que não, afinal nem é o objetivo da mentos de sintaxe etc. Ajuda muito a lem-
disciplina. Contudo, você estará mais apto a brar a forma correta de escrever.
criar programas para resolver problemas do • Numeração de linhas: ao editar o código,
seu cotidiano. Vamos lá? a numeração das linhas ajuda, principal-
mente, na hora de corrigir erros.
O Que eu Preciso
Para Escrever Códigos? Diversos outros recursos podem estar embutidos
em um editor de código, como a própria chamada
Vamos iniciar no mundo da programação e “escre- ao compilador, por exemplo.
ver códigos”, que se transformarão em programas Sabendo, então, escrever códigos em uma de-
executáveis em um computador. Basicamente, terminada linguagem, precisaremos de um com-
você vai escrever um programa em uma deter- pilador ou interpretador para essa linguagem.
minada linguagem de programação utilizando Como obtê-lo?
um editor de códigos. Cada linguagem possui o seu kit de desenvol-
Como o código-fonte de um programa é, na vimento, com um compilador ou interpretador,
verdade, um arquivo de texto simples, similar aos debugger (também conhecido como “depurador”,
arquivos .txt, você pode escrever programas até uma ferramenta que aponta seus erros e ajuda na
mesmo no Bloco de Notas, mas não em um edi- programação) e diversas ferramentas que podem
tor de textos formatados (ou “textos ricos”) como auxiliar no desenvolvimento. Você consegue o kit
Word ou LibreOffice. De preferência, utilize um de desenvolvimento com quem mantém a lingua-
editor específico para programação, porque pos- gem, o que geralmente é simples de fazer on-line.
suem diversas vantagens em relação ao Bloco de
notas como: De Algoritmos a Programas
• Syntax highlighting (destaque de sinta-
xe): o editor colore o código de uma for- Neste momento do estudo, você já sabe que algo-
ma específica, diferenciando os elementos ritmos podem ser descritos como uma sequência
especiais da linguagem de programação de tarefas bem definidas, finitas e não ambíguas.
escolhida. Agora, vamos aprender a como passar isso para
• Autoindentação: o código-fonte o computador.
geralmente tem sua indentação própria, Primeiro, escolhemos uma linguagem de pro-
ou seja, um espaço dado à esquerda nas gramação. Não existe um consenso sobre qual

UNIDADE 7 165
linguagem é a melhor para começar. Alguns su- Você deu uma boa analisada no programa (Figura
gerem iniciar com uma pseudolinguagem. Alguns 1)? Entendeu o que o fluxograma apresenta? Con-
iniciam com a linguagem C, que é bem antiga, fesso que não é a forma mais bonita de fazer um
mas muito utilizada e serve de base para várias programa de soma ou subtração (principalmente
outras linguagens. Outros sugerem iniciar com o teste), mas vai servir bem para nosso exemplo.
uma linguagem de scripts, como Python ou, até A partir de um fluxograma, a gente consegue
mesmo, JavaScript. estabelecer correlações diretas com o código. Passo
Fique tranquilo, eu vou facilitar a sua vida e tirar a passo, o programa faz o seguinte: inicia, recebe
de você o fardo da decisão. Vou escolher a lingua- dois números digitados pelo usuário e pergunta se
gem para iniciarmos e vamos ver como criar um ele quer realizar uma soma. Se a resposta for “sim”,
programa simples na linguagem C. executa a soma e salva o resultado na variável “S”. Se
Primeiro, vamos definir o nosso programa. Para for “não”, executa a subtração e salva o resultado na
começar bem simples, vamos escrever um progra- variável “S”. Por fim, exibe o valor de “S” e termina.
ma que pode somar ou subtrair dois números. Sim,
com um simples programa, vamos fazer o mesmo
que o primeiro projeto de computador fazia.
Escrevendo o passo a passo de nosso programa Tenha sua dose extra de
conhecimento assistindo ao
em um fluxograma, ele fica assim: vídeo. Para acessar, use seu
Início leitor de QR Code.

N1, N2
Vamos passar isso para código, adicionando umas
entrelinhas para o programa ficar mais agradável.
FALSO Executar VERDADEIRO Primeiro, iniciamos o nosso código em C. Sem
soma?
aprofundar muito na linguagem, você só precisa
saber que o código inicia com a inclusão de uma bi-
blioteca (stdio.h, no caso) e abrindo a função “main”,
S = N1 - N2 S = N1 + N2 por onde o programa começa sua execução:

Fim

Figura 1 - Fluxograma de um programa que soma ou subtrai Figura 2 - Trecho inicial de código em linguagem C
dois números Fonte: os autores.
Fonte: os autores.

166 Criação e Execução de Programas


Depois, precisamos declarar as variáveis que vamos
usar, ou seja, identificadores especiais que receberão
valores que vamos manipular. Em nosso código, Na linguagem C, um valor que representa um
precisamos de “n1” e “n2”, que serão os números a caractere é escrito entre aspas simples, como,
serem somados, também precisaremos de “s”, que por exemplo, ‘a’. Os valores de strings, ou seja,
receberá o resultado da soma. Como faremos uma de cadeias de caracteres, são escritos entre aspas
pergunta ao usuário se ele deseja efetuar uma soma, duplas, como, por exemplo, “Isto é um texto”.
coloquei mais uma variável, chamada “soma”, para Nos comandos “printf” e “scanf” são passadas
receber essa resposta. A variável “soma” também uti- strings como parâmetro e a letra “f” no nome
lizará números inteiros, apenas para facilitar nosso do comando significa “formatada”, porque são
programa neste momento. comandos que manipulam strings formatadas.
Neste formato, temos marcadores que podem
receber tipos de dados, como “%d” que apare-
ce no código, representando números inteiros.

Figura 3 - Declaração das variáveis


Fonte: os autores.
Agora, temos os dois números digitados pelo
Feito isso, pediremos para o usuário digitar dois usuário. Precisamos, então, descobrir qual é a ope-
números. O ideal é escrever uma mensagem ao ração que o usuário quer efetuar: soma ou subtra-
usuário pedindo isso, se não, o programa ficará ção. Como estudamos neste tópico, foi declarada
parado esperando o usuário digitar algo que ele uma variável “soma” para receber um número que
nem sabe que deve digitar. O código fica assim: representará a operação. Podemos usar qualquer
número, mas vamos convencionar 1 para soma e
2 para subtração.

Figura 4 - Interação com o usuário


Fonte: os autores.

Onde as linhas com o comando “printf ” impri-


Figura 5 - Interação com os usuários para a escolha da
mem uma mensagem na tela e as linhas com operação
“scanf ” recebem um valor digitado pelo usuário. Fonte: os autores.

UNIDADE 7 167
Digitados os dados, resta agora O comando “return 0” serve para retornar ao sistema uma infor-
ao programa efetuar a operação mação de que o programa terminou sem erros.
e exibir o resultado. Chegamos Bom, agora que terminamos o nosso código, nada melhor
ao ponto do fluxograma em que do que apresentar o código completo todo junto. Se você quiser
temos uma tomada de decisão: (nós recomendamos), você pode copiar esse código, compilar e
“Executar a soma?”. Não precisa- executar para ter a sensação do funcionamento. por exemplo.
mos fazer duas perguntas. Como
nosso sistema é simples, podemos
considerar que se não for executar
a soma, sempre vai cair para exe-
cutar uma subtração.

Figura 6 - Processamento da operação


de soma ou subtração, de acordo com
a escolha
Fonte: os autores. Figura 8 - Programa completo para efetuar soma ou subtração
Fonte: os autores.

Por fim, nossa operação já foi rea-


lizada e o resultado salvo em “s”.
Basta exibir na tela e encerrar o
programa. Você pode baixar editores e compiladores para a linguagem C
gratuitamente ou, ainda, mesmo que programas em C sejam com-
pilados, você consegue encontrar interpretadores de C on-line,
como o Repl.it.
Figura 7 - Trecho final do programa
Disponível em: https://repl.it/languages/c.
com exibição do resultado na tela
Fonte: os autores.

168 Criação e Execução de Programas


Processo
de Compilação

Assim como a linguagem que usamos para nos co-


municar, as linguagens de programação possuem
símbolos, palavras e regras que devem ser seguidas
para que a “comunicação” seja realizada.
Segundo Meirelles (1994), é comum confundir
a linguagem com o que é usado para interpretar
a linguagem, ou seja, a ideia de um tradutor que
transforma o código escrito em uma linguagem em
um programa executável acaba sendo embutida no
próprio senso comum da linguagem.
Acredito que, em grande parte, essa noção ocor-
ra devido ao fato de que certamente será utiliza-
do um programa para transformar o código em
executável, sendo comum dizer que “vou usar a
linguagem C para criar um programa executável”.

UNIDADE 7 169
Esse processo de transformação do código em um programa exe-
cutável pode ser feito via compiladores ou interpretadores, que
possuem finalidades similares, mas desempenham processos dife-
rentes (MEIRELLES, 1994).
Adiante, trataremos com mais detalhes a diferença entre compila-
dores e interpretadores, mas agora vamos tratar sobre como funciona
o processo de compilação de um programa.
Quando um programador escreve o código-fonte de um pro-
grama, sua tarefa é a de gerar o arquivo com a programação, com os
comandos. Todo o resto do processo fica por conta do compilador.
Depois que o programador finaliza a escrita do código e o passa
para o compilador gerar o executável, o código passa por várias etapas
Processo de compilação antes de chegar ao resultado final. Primeiro, passa por um processo
de análises, tentando encontrar erros no código, então, gera um pro-
grama intermediário, que será otimizado antes de virar um programa
executável. O processo está ilustrado na figura a seguir.

Programa
Analisador Analisador Analisador
Fonte
Léxico Sintático Semântico
(txt)

Programa Código Otimizador Código


objeto objeto de código Intermediário

Figura 9 - Processo de compilação de um programa


Fonte: Noel (2019, p. 166).

170 Criação e Execução de Programas


A primeira etapa do processo é a passagem pelo semânticos são mais difíceis de serem identificados,
analisador léxico, que procura erros na escrita porque eles são erros na lógica do programa que
de cada elemento. Segundo Sebesta (2000), o có- podem acontecer em fase de projeto ou execução
digo é separado em tokens, que são os elementos da programação. O que o analisador semântico
que compõe o código analisados individualmente. faz, efetivamente, é verificar inconsistências em
Também são chamados, em outras literaturas, de declaração ou uso de variáveis e algumas outras
lexemas. Esses tokens ou lexemas consistem em verificações, tentando identificar se há sentido no
palavras reservadas da linguagem, delimitadores, que foi escrito.
identificadores, operadores, entre outros. Caso al- Após as três fases de análise, um código interme-
gum elemento não esteja de acordo com as regras diário é gerado, traduzindo comandos da linguagem
de escrita, o processo para e um erro é exibido para em comandos que o computador vai entender, ou
que o código seja corrigido. seja, instruções conhecidas pela arquitetura utilizada.
Não tendo erros léxicos, o código passa para o Então, o compilador executa uma otimização de
analisador sintático, que verifica a gramática da código, buscando fazer o mesmo que foi escrito,
linguagem, ou seja, as regras que definem como os mas de forma mais rápida e com menos instruções.
comandos são escritos ou combinados. Nessa fase Para isso, o código que foi escrito pode ser trocado
de análise, os tokens que foram verificados antes por um outro código otimizado, desde que execute
são organizados em forma de árvore, levando-se em exatamente as mesmas transformações na entrada,
conta regras de precedência (como aprendemos em produzindo a mesma saída.
expressões aritméticas na escola). O parser (ou “ana- Ao terminar a otimização, temos, agora, um
lisador”) faz uma varredura na árvore verificando se código objeto, que é praticamente um programa
está de acordo com as regras de sintaxe da linguagem. final, mas ele ainda passa por uma última etapa,
Se houver erro sintático, o processo para e é exibido na qual o código é combinado com as bibliotecas
um erro para que o código seja corrigido. e demais componentes que utiliza, para final-
Finalizada a análise sintática, o código passa mente gerar o programa objeto, que é o famoso
para um analisador semântico. No entanto, erros executável, que pode ser utilizado ou distribuído.

UNIDADE 7 171
Compiladores
e Interpretadores

Agora que já sabemos como funciona o processo


de compilação, vamos ver diferenças entre compi-
ladores e interpretadores. Em linhas gerais, ambos
precisam fazer com que os programas escritos em
uma linguagem sejam executados em um com-
putador, sendo que cada um faz isso de formas
diferentes.
Um compilador recebe o código-fonte, passa
pelas etapas que vimos anteriormente e gera um
código binário executável, que é o programa fi-
nal. Esse programa é quem será executado toda
vez em que for necessário, não precisando mais
do código-fonte. O código ainda é importante,
porque qualquer alteração deve ser feita nele e um
novo processo de compilação gera um programa
atualizado.
O interpretador recebe o código-fonte, executa
as etapas de análise e otimização como os com-
piladores, mas não gera um arquivo executável
permanente. Toda vez que um programa precisa
ser executado, isso é feito a partir do código-fonte,

172 Criação e Execução de Programas


que é interpretado sempre antes de executar. A está com o código-fonte disponível. Assim, se
execução é realizada e o código-fonte permanece há um erro basta ir ao código e consertá-lo, en-
para a próxima execução. quanto um executável compilado é um programa
binário (MEIRELLES, 1994). Outra vantagem é
Vantagens e Desvantagens a de possuir o código-fonte sempre. No caso de
executáveis binários, as pessoas costumam não
O processo de compilação ou interpretação, na possuir o código-fonte. Dentre as desvantagens,
prática, depende mais da linguagem de programa- destacam-se o fato de que o programa precisa
ção, pois temos o que chamamos de linguagens ser interpretado a partir da fonte toda vez que
compiladas e linguagens interpretadas, que precisa ser executado, o que geralmente torna o
são classificadas de acordo com o método que processamento mais lento. Uma outra desvanta-
utilizam para gerar os programas. gem, dependendo do enfoque de quem criou o
Em linhas gerais, os processos são similares, programa, é que o código-fonte é distribuído com


como vemos no trecho a seguir. o programa, dado que nem todo programador
O processo de interpretação é similar, com a quer vender seu código-fonte.
diferença que ele não gera um arquivo exe- Segundo Farias ([2019], on-line)1, os interpre-
cutável final, o código-fonte é interpretado tadores tendem a ser menores que os compilado-
toda vez que o sistema precisa ser executado. res e isso facilita a implementação de estruturas
Pode parecer estranho e não-usual, mas é de dados mais complexas em alto nível. Portanto,
o processo utilizado por linguagens como os prós e contras devem ser pesados na hora de
Python, JavaScript, PHP, Lua e Ruby (NOEL, adotar uma linguagem de programação.
2019, p. 166).
Interpretadores Interativos
Portanto, há linguagens amplamente utilizadas
no mercado atual que utilizam um processo Uma outra vantagem de linguagens interpretadas
ou outro, sendo que são formas diferentes de é a possibilidade de utilizar interpretadores em
chegar ao objetivo, que podem se adequar a modo interativo, que permitem que comandos
casos específicos. possam ser executados individualmente, sem a
Existem vantagens e desvantagens no uso de necessidade de criar um programa completo, e
interpretadores. Dentre as vantagens está o fato com respostas imediatas. É uma ótima estratégia
de facilitar o desenvolvimento, pois sempre se para testes ou aprendizado.

UNIDADE 7 173
REPL é a sigla utilizada para denominar interpretadores interativos. A sigla significa “Read-eval-print
loop” (Ler, avaliar e imprimir em looping). Há um site chamado “repl.it” (cujo endereço online é jus-
tamente esse) no qual você pode escrever programas ou testar comandos de forma interativa em
diversas linguagens de programação diferentes. É uma ótima ferramenta para testes e também tem
exemplos para ajudar a entender.
O site possui suporte às principais linguagens de programação, inclusive para as linguagens tradicio-
nalmente compiladas, como C e C++, por exemplo. Você pode acessar a lista de linguagens disponíveis
no link: https://repl.it/languages.

Diversas linguagens possuem esse tipo de interpretador, mas podemos adotar como exemplo a lin-
guagem Python. Ao instalar o interpretador Python, que é necessário para executar programas nessa
linguagem, o interpretador roda em modo interativo se for executado diretamente.
Na documentação da linguagem consta que o nosso primeiro uso do interpretador Python é uti-
lizá-lo como uma calculadora. Você pode digitar expressões matemáticas e já obter a resposta, já que
a sintaxe da linguagem segue o que a gente aprende de expressões na escola.

Figura 10 - Interpretador Python em funcionamento


Fonte: os autores.

174 Criação e Execução de Programas


Em um interpretador interativo, você pode escrever um programa completo também, declarando
variáveis, funções etc. Ele vai recebendo os comandos de forma sequencial e você pode ter a resposta
imediata a alguns comandos. Na Figura 11, podemos ver a criação de uma função de cálculo de fatorial
em um interpretador interativo.

Figura 11 - Função fatorial em interpretador interativo


Fonte: os autores.

UNIDADE 7 175
Máquina
Virtual

Vimos que o código-fonte precisa percorrer um


caminho até se tornar um programa executável e
que esse caminho passa por um processador ou
um compilador. A pergunta que colocamos neste
tópico é: como funciona quando um programa é
criado especificamente para um sistema opera-
cional e arquitetura (32 ou 64 bits, por exemplo)?
Para responder a esta pergunta, analisaremos
um programa escrito em linguagem C e compila-
do. A Figura 12 ilustra o processo desde a escrita
até a execução. Um programador, como já vimos,
escreve o código-fonte (a folha, à esquerda) e o
repassa para o compilador (simbolizado pela en-
grenagem e diferente para cada sistema). Com
isso, o compilador cria um programa executável
com código binário, cujas instruções são reconhe-
cidas pela arquitetura utilizada pelo compilador
(representado pelas imagens à direita).

176 Criação e Execução de Programas


Compilador para
Windows

#include <stdio.h>
Compilador para
Linux
int fibonacci(int n) {
if (n < 2) return 1;
return fibonacci(n-1)+
fibonacci(n-2);
}

int main() {
int i;
for (i = 1; i < 10; i++) {
printf(”%i: %i\n”, i,
fibonacci(i));
}

return 0;
}

Compilador para
Mac

Figura 12 - Processo de compilação dependente da plataforma utilizada


Fonte: os autores.

Portanto, o programa final é dependente de uma plataforma e é preciso compilar o programa e gerar
um executável específico para cada plataforma que se deseja utilizar. É por esse motivo que você vai
na internet baixar um programa e a página de downloads te pergunta qual é o seu sistema operacional
e se é 64 bits ou não.
Esse quadro é comum na maioria das linguagens de programação, porém algumas delas utilizam
um artifício chamado máquina virtual, na qual é criada uma camada intermediária que funciona
como se fosse um computador com uma arquitetura única. Por isso, o código-fonte pode ser compi-
lado apenas uma vez e o programa gerado funciona em qualquer plataforma que tenha suporte a essa
máquina virtual.
“Espere aí!”, você pode estar pensando. “Foi muita informação para assimilar em apenas um pará-
grafo!”. Sim, foi! Mas vamos com calma, agora, ver como funciona.
Vou utilizar como exemplo a linguagem Java, que ficou famosa por ser multiplataforma utilizando
máquina virtual. A Figura 13 ilustra o processo da escrita até a execução de um programa feito em Java.
Um código escrito em Java (a folha, à esquerda) precisa ser compilado para se tornar um programa (o
compilador é representado pela engrenagem), mas ele não gera um arquivo executável para a plata-
forma, em vez disso, é gerado um bytecode (apresentado na imagem como um arquivo binário), que
é um programa objeto que tem instruções para a máquina virtual. Esse bytecode pode ser executado
em qualquer sistema que tenha a máquina virtual Java instalada (representada pela xícara de café),
sem a necessidade de recompilar para cada sistema.

UNIDADE 7 177
JVM

CÓDIGO-FONTE JAVAC BYTECODE


JAVA (COMPILADOR)
01001001 JVM
10110100
10010010
00011001
11010110
01101001
00111001
11101010
JVM

Figura 13 - Processo de compilação e execução em máquina virtual de um programa escrito em Java


Fonte: os autores.

Portanto, o código-fonte é compilado e gera um arquivo binário (bytecode), que possui instruções que
serão convertidas pela máquina virtual para a arquitetura de onde a máquina virtual está sendo executa-
da. Por isso, ela precisa ter uma versão dela disponível para cada arquitetura, mas os programas criados
em Java terão apenas um bytecode que pode ser executado em qualquer máquina virtual Java (JVM).

Você já parou para pensar por que há uma xícara de café perto do relógio do Windows que fica
pedindo para você atualizar o Java? Se o seu computador tem essa xícara, é um sinal de que você
tem a máquina virtual Java instalada para executar algum programa que precisou dela e o café é o
símbolo da linguagem que recebeu esse nome graças ao famoso café da ilha de Java.

Portanto, o funcionamento da máquina virtual para programação se assemelha a uma combinação


de compilação e interpretação, na qual o código é compilado para um bytecode, que é interpretado
para a máquina virtual.

178 Criação e Execução de Programas


Programação
para Web

Agora que você já está craque em programação


compilada, interpretada ou utilizando máquina
virtual, podemos abordar um outro tipo de pro-
gramação que já é muito comum em nosso dia a
dia: a programação web.
Quando falamos em programação web, pode-
mos entender como programas que você executa
a partir de um navegador web. Sim, esses mesmos
que você está acostumado. São sites e programas
possuindo as mesmas características de progra-
mação que vimos até aqui.
Bom, para começar a entender melhor, não é
qualquer site que é um programa web. Formal-
mente, um site é um documento HTML. E se você
já ouviu falar em HTML e CSS saiba que são duas
linguagens, mas não são linguagens de programa-
ção. A primeira é uma linguagem de marcação,
basicamente para criar documentos formatados
(e com hiperlinks), e a segunda é uma linguagem
para definição de estilos (a formatação em si).

UNIDADE 7 179
Para entender a programação web, precisamos entender um pouco sobre a arquitetura cliente/
servidor. Um sistema web possui o lado do cliente – ou seja, o usuário final que está acessando o na-
vegador web – e o lado do servidor – que fica respondendo a requisições via protocolos utilizados na
web. Quanto ao servidor, é necessário saber apenas seu endereço URL ou o endereço IP.
Em relação à programação, chamamos de programação front-end aquela programação que roda no
lado do cliente, ou seja, direto no navegador. É uma programação focada, principalmente, na interação
do usuário, interfaces e usabilidade. Temos como linguagem de programação front-end a linguagem
JavaScript e um conjunto de frameworks JavaScript.
Já no servidor, é executada o que chamamos de programação back-end. O código escrito fica
armazenado no servidor e é executado de acordo com as requisições que o servidor recebe. É comum
ser uma programação com processamento mais pesado e acesso a bancos de dados, sendo que apenas
o resultado do processamento é encaminhado para o usuário, em forma de documento HTML, geral-
mente. A Figura 14 ilustra o processo. Como exemplo de linguagens de programação back-end, temos
PHP, ASP, Java, C# e Node.js, que é uma plataforma para executar JavaScript também no back-end.

CLIENTE SERVIDOR

NAVEGADOR PHP
HTML ASP
CSS C#
JAVA BANCO
JAVASCRIPT
PYTHON DE DADOS

Figura 14 - Representação da arquitetura cliente/servidor na programação web


Fonte: os autores.
A programação web, tanto front-end quanto back-end, utiliza linguagens de programação muitas vezes
chamadas de linguagens de scripts, pois são linguagens que permitem a chamada de pequenos trechos
de códigos que funcionam sem a necessidade de escrita de um programa completo.
Se você tiver interesse em aprender a programação web, o caminho é fácil. Primeiro, porque tem
muito material gratuito disponível on-line. Segundo, porque você só precisa de duas coisas para pro-
gramar para web: um editor (que você já tem por causa das linguagens anteriores) e um navegador
web (que todo computador ou smartphone tem). Inclusive, há um editor de programação embutido
dentro do Firefox para que você não precise de mais nada.

180 Criação e Execução de Programas


A rota mais simples: aprenda HTML, depois CSS e, então, JavaScript, com isso você fecha o
front-end. Depois passe para uma linguagem de back-end, como PHP, e aprenda a usar banco de
dados. Depois disso é só diversão!
Você já percebeu que, nesta unidade, eu não ensinei programação. Na verdade, você já sabia disso
porque eu disse antes que este não é nosso objetivo, mas com esta unidade, você tem um bom conteúdo
para entender o que é a programação e tipos diferentes e agora já pode dar os primeiros passos com
confiança.
Aprender programação é algo que logo fará parte do dia a dia de escolas de ensino fundamental e
médio, porque ela está fazendo parte de tudo. Então aproveite o momento para aprender também e
utilizar a programação para automatizar tarefas que você não quer fazer.
Espero ter despertado pelo menos sua curiosidade. Nas próximas unidades, veremos ferramentas
para utilizar programação voltada para matemática em geral e cálculo numérico.
Agora é hora de fazer uma pausa, tomar um café e voltar com tudo para aproveitar ao máximo o
conteúdo.

UNIDADE 7 181
Você pode utilizar seu diário de bordo para a resolução.

1. A programação envolve o conhecimento de uma linguagem de programação e


também da lógica envolvida para programar.
A respeito da programação, assinale a alternativa correta.
a) Algoritmo é um outro nome para Programa de Computador.
b) Para programar, você precisa de um editor de textos, como Bloco de Notas
ou Word.
c) Fluxograma é um diagrama para algoritmos escritos na linguagem C.
d) O código-fonte de um programa é um arquivo de texto simples.
e) Podemos tomar uma decisão, na linguagem C, a partir do comando de com-
paração “return”.

182
2. A programação web está muito presente em nosso dia a dia e costumamos usar
diversos programas web em nossos navegadores.
Considerando o texto, assinale verdadeiro (V) ou falso (F):
( ) A programação front-end é executada no lado do cliente, diretamente no
navegador.
( ) Os servidores são as pessoas envolvidas no processo de desenvolvimento de
sistemas web.
( ) A programação back-end processa informações no servidor e envia ao usuário
apenas o que é necessário para ele.

Assinale a alternativa correta:


a) V-V-V.
b) V-F-F.
c) F-F-F.
d) F-V-V.
e) V-F-V.

3. Os compiladores e interpretadores possuem finalidades semelhantes, mas


atuam de formas diferentes. Aponte uma vantagem e uma desvantagem da
compilação em relação à interpretação de código.

183
LIVRO

Introdução à linguagem Python


Autor: José Augusto N. G. Manzano
Editora: Novatec
Sinopse: esse livro apresenta a linguagem Python 3 de forma básica e introdutó-
ria para leitores e estudantes de programação que não possuem conhecimentos
prévios da linguagem.
Neste texto, encontra-se a apresentação de detalhes e informações sobre:
características básicas da linguagem, tipos de dados built-in; variáveis; cons-
tantes internas; operadores aritméticos; expressões aritméticas; operações de
entrada e saída; condições; decisões; operadores relacionais e lógicos; desvios
condicionais; ações de divisibilidade; expressões condicionais; laços; sub-roti-
nas como funções e procedimentos; passagem de parâmetro; funções lambda;
programação com módulos; tratamento de dados; estruturas de dados; orien-
tação a objetos; manipulação de arquivos externos; constantes para localização
geográfica; conversões entre bases numéricas; simulação para definição de
constantes; uso do modo terminal ANSI; plataforma cruzada e aplicação com
geometria de tartaruga (turtle graphics).

LIVRO

Aprenda a programar com Minecraft


Autor: Craig Richardson
Editora: Novatec
Sinopse: você já derrotou creepers, fez viagens a cavernas profundas e, talvez,
até tenha ido ao The End e voltado! Mas, por acaso, você já transformou uma
espada numa varinha mágica? Construiu um palácio num piscar de olhos? Ou
criou a sua própria pista de dança com luzes piscando? Em “Aprenda a programar
com Minecraft”, você fará tudo isso e muito mais com o poder do Python – uma
linguagem disponibilizada gratuitamente, usada por milhões de programadores
profissionais e iniciantes!
Comentário: esse livro é interessante para aprender programação com uma
abordagem um pouco mais divertida e aplicando em um jogo muito conhecido.

184
FILME

Os Estagiários
Ano: 2013
Sinopse: Billy (Vince Vaughn) e Nick (Owen Wilson) são grandes amigos e traba-
lham juntos como vendedores de relógios. Eles são pegos de surpresa quando
seu chefe (John Goodman) fecha a empresa, por acreditar que o negócio esteja
ultrapassado. Com problemas financeiros, eles conseguem a inscrição em uma
seleção de estágio no Google. Mesmo sem terem a garantia que serão contra-
tados, eles partem para a sede da empresa e lá precisam lidar com a diferença
de idade entre eles e os demais competidores.
Comentário: um filme bom para mostrar um pouco do funcionamento de em-
presas de tecnologia, em especial a Google, e o impacto que pessoas que não
eram da área tiveram ao tentar se adaptar. Apesar de ser uma comédia e ficção,
traz muitos termos e conceitos reais de programação.

WEB

Vida de Programador
Um site que aborda programação com bom humor utilizando histórias reais e
tirinhas curtas. Provavelmente você não vai aprender muito sobre programação
ali, mas dá para perceber como é o dia a dia de quem trabalha desenvolvendo
sistemas.
Para acessar, use seu leitor de QR Code.

185
MEIRELLES, F. de S. Informática: novas aplicações com microcomputadores. São Paulo: Makron Books, 1994.

NOEL, A. A. Fundamentos e arquitetura de computadores. Maringá: Unicesumar, 2019.

SEBESTA, R. W. Conceitos de Linguagens de Programação. Porto Alegre: Bookman, 2000.

REFERÊNCIA ON-LINE
1
Em: http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/index.
html. Acesso em: 13 set. 2019.

186
1. D.

2. E.

3. Uma vantagem da compilação é que ela cria um arquivo executável permanente, que será utilizado sempre
que se precisar do programa, tornando o processamento mais rápido. Uma desvantagem é a necessida-
de de voltar ao código-fonte para realizar alguma alteração e passar novamente por todo o processo de
compilação.

187
188
Me. Andre Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos

Programas e
Bibliotecas Matemáticos

PLANO DE ESTUDOS

Softwares Matemáticos
Bibliotecas de Programação
Livres

Planilhas de Cálculos Programação Matemática Softwares Matemáticos


Online

OBJETIVOS DE APRENDIZAGEM

• Analisar a utilização de planilhas de cálculos para a reso- • Descrever softwares livres similares ao Matlab e de grande
lução de problemas. desempenho.
• Conhecer o conceito de bibliotecas e como a programação • Aprender como utilizar ferramentas online que auxiliam
modular pode auxiliar. em cálculos matemáticos.
• Apresentar o software Matlab e as possibilidades de pro-
gramação e estatística.
Planilhas
de Cálculos

Olá, caro(a) amigo(a)! Iniciamos uma etapa nova


em nossa jornada, em que iremos passear juntos
por diferentes softwares voltados ao lado matemá-
tico da vida, alguns deles conhecidos e outros nem
tanto. Afinal, o que seria de nós sem a matemática?
Um dos programas mais comuns de encontrar
em diversos computadores é um gerenciador de
planilhas de cálculos, mas esses gerenciadores,
muitas vezes, são subestimados e subaproveitados.
Em pacotes de programas chamados de “suítes de
escritório” (office suite, em inglês), costumamos
encontrar esses programas junto com editores
de texto e editores de apresentações (slides). À
primeira vista, trata-se de uma grande tabela em
que você pode colocar dados. Dados numéricos
geralmente são usados. Podemos cadastrar quan-
tidades e valores. E daí? O que há de interessante?

190 Programas e Bibliotecas Matemáticos


Os gerenciadores de planilha são programas com uma capacidade muito grande de lidar com dados
e possuem diversas funções para manipular os dados, como as funções matemáticas, lógicas, funções
para dados de texto entre outras. Possuem um poder muito próximo ao de linguagens de programação
e existem empresas que gerenciam grande parte de seu trabalho e movimentações financeiras a partir
de planilhas de cálculos.
Veremos um pouco sobre como utilizar o poderio desses programas, assim como as principais
opções de programas disponíveis no mercado, a saber: Microsoft Excel e Libre Office Calc.

Microsoft Excel

Comumente chamado apenas de Excel, ele compõe o pacote Microsoft Office (Figura 1), sendo o
software gerenciador de planilhas mais conhecido no mundo. É um software proprietário, sendo seu
uso restrito ao pagamento da licença do pacote Office, que atualmente é um pagamento mensal.

Figura 1 - Captura de tela do Microsoft Excel


Fonte: os autores.

Grosso modo, pode-se dizer que se trata de uma versão digital de uma grande folha contábil, na qual uma série
de cálculos sequencias e interconectados podem ser mostrados. Qualquer modificação dos dados de entrada
gera automaticamente uma atualização dos valores calculados a partir deste (CHAPRA; CANALE, 2011).
Entre os recursos numéricos internos estão aqueles que permitem a resolução de equações, traçado
de curvas e otimização, além de um suplemento de grande potencialidade, a VBA – uma linguagem de
macros que pode ser utilizada para a implementação de cálculos numéricos. Muitos usuários aderem ao
Excel devido às suas várias ferramentas de visualização, como gráficos e desenhos de superfícies tridi-
mensionais – ferramentas de grande utilidade para análises na engenharia (CHAPRA; CANALE, 2011).

UNIDADE 8 191
Além de lançar dados nas planilhas, esse software também faz o cálculo automático e conta com um
bloco de notas analítico. Assim, a extração, a soma, o cruzamento e a interpretação de dados se tornam
processos automáticos e muito mais ágeis, economizando um bom tempo de trabalho.
Para melhorar ainda mais a produtividade com o Excel, a ferramenta conta com centenas de fórmulas
prontas. Por exemplo =HOJE() adiciona a data atual na planilha, =SOMA() realiza a adição de uma seleção
de forma automática. Existe fórmula até para testes condicionais (SE) e procuras relacionais (PROCV).
Fonte: Doutores do Excel ([2019], on-line)1.

Em linhas gerais, o Excel facilita a análise de dados devido à facilidade do uso de fórmulas, correlações e
geração de gráficos. A linguagem VBA é exclusiva da Microsoft, sendo que outros programas similares
utilizam outras linguagens ou ainda não dão suporte a macros.

LibreOffice Calc

Uma alternativa em software livre ao Excel é o LibreOffice Calc (Figura 2). Este faz parte da suíte de
escritório LibreOffice, que contém programas equivalentes aos principais programas da suíte da Mi-
crosoft. Além de gratuito, possui a vantagem de ter compatibilidade com o Excel, mantendo as mesmas
fórmulas e gráficos, podendo, inclusive, fazer a conversão entre os formatos.

Figura 2 - Captura de tela do LibreOffice Calc


Fonte: os autores.

192 Programas e Bibliotecas Matemáticos


O formato de arquivos do LibreOffice é o OpenDocument Format, adotado em diversos países como
formato padrão para transferência de documentos.

Google Docs

Ainda há como alternativa o Google Docs (Figura 3), acessível pelo Google Drive – uma suíte de es-
critórios do Google para trabalho em nuvem. Possui também um gerenciador de planilhas de cálculos
(Google Sheets), que tem compatibilidade com Excel e LibreOffice.

Figura 3 - Captura de tela do Google Sheets do Google Docs


Fonte: os autores.

Possui, ainda, algumas limitações de recursos, mas as vantagens o tornam muito atrativo, principalmente
para trabalho em equipe. Para utilizar, basta ter uma conta do Google. Entre as vantagens, podemos listar:
• Alta disponibilidade: uma vez que está hospedado em servidores do Google e acessível a qual-
quer momento.
• Trabalho colaborativo simultâneo: várias pessoas podem acessar e editar o documento ao mesmo
tempo, com um ótimo gerenciamento.
• Portabilidade: pode ser acessado em computadores ou dispositivos móveis.
• Controle de versões: mantém o histórico de alterações e permite recuperar alterações que foram
feitas a qualquer momento.

Em geral, as vantagens em sua utilização compensam em relação ao que esse software ainda não possui.
Entretanto, como o Excel muitas vezes é utilizado para processamentos de cálculos e fórmulas com-
plexas, recomenda-se um teste antes da adoção, para garantir que não lhe falte alguma característica
importante para o seu negócio.

UNIDADE 8 193
Bibliotecas
de Programação

Quando iniciamos esta nova unidade, talvez você


tenha pensado: “Ufa, não vamos falar de progra-
mação aqui”. Não pense assim, programação é algo
muito legal e supimpa… E vamos, sim, falar de
programação! :)
Na programação, uma das primeiras coisas
que podemos fazer é colocar o computador para
realizar operações matemáticas, afinal ele é uma
grande calculadora. Contudo, temos um conjunto
limitado de operações predefinidas, que são as
operações mais utilizadas.
Em geral, as linguagens de programação pos-
suem as quatro operações básicas (soma, subtra-
ção, multiplicação e divisão) e um conjunto restri-
to de outras funções matemáticas já disponíveis.
Por exemplo, a linguagem C possui os seguintes
operadores aritméticos por padrão (considere,
nos exemplos, que A vale 10 e B vale 20):

194 Programas e Bibliotecas Matemáticos


Tabela 1 - Operadores aritméticos da Linguagem C

Operador Descrição Exemplo


+ Soma dois operandos A + B → 30
- Subtrai o segundo elemento A – B → -10
do primeiro
* Multiplica os operandos A * B → 200
/ Divide o numerador pelo B/A→2
denominador
% Operador de módulo, retor- B%A→0
na o resto da divisão inteira
++ Incrementa a variável au- A++ → 11
mentando seu valor em uma
unidade
– Decrementa a variável dimi- A-- → 9
nuindo seu valor em uma
unidade
Fonte: adaptada de TutorialsPoint ([2019], on-line)2.

Existem diversas funções matemáticas que são interessantes de serem utilizadas no cotidiano, princi-
palmente para quem trabalha com matemática ou engenharia.
Como todo bom programador sabe, não vale a pena reinventar a roda, ou seja, não vale a pena eu
ter que gastar tempo desenvolvendo uma função que calcula o seno de um ângulo se o cálculo do seno
é sempre o mesmo e, com certeza, alguém já fez esse trabalho.
Por isso, a maioria das linguagens de programação possui um conjunto de bibliotecas fornecidas para
expandir a capacidade da linguagem com novas funções, além daquelas bibliotecas que você mesmo pode
desenvolver. Essas funções não são incluídas no núcleo da linguagem para que esta não fique grande e pesada
sem necessidade, ou seja, nem todo programa precisa de funções matemáticas, por exemplo.

Bibliotecas, em programação, é um termo usado para arquivos externos (em relação ao seu código-
-fonte) que possuem funções que podem ser executadas pelo seu código. Isto é, você pode ter um
conjunto de funções para qualquer finalidade, que terão entrada e saída bem definidas, e você pode
utilizar qualquer uma dessas funções apenas indicando em seu código que vai usar aquele arquivo
de biblioteca e passando o nome da função com os dados de entrada em algum ponto do código.
A sintaxe para a inclusão da biblioteca pode mudar de acordo com a linguagem, mas toda linguagem
de programação possui uma forma de utilizar arquivos externos, o que ajuda muito no processo de
programação e reuso de código.

UNIDADE 8 195
Sendo assim, a linguagem C, por exemplo, possui a biblioteca math.h, que pode ser incluída no início
do arquivo fonte por meio da linha:
#include <math.h>

Com isso, o seu código-fonte tem à disposição uma série de funções. Algumas delas são descritas a seguir:
Tabela 2 – Relação de funções matemáticas da Linguagem C

Nome Significado Tipo do resultado Tipos dos parâmetros


cos (x) Cosseno de x (x em radianos) double double
sin (x) Seno de x (x em radianos) double double
tan (x) Tangente de x (x em radianos) double double
acos (x) Arco-cosseno de x (arco em radia- double double
nos)
asin (x) Arco-seno de x (arco em radianos) double double
atan (x) Arco-tangente de x (arco em radia- double double
nos)
cosh (x) Cosseno hiperbólico de x (x em double double
radianos)
sinh (x) Seno hiperbólico de x (x em radia- double double
nos)
tanh (x) Tangente hiperbólica de x (x em double double
radianos)
exp (x) e elevado a x (e = 2.7182818...) double double
log (x) Logaritmo de x na base e (logarit- double double
mo neperiano de x)
log10 (x) Logaritmo de x na base 10 double double
ceil (x) Teto de x (menor inteiro > x) double double
floor (x) Piso de x (maior inteiro < x) double double
abs (x) Valor absoluto de x (para inteiros) Int int
fabs (x) Valor absoluto de x (para reais) double double
pow (x, y) x elevado a y double double
sqrt (x) Raiz quadrada de x double double
Fonte: adaptada de Mokarzel (2008).

Dessa forma, as linguagens de programação podem deixar um grande poderio de cálculo e processa-
mento para ser chamado apenas por programas que realmente vão utilizá-lo.
A linguagem Python também é conhecida por ter uma biblioteca matemática muito boa e poder
definir uma boa precisão em cálculos.

196 Programas e Bibliotecas Matemáticos


O módulo math define funções logarítmicas, de exponenciação, trigonométricas, hiperbólicas e
conversões angulares, entre outras. Já o módulo cmath implementa funções similares, porém feitas
para processar números complexos (BORGES, 2010, p. 69).
Podemos ver a biblioteca matemática em funcionamento no Python por meio do exemplo a seguir,
que trabalha com números complexos (BORGES, 2010).

Figura 4 - Exemplo de código em Python para trabalhar com números complexos


Fonte: Borges (2010, p. 68).

Veja a saída produzida na tela por esse código a seguir.

Figura 5 - Saída produzida pelo programa da Figura 4


Fonte: Borges (2010, p. 68).

UNIDADE 8 197
Esse é apenas um “gostinho”
do que pode ser feito. Se você
tiver curiosidade, a linguagem
Python é uma linguagem bem
interessante para se aprender e
que abre grandes possibilidades
para automatizar seus cálcu-
los. Como vimos, a linguagem
Python possui uma biblioteca
matemática bem completa e
utilizada por uma grande co-
munidade, o que a mantém
atualizada e verificada.
Além disso, pelo conheci-
mento introdutório que temos
sobre programação nesta disci-
plina, você tem uma base já para
aprender alguma linguagem es-
pecífica. Python é uma lingua-
gem simples e muito utilizada
no mercado e em aplicações
práticas.
No entanto, qualquer lingua-
gem de programação que você
venha a escolher irá apresentar
um conjunto de funções e/ou
bibliotecas matemáticas. Muito
do que precisamos para nosso
trabalho já foi implementado
por alguém e pode estar dispo-
nível para uso de forma relativa-
mente simples. Então, siga uma
das regras mais importantes da
T.I.: “Não se esqueça de ler o
manual”.

198 Programas e Bibliotecas Matemáticos


Programação
Matemática

Até aqui já estudamos softwares para planilhas de


cálculos, em seguida vimos como trabalhar com
matemática na programação. Não seria ótimo se
tivéssemos uma linguagem de programação espe-
cificamente para programar de uma forma mais
matemática?
Aí é que vem a boa notícia: nós temos, e não
é só uma.
Formalmente, a primeira linguagem de pro-
gramação em alto nível já fazia algo assim. A
linguagem FORTRAN não é uma abreviação de
“Formula Translation” à toa. Contudo, temos op-
ções bem mais modernas e ainda mais voltadas
à matemática e, mais especificamente, ao cálculo
numérico. Estudaremos algumas adiante.

UNIDADE 8 199
MATLAB

Para a engenharia, o MATLAB (nome originado do termo em inglês MATrix LABoratory, pois as
matrizes são o seu elemento mais básico de dados) se consolida cada vez mais como uma importante
linguagem utilizada na computação técnica. De acordo com Gilat e Subramaniam (2008, p. 441), entre as
suas utilidades,“o MATLAB pode ser usado em cálculos matemáticos, modelagem e simulações, análises
de dados e processamento, visualização e traçado de gráficos, e no desenvolvimento de algoritmos”.
No meio acadêmico, o MATLAB também possui vasta aplicação, constituindo cursos introdutórios
e avançados em matemática, ciência e, principalmente, em engenharia. Para as indústrias, este pro-
grama vem sendo utilizado pelos setores de pesquisa e desenvolvimento de novos projetos (GILAT;
SUBRAMANIAM, 2008).
A princípio, pode parecer difícil a utilização do MATLAB, mas podemos começar utilizando ope-
rações básicas, como fazemos em uma calculadora. A linguagem possui um conjunto de operadores
elementares apresentados na Tabela 3.
Tabela 3 - Operações aritméticas fundamentais com escalares

Operação Símbolo Exemplo Operação Símbolo Exemplo


Adição + 5+3 Divisão à direta / 5/3
Subtração - 5-3 Divisão à esquerda \ 5\3=3/5
Multiplicação * 5*3 Exponenciação ^ 5^3 (significa
53=125)
Fonte: adaptada de Gilat e Subramaniam (2008).

Podemos, a partir de seu interpretador, escrever expressões aritméticas e obter a resposta para elas.

>> 7 + 8/2
ans =
11
>> (7+8)/2 + 27^(1/3)
ans =
10.5000

Figura 6 - Exemplos de operações aritméticas em MATLAB


Fonte: Gilat e Subramaniam (2008, p. 443).

Assim como aprendemos em outras linguagens de programação, podemos trabalhar com variáveis
para os valores que utilizamos.
Além dos operadores aritméticos anteriores, existem diversas funções predefinidas na linguagem,
em que a função recebe parâmetros de entrada e retorna o valor calculado. No exemplo a seguir, é
apresentada a função sqrt, que calcula a raiz quadrada de um número.

200 Programas e Bibliotecas Matemáticos


>> sqrt(64) O argumento é um número.
ans =
8
>> sqrt(50 + 14*3) O argumento é uma expressão.
ans =
9.5917
>> sqrt(54 + 9*sqrt(100)) O argumento inclui uma função.
ans =
12
>> (15 + 600/4)/sqrt(121) A função é incluída em uma expressão.
ans =
15

Figura 7 - Função sqrt para cálculo de raiz quadrada


Fonte: Gilat e Subramaniam (2008, p. 444).

A Tabela a seguir apresenta algumas das funções mais comuns do MATLAB.


Tabela 4 - Funções matemáticas elementares
Comando Descrição Exemplo
sqrt(x) Raiz quadrada >>sqrt(81)
Ans=
9
exp(x) Exponencial (ex) >>exp(5)
Ans=
148.4132
abs(x) Valor absoluto >>abs(-24)
Ans=
24
log(x) Logaritmo natural na base e (ln) >>log(1000)
Ans=
6.9078
log10(x) Logaritmo na base 10 >>log10(1000)
Ans=
3.0000
sin(x) Seno de um ângulo x (em radianos) >>sin(pi/6)
Ans=
0.5000
Seno de um ângulo x (em graus)
sind(x) >>sind(30)
Ans=
0.5000
As demais funções trigonométricas são escritas da mesma maneira. As funções trigonométricas inversas
são escritas simplesmente acrescentando “a” na frente dos comandos, como, por exemplo, asin(x).
Fonte: adaptada de Gilat e Subramaniam (2008).

UNIDADE 8 201
A simulação de processos reais dos mais diferen-
tes ramos da engenharia permite aos estudantes
avaliar as possibilidades e, até mesmo, as limi-
tações de uma determinada operação. Graças
aos avanços da programação, softwares como o
MATLAB são uma ferramenta útil para modelar,
simular e otimizar os processos industriais de
maneira teórica, sem perdas reais com testes.
Como um engenheiro em formação, você acre-
dita ser de valia levar até o campo de trabalho
esta ferramenta matemática?

Apesar de ser uma ferramenta muito útil para o


dia a dia, ele é um software proprietário e tem o
seu custo. Em casos assim, a gente acaba avaliando
bem o custo/benefício da aquisição do software.
Daí você pensa: “será que tem alguma alterna-
tiva mais barata?” A seguir, vamos analisar alguns
softwares livres (e gratuitos) para executar o que
você faria com o MATLAB.

202 Programas e Bibliotecas Matemáticos


Softwares
Matemáticos Livres

Pelo título você já percebeu que vamos falar so-


bre software livre. E por que nos importamos se
o software é livre ou não? Usamos software livre
apenas para não pagar pelo programa? Será que
isso não vai afetar a qualidade?
Você já deve ter ouvido alguém falar sobre li-
cenças de software e deve saber que algumas delas
podem custar muito dinheiro. Em muitas áreas,
temos alternativas de qualidade que são distri-
buídas como software livre (e grátis), mas não
significa que não possuem uma licença, apesar
de você não pagar por ela.



Programas distribuídos como software li-
vre ou código aberto não são programas
sem licença, mas possuem uma licença que
garante a qualquer um algumas liberdades,
dentre elas, a de ter acesso ao código-fonte
do programa (NOEL, 2019, p. 168).

Assim, por definição, software livre não, necessa-


riamente, significa que o programa é gratuito, mas
que ele pode ser distribuído livremente (entre as

UNIDADE 8 203
definições), por isso é comum que o software livre seja gratuito mesmo. Como há uma garantia de
acesso ao código-fonte e ainda garantem a liberdade de distribuição, quem desenvolve software livre
não visa ganhar dinheiro com a venda do software, mas com outros modelos de negócio.

GNU Octave

O software GNU Octave é, provavelmente, a melhor alternativa ao MATLAB, pois há grande com-
patibilidade entre as funções e os programas escritos em ambos. Além disso, possui grande apelo em
relação ao software livre, sendo publicado sob a licença GNU GPL.

Figura 8 - Captura de tela do GNU Octave


Fonte: os autores.

Assim como o MATLAB, o GNU Octave é considerado como uma linguagem de programação cien-
tífica de alto nível, feita para trabalhar com cálculo numérico, permitindo a plotagem de gráficos por
meio da programação e possuindo ferramentas para visualização dos gráficos.
Permite resolver problemas numéricos lineares e não lineares, problemas de álgebra linear para
determinar raízes de equações não lineares, integração de funções ordinárias, manipulação de poli-
nômios, entre outros (TEIXEIRA, 2010).
O GNU Octave possui uma linha de comandos em que são passados comandos e expressões, mas
também é possível criar scripts, como o código-fonte de programação que já vimos anteriormente.

Tenha sua dose extra de conhecimento assistindo ao vídeo. Para acessar, use
seu leitor de QR Code.

204 Programas e Bibliotecas Matemáticos


O exemplo a seguir mostra como resolver um sistema de equações lineares no Octave.

Figura 9 - Resolução de um sistema de equações lineares em GNU Octave


Fonte: adaptada de GNU Octave ([2019], on-line)3.

O próximo exemplo mostra o código para plotar um gráfico de uma função senoidal.

Figura 10 - Exemplo de plotagem de gráfico em GNU Octave


Fonte: adaptada de GNU Octave ([2019], on-line)3.

O código utilizado produz um gráfico no Octave, em que é criada a curva da função de seno de x,
utilizando os valores passados para x, que vão de -10 até 10, com passos de 0,1, ou seja, calcula pontos
com espaços de 0,1 entre eles.

0.5
sin (x)

-0.5

-1
-10 -5 0 5 10
x

Figura 11 – Gráfico da função seno gerada pelo código da Figura 10


Fonte: adaptada de GNU Octave ([2019], on-line)3.

Na página do projeto, é possível baixar os instaladores ou ver comandos de instalação. Algumas dis-
tribuições Linux o incluem na instalação e algumas outras possuem ele em suas centrais de instalação
de aplicativos.

UNIDADE 8 205
Scilab

Scilab é um software livre francês conhecido por ser um software de grande potencial e aplicabilidade,
empregado no cálculo numérico de problemas, visualização de gráficos, por meio de uma linguagem
de programação de alto nível. O Scilab não realiza cálculos do tipo simbólico, porém, agregado a outros
softwares, permite a realização deles (BARRETO, 2008).
É possível lidar com diversos tipos de dados, manipulando vetores e matrizes. É uma linguagem de
programação que permite a criação ou utilização de algoritmos de acordo com a necessidade, tendo
uma boa similaridade com o MATLAB (BARRETO, 2008).
O interpretador do Scilab exibe uma linha de comandos (prompt) que é o local em que podem ser
inseridas as instruções. Assim como fizemos com o MATLAB ou com o GNU Octave, podemos usar
ele como uma calculadora ou aproveitar as funções predefinidas da linguagem.

Figura 12 - Captura de tela do Scilab


Fonte: os autores.
Como podemos ver na Figura 12, ao executar os mesmos comandos que aplicamos no GNU Octave,
agora no Scilab, temos a mesma resposta: o gráfico da função senoidal.
Portanto, tais softwares acabam sendo compatíveis e possuem diversas funções aritméticas e de
cálculo numérico pré-implementadas. Iremos explorar um pouco mais dessas possibilidades na pró-
xima unidade.

206 Programas e Bibliotecas Matemáticos


Softwares
Matemáticos Online

Já vimos a opção de trabalhar com o Google


Sheets, que permite a manipulação e gerencia-
mento de planilhas de cálculos online, mas agora
veremos algumas opções de softwares matemáti-
cos que podem ser acessados diretamente a partir
do seu navegador.

UNIDADE 8 207
WolframAlfa

Sabe aquele dia em que você precisa resolver um problema e não sabe como, então você procura no
Google e não encontra a solução. Você pensa: “eu queria um lugar onde eu pudesse passar qualquer
problema e ele resolvesse para mim”. Boa notícia: Isso existe e é o WolframAlfa.

Figura 13 - Captura de tela do WolframAlfa


Fonte: os autores.
Como ele faz isso? É um misto de inteligência artificial e mágica? Bom, não posso afirmar isso, mas
parece. A ideia do site é resolver problemas de diversos tipos, vale a pena acessar o site para ver.
Por exemplo, suponha que você tem um sistema de equações lineares para resolver. Veja o sistema a seguir:
 200 x  50 y  20
50 y  120 z  50 w  0

 50 w  150t  5
 x yz 0

Esse exemplo foi retirado da solução  z  weletrônico,
de um circuito  t  0 utilizando as leis de Kirchoff. Confesso que
um sistema com 5 operações e 5 variáveis acaba ficando chato de se fazer manualmente. Se você colocar
essas equações na entrada do WolframAlfa, separando as equações por pontos e vírgulas (;), o sistema
calcula a solução e ainda exibe o passo a passo para resolvê-lo (WOLFRAMALFA, [2019], on-line)5.

208 Programas e Bibliotecas Matemáticos


Figura 14 - Captura de tela da solução de um sistema linear no WolframAlfa
Fonte: os autores.

Essa é uma das capacidades do sistema, que vale a pena ser testado e avaliado. Ainda que não seja o
sistema principal que você utiliza, é bom para recorrer sempre que precisar, por estar disponível online.

Cymath

Uma outra alternativa online é o cymath, que também recebe fórmulas e exibe a solução. Não é tão
completo como o WolframAlfa, mas é uma boa solução e simples de utilizar.

Figura 15 - Captura de tela do cymath


Fonte: os autores.

UNIDADE 8 209
Dentre as opções de soluções, o Cymath trabalha com assíntotas, diferenciação, integração, divisão
polinomial, solução de sistemas lineares, solução de equações, entre outras (CYMATH, [2019], on-line)4.
Na figura a seguir, vemos um exemplo de solução de integração calculada no cymath.

Figura 16 - Captura de tela de uma solução de integração no Cymath


Fonte: os autores.

Dessa forma, ao entrar com o problema “integrate cos(x)^3”, o sistema exibe a forma matemática da
equação e exibe um passo a passo da solução.
Vimos, então, que existem diversas ferramentas para o trabalho de matemática e engenharia, algu-
mas para serem instaladas e outras online, algumas gratuitas e outras com um valor de licenciamento.
Portanto, há várias opções para apoio ao cálculo e, combinadas com a programação, possibilita-nos
automatizar boa parte do trabalho e ganhar bastante em produtividade.
Na próxima e última unidade, iremos focar em soluções específicas de cálculo numérico. Você vai
ver conceitos abordados nas primeiras unidades, porém agora utilizando um sistema para resolver.
Te espero lá, não esqueça o café!

210 Programas e Bibliotecas Matemáticos


Você pode utilizar seu diário de bordo para a resolução.

1. O conceito de bibliotecas é bem utilizado em programação e auxilia muito no


desenvolvimento. Assinale a alternativa que ilustra o que é uma biblioteca no
contexto de programação.
a) Um conjunto de documentações da linguagem.
b) Arquivos de funções externo.
c) Um conjunto de documentações do sistema desenvolvido.
d) Arquivos de ajuda.
e) Tutoriais de programação.

2. O MATLAB pode ser visto como uma linguagem de programação voltada para
matemática. Avalie as afirmações a seguir.
I) Scilab e Octave são duas alternativas em software livre que são compatíveis
com MATLAB.
II) Apesar do poder que há no software, o MATLAB pode ser utilizado como
uma calculadora.
III) Um dos pontos fortes do MATLAB é a manipulação de vetores e matrizes.
IV) O programa GNU Octave se diferencia do MATLAB por permitir apenas a
plotagem de gráficos.
Assinale a alternativa correta:
a) Apenas I e II estão corretas.
b) Apenas II e III estão corretas.
c) Apenas III e IV estão corretas.
d) Apenas I, II e III estão corretas.
e) Apenas II, III e IV estão corretas.

211
3. A linguagem C possui um conjunto de operandos aritméticos. Caso queria saber
o resto da divisão de 5520 por 37, assinale a sintaxe que deve ser utilizada.
a) 5520 / 37
b) 37 /- 5520
c) 5520 *= 37
d) 37 % 5520
e) 5520 % 37

212
FILME

A rede social
Ano: 2010
Sinopse: em uma noite de outono em 2003, Mark Zuckerberg (Jesse Eisen-
berg), analista de sistemas, graduado em Harvard, senta-se de frente ao seu
computador e começa a trabalhar em uma nova ideia. Apenas seis anos e 500
milhões de amigos mais tarde, Zuckerberg se torna o mais jovem bilionário da
história com o sucesso da rede social Facebook. O sucesso, no entanto, o leva
a complicações em sua vida social e profissional.

LIVRO

Python 3 Conceitos e Aplicações: Uma Abordagem Didática


Autor: Sérgio Luiz Banin
Editora: Érica
Sinopse: destinado a iniciantes em programação de computadores e profissio-
nais da área que desejam ampliar seus conhecimentos, esta obra fornece um
aprendizado didático e consistente, com exemplos e exercícios práticos.
São abordados elementos de Python 3, como objetos simples; objetos estru-
turados strings, listas, tuplas, conjuntos e dicionários; comandos de entrada e
saída, controle de fluxo do programa, funções, leitura e gravação de arquivos.
Destaca o uso e o gerenciamento de bancos de dados em SQL, leitura e gravação
de arquivos e inclui dois projetos completos e funcionais, descritos em detalhes,
para fixação do aprendizado.

WEB

5 Motivos porque você deveria aprender a Programar


Um vídeo da Marcela Santos em que ela apresenta motivos para alguém, prin-
cipalmente que não é da área de TI, aprender a programar.
Para acessar, use seu leitor de QR Code.

213
BARRETO, L. S. Iniciação ao Scilab. Costa de Caparica: edição do autor, 2008.

BORGES, L. E. Python para desenvolvedores. Rio de Janeiro: edição do autor, 2010.

CHAPRA, S. C.; CANALE, R. P. Métodos numéricos para engenharia. 5. ed. Porto Alegre: AMGH, 2011.

GILAT, A.; SUBRAMANIAM, V. Métodos Numéricos para Engenheiros e Cientistas: uma introdução com
aplicações usando o MATLAB. Porto Alegre: Bookman, 2008.

MOKARZEL, F. C. Introdução à Ciência da Computação. Rio de Janeiro: Elsevier, 2008.

NOEL, A. A. Fundamentos e arquitetura de computadores. Maringá: Unicesumar, 2019.

TEIXEIRA, S. R. Octave: Uma Introdução. Londrina: edição do autor, 2010.

REFERÊNCIAS ON-LINE

¹Em: https://doutoresdoexcel.com.br/aumentando-sua-produtividade-com-o-excel/. Acesso em: 16 set. 2019.

²Em: https://www.tutorialspoint.com/cprogramming/c_operators. Acesso em: 16 set. 2019.

³Em: https://www.gnu.org/software/octave/. Acesso em: 17 set. 2019.

⁴Em: https://www.cymath.com/. Acesso em: 17 set. 2019.

⁵Em: https://www.wolframalpha.com/. Acesso em: 17 set. 2019.

214
1. B.

2. D.

3. E.

215
216
Me. Andre Abdala Noel
Esp. Kryssian Romeiro Manoel dos Santos

Cálculo Numérico
Utilizando Octave

PLANO DE ESTUDOS

Funções Predefinidas
Métodos Numéricos
do MATLAB/Octave

Limitações Sistemas de
Integração Numérica
Computacionais Equações Lineares

OBJETIVOS DE APRENDIZAGEM

• Entender como são representadas as informações no • Conhecer funções predefinidas em MATLAB e Octave que
computador e as limitações computacionais. facilitam o cálculo.
• Aprender a escrever os métodos numéricos em Octave. • Analisar programas que fazem o cálculo da integração
• Utilizar programação em Octave para resolver sistemas numérica em Octave.
de equações lineares.
Limitações
Computacionais

Chegamos à nossa última unidade. Vimos o que


é cálculo numérico, métodos numéricos e como
funciona o computador. Vimos também lingua-
gens de programação, como programar e progra-
mas para matemática. Agora vamos juntar a ideia
de programação e cálculo numérico.
Lá no início, vimos que os métodos numéricos
foram desenvolvidos para se chegar a soluções,
dado que há uma classe de problemas para os
quais não é possível encontrar uma solução ótima
em tempo computacional viável.
Para entender melhor como funciona a aplica-
ção computacional e a combinação de programa-
ção com cálculo numérico, vamos ver um pouco
como são essas limitações e quais são os erros
envolvidos no cálculo computacional.

218 Cálculo Numérico Utilizando Octave


Representação de Números Reais

Toda informação é armazenada ou manipulada no computador, seja na memória,


processador ou na transferência de dados, na forma de números binários. Isto é, in-
ternamente no computador, temos a menor unidade de informação, que é o bit, que
pode armazenar apenas um número 0 ou número 1. É a combinação desses bits que
forma tudo o que vemos e manipulamos em um computador.
A combinação de 8 bits recebe o nome de byte e os dados são representados
usando combinações de bits (ou bytes). Toda informação passa por processos de
conversão de e para binário.
Se eu for armazenar um número inteiro, ou seja, um número sem casas decimais,
a informação apenas passa por uma conversão de base decimal para base binária
e o número é armazenado. Para recuperar esse número, basta recuperar o número
binário e converter de volta para a base decimal.
MEMÓRIA
int num; num 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
num = 1539; 0
0
0
0
0
0
0
0
0
0
1
0
1
1
0
1

DECIMAL BINÁRIO

1539 11000000011

Cada quadrado representa 1 bit.


Cada linha representa 1 byte.

Figura 1 - Representação do armazenamento do número 1539 na memória.


Fonte: os autores.

No caso de armazenamento de números reais, que possuem casas decimais, a mani-


pulação e a conversão não é tão direta. Antes de explicar, pense rapidamente se você
tem ideia de como armazenar um número que tem uma parte inteira e uma parte
decimal (formas diferentes de armazenar podem surgir dessa reflexão).
Uma primeira ideia seria: separe um número de bytes para representar a parte
inteira e uma outra quantidade de bytes para a parte decimal. Isso pode ser feito,
mas se a parte decimal tiver muitos números, precisamos de uma quantidade maior
de armazenamento para a parte decimal. Então percebemos que, se a parte decimal
diminuir para 1 algarismo ou mesmo 0, teríamos um espaço reservado desperdiçado.
Por que isso importa para nós neste estudo? Ao trabalhar com métodos numéricos,
iremos trabalhar com números com muitas casas decimais e é aí que mora o perigo. Os
números têm uma limitação de armazenamento e logo você vai entender o problema.
Então, uma forma comum de representar números decimais é na forma de ponto
flutuante. O que vem a ser isso? Não representaremos a parte inteira e a parte de-

UNIDADE 9 219
cimal separadas, representaremos como uma coisa só e então o ponto (ou a vírgula
na nossa representação habitual) é que será “deslocada” nessa representação. Você
também pode conhecer isso como “notação científica”.

Tenha sua dose extra de conhecimento assistindo ao vídeo.


Para acessar, use seu leitor de QR Code.

Assim, os números de ponto flutuante serão representados na forma:


MANTISSA x BASEEXPOENTE

Em que a mantissa seria o número completo, sem considerar a vírgula; a base é sempre
10; e o expoente é o que vai definir onde vai a vírgula, de acordo com as potências de
10. Por exemplo, o número 123,45 pode ser representado como:
123,45 = 12345 x 10-²

Para armazenar o número, não precisamos armazenar a base, que é sempre 10, mas
armazenaremos a mantissa e o expoente. O tamanho do número em bytes pode variar
de acordo com a linguagem ou com a precisão, mas vamos usar um número de ponto
flutuante de 4 bytes, consequentemente 32 bits. Usaremos 24 bits para a mantissa e
8 bits para o expoente. Veja a Figura 2.
int num; MEMÓRIA
num = 1539; num 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
float num2; 0 0 0 0 0 1 1 0
0 0 0 0 0 0 1 1
num2 = 123.45; num2 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0
0 0 1 1 1 0 0 1
MANTISSA EXPOENTE 1 1 1 1 1 1 1 0
-2
123,45 12345 x 10
11111110
11 0000 0011 1001
Cada quadrado representa 1 bit.
Cada linha representa 1 byte.

Figura 2 - Representação do armazenamento do número 123,45 na memória.


Fonte: os autores.

Neste nosso exemplo, o número 12345 é representado como 11000000111001 em binário,


e o número -2 é representado como 11111110, também em binário. O número negativo
fica diferente por usar uma técnica chamada complemento de 2, que não explicaremos
neste livro.

220 Cálculo Numérico Utilizando Octave


Erros em Soluções Numéricas

Agora que já sabemos como são manipulados os números de ponto flutuante, pode-
mos entender melhor como funcionam os erros em soluções numéricas. Por haver
um limite para a representação do número, nem sempre o número cabe nessa repre-
sentação, então é preciso fazer uma aproximação.
Se nós analisarmos, por exemplo, uma operação de divisão que gera uma dízima
periódica, como 2 / 3, o número não pode ser representado de forma exata por um
motivo óbvio: ele possui infinitas casas decimais. Por isso, precisamos cortar ou ar-
redondar o número. Podemos representar como 0,6666 ou como 0,6667, cortando
ou arredondando, respectivamente (GILAT; SUBRAMANIAM, 2008).
Nesse caso, a diferença parece muito pequena e aceitável, mas após várias opera-
ções seguidas, sempre arredondando os números, temos o que é chamado de erro
de arredondamento, o que pode levar a erros no cálculo numérico.

Arredondar um número x significa encontrar um novo número, que podemos cha-


mar de x’, que tenha menos dígitos significativos e onde a diferença entre ambos
seja a menor possível.
Fonte: adaptado de Franco (2006).

Aproveitando um exemplo apresentado por Gilat e Subramaniam (2008), conside-


ramos os números p = 9890,9 e q = 9887,1. Os dois números são quase o mesmo. Se
representarmos os números em ponto flutuante com três algarismos significativos
para mantissa, vamos calcular a diferença entre os dois números.
Usaremos uma representação como a notação científica em vez de como é ar-
mazenado em memória apenas para facilitar a didática. Então, p e q podem ser
representados como:
p  9, 8909  103 e q  9, 8871  103

Como teremos apenas três algarismos significativos, precisamos cortar para:

p  9, 890  103 e q  9, 887  103

UNIDADE 9 221
Realizando a subtração (p-q), temos:

9, 890  103  9, 887  103  0, 003x103  3

Arredondando o número, em vez de cortar, temos:

9, 891  103  9, 887  103  0, 004 x103  4

Fazendo a conta manualmente (ou mentalmente), sabemos que a resposta real seria
3,8. Sendo assim, percebemos que, pelo menos nesse caso, o arredondamento fun-
ciona melhor do que o corte.
O erro neste exemplo é até simples, mas trabalhamos com números com muitas
casas decimais em métodos numéricos e esses erros podem ir aumentando, afastan-
do-se da solução inicial.
Ainda há o chamado erro de truncamento, além do erro de arredondamento,
que acontece quando os métodos numéricos adotam um procedimento aproximado
para chegar à solução.
O erro de truncamento depende do método utilizado e não do arredondamento
ou corte. Portanto, pode ocorrer erro de truncamento mesmo quando as operações
matemáticas são exatas (GILAT; SUBRAMANIAM, 2008).

222 Cálculo Numérico Utilizando Octave


Métodos
Numéricos

Você deve se lembrar que já vimos, no começo


do livro, como funcionam os métodos numéri-
cos. Nesta unidade, nosso trabalho será aplicá-los
no computador e, para isso, usaremos o softwa-
re GNU Octave, que já abordamos na unidade
anterior. Você se lembra do que são os métodos
numéricos?
Utilizado a resposta de Araújo (2017, on-line)¹:



Métodos numéricos são aplicações de al-
goritmos pelas quais é possível formular e
resolver problemas matemáticos usando
operações aritméticas menos complexas.
Estes também são conhecidos como mé-
todos indiretos.

UNIDADE 9 223
Acredito que isso refresca a sua memória e você se lembra dos algoritmos que já vimos
para resolver problemas matemáticos, várias vezes por aproximação. Vale lembrar,
também, que um algoritmo não depende de um computador ou uma linguagem de
programação. A própria sequência de instruções que executamos no cálculo já é um
algoritmo.
Você também já está craque em saber que o computador não pensa ou calcula da
mesma forma que nós fazemos. Um exemplo que podemos ver é a solução de equa-
ções quadráticas. Como encontramos os valores de x de uma equação quadrática?
Recorremos à nossa velha amiga, a Fórmula de Bháskara.

b  b2  4 ac
x
2a
Então, vamos ver como resolver a seguinte equação (GILAT; SUBRAMANIAM, 2008):

x 2  100, 0001x  0, 01  0
Primeiro, vamos resolver manualmente. Com algumas operações, chegamos aos
valores:

b  b2  4 ac
x1 
2a
x1  100

b  b2  4 ac
x2 
2a
x2  0, 0001

Feito isso, vamos fazer o mesmo processo no Octave. Você pode executar na sua
instalação do Octave para conferir na prática. Primeiro, definimos que vamos usar
o formato “long”, para trabalhar com maior precisão, depois vamos definir quem é a,
b e c na expressão quadrática. Em seguida, calcularemos a raiz quadrada.
>> format long
>> a = 1; b = -100.0001; c = 0.01;
>> RaizesDis = sqrt(b^2 - 4*a*c)
RaizesDis = 99.9999000000000

Temos o resultado da raiz quadrada na variável “RaizesDis”. Jogando de volta na


fórmula, basta calcular x1 e x2.

224 Cálculo Numérico Utilizando Octave


>> x1 = (-b + RaizesDis)/(2*a)
x1 = 100
>> x2 = (-b - RaizesDis)/(2*a)
x2 = 1.00000000003320e-04

Observe que, por causa dos erros que comentamos há pouco, chegamos ao valor de
x1 exato, mas x2 tem um erro de arredondamento.
Portanto, a forma que usamos para calcular a Fórmula de Bháskara não é a melhor
forma para o computador. Para resolver, você pode modificar um pouco a fórmula,
sem causar erro no cálculo.

x2 
b  b2  4 ac b  b2  4 ac
 

b  b2  4 ac

2c
2a 2a

b  b2  4 ac 
b  b2  4 ac

Passando para o Octave:


>> x2Mod = (2*c)/(-b+RaizesDis)
x2Mod = 1.00000000000000e-04

Perceba que, fazendo uma modificação no cálculo, o computador consegue calcular


sem gerar o erro que havia sido gerado antes.

UNIDADE 9 225
Sistemas de
Equações Lineares

Há muito tempo (numa galáxia muito distante),


você aprendeu a resolver sistemas de equações
lineares na escola e achou isso algo muito traba-
lhoso. Trabalhar com várias equações ao mesmo
tempo não é algo tão trivial.
Então, você chegou a esse livro e aprendeu,
nas primeiras unidades, a resolver sistemas de
equações lineares por meio de métodos numéri-
cos. Você ficou feliz ao ver que pode resolver um
sistema com muitas equações (pelo menos me
deixe acreditar que você ficou feliz), mas ficou
assustado porque o método é ainda mais difícil
do que aquele que você aprendeu na escola.
A parte boa é que você não vai ter que efetuar
esses cálculos. Basicamente, podemos utilizar to-
dos os métodos numéricos estudados no início do
livro passando ele para o computador, que é quem
vai fazer o trabalho pesado.
Contudo, não é muito vantajoso repetirmos
tudo o que já vimos, passando tudo para código.
A partir de alguns exemplos, é possível entender o
funcionamento e você mesmo pode fazer a escrita
de códigos, se quiser ou precisar.

226 Cálculo Numérico Utilizando Octave


Lá no início, na Unidade 2, vimos como resolver sistemas de equações lineares
por meio de métodos numéricos. Em especial, vimos como realizar a decomposição
LU para chegar às soluções.
Recapitulando brevemente, um sistema de equações lineares é um conjunto de
equações em que temos n variáveis e n equações lineares.

 x + 2y = 3

3x - y = 5

Vimos que todo sistema pode ser escrito na forma Ax = b , em que A é uma matriz
com os índices que acompanham as variáveis e b é um vetor vertical com os resulta-
dos. O sistema anterior pode ser representado como:

1 2 x  3
     
3 1 y  5

Relembrando um pouco mais, podemos realizar a decomposição LU, em que vimos


que qualquer matriz quadrada pode ser decomposta em duas matrizes: uma trian-
gular inferior (L) e uma triangular superior (U), em que a multiplicação de L por U
produz a matriz quadrada original.
LU = A

Você deve se lembrar que a decomposição não é a coisa mais legal do mundo de se
fazer, ainda mais quando as matrizes são grandes. E é aqui que reforçamos o objetivo
desse livro e de toda essa disciplina: tudo o que é chato de se fazer, nós passamos para
o computador.

O GNU Octave é uma linguagem de programação de alto nível para computação


numérica e geralmente é usado para resolver problemas de equações lineares,
equações não lineares, álgebra linear, análise estatística e executar experimentos
numéricos. Pode ser usado ainda para processar dados em lote.
Possui um ambiente de desenvolvimento integrado (IDE), com editor de código,
destaque de sintaxe, depurador embutido, documentação e interpretador da lin-
guagem. Também disponibiliza uma interface para linha de comandos.
Fonte: Eaton ([2019], on-line)2.

UNIDADE 9 227
No GNU Octave (que chamaremos apenas de Octave, você também pode usar o
mesmo código no MATLAB), podemos escrever uma função para decomposição
LU, descrevendo aquelas mesmas regras que aprendemos na Unidade 2, desta forma:

Figura 3 - Função para decomposição LU


Fonte: Gilat e Subramaniam (2008, p. 140).

As linhas foram numeradas para facilitar a análise. Se você voltou à Unidade 2 para
relembrar, vai ver que das linhas 3 a 6, calculamos a 1ª coluna de L. Das linhas 7 a 9,
calculamos a 1ª linha de U. Depois, das linhas 11 a 13, calculamos as próximas linhas
de L, e de 14 a 16, as linhas de U.
Criando um exemplo aleatório no Octave, vamos criar uma matriz quadrada A,
um vetor b e nossa intenção será calcular o vetor x, de soluções.
>> A = [3 4 5; 4 1 -2; 3 7 -1]
A=
3 4 5
4 1 -2
3 7 -1

228 Cálculo Numérico Utilizando Octave


>> b = [5; -1; 2]
b=
5
-1
2

Já escrevemos a função LUdecompCrout(A) do código anterior e vamos executar. O


resultado são duas matrizes L e U, respectivamente triangular inferior e triangular
superior.
>> [L,U] = LUdecompCrout(A)
L=
3.00000 0.00000 0.00000
4.00000 -4.33333 0.00000
3.00000 3.00000 -12.00000
U=
1.00000 1.33333 1.66667
0.00000 1.00000 2.00000
0.00000 0.00000 1.00000

Agora que temos as matrizes triangular inferior e triangular superior, podemos che-
gar ao resultado por meio de substituições sucessivas. Para isso, podemos escrever
funções para essas substituições:

Figura 4 - Função para substituições


Fonte: Gilat e Subramaniam (2008, p. 140).

UNIDADE 9 229
Lembrando que o nosso sistema Ax = b pode ser escrito como LUx = b , podemos
substituir Ux = y para obter o sistema Ly = b . O passo a passo seria encontrar o
vetor y, depois substituir para encontrar x. Em nosso exemplo, temos que:

 x1  1, 3333x2  1, 66667 x3  y1  3 y1  5
 
 x2  2 x3  y2 4 y1  4, 3333 y2  1
 x3  y3 3 y  3 y  12 y  2
  1 2 3

ou escrevendo com matrizes:


Ux  y Ly  b
1 1, 3333 1, 66667   x1   y1  3   y1   5 
         
 1 2   x2    y2  4 4, 3333   y2    1 
 1   x3   y3  3 3 12   y3   2 
 

A partir dessas funções que escrevemos no Octave, podemos então encontrar o vetor
y, para depois encontrar o vetor x.
>> y = ProgressSub(L, b)
y=
1.66667
1.76923
0.69231

>> x = RegresSub(U, y)
x=
0.00000
0.38462
0.69231

Chegamos, então, ao resultado que esperávamos para nosso sistema, em que


=
x1 0=; x2 0, 38462; x3 = 0, 69231 .

230 Cálculo Numérico Utilizando Octave


Funções Predefinidas
do MATLAB/Octave

Bom, agora você aprendeu a escrever os métodos


numéricos em uma linguagem matemática que o
computador entende e pronto, você já sabe tudo o
que se precisa saber e já podemos encerrar, não?
Aí você se pergunta: “se foi dito durante o livro
que o computador faz o trabalho pesado, eu pre-
ciso mesmo escrever todo o programa para o mé-
todo numérico? Não tem uma forma mais fácil?”
A boa notícia é: Tem! Contudo, se eu mostrasse
antes, você não teria lido toda essa parte de escre-
ver o processo todo em forma de programação.
Você se lembra de que nosso vetor pode ser
escrito como Ax = b e que já escrevemos nossa
matriz A e nosso vetor b no Octave? Então, se b é
uma multiplicação de A por x, não conseguimos
isolar o x nessa equação para obter de forma mais
direta?

UNIDADE 9 231
Temos o operador de divisão à esquerda, que é uma barra invertida (\), que nos
permite escrever uma divisão x = a\b.
>> x = A\b
x=
0.00000
0.38462
0.69231

Sim, só isso. O Octave já calcula o vetor x e você já percebeu que é o mesmo resultado.
Nós utilizamos a divisão à esquerda porque o vetor b é um vetor vertical. No caso,
se o nosso sistema for escrito como x A = b , teremos a matriz A transposta e b como um
vetor horizontal. Neste caso, podemos usar a divisão à direita, que é a barra comum (/).
Para o exemplo, transpomos a matriz A e reescrevemos manualmente b, apenas
para mostrar as duas formas de escrever.
>> A = A’
A=
3 4 3
4 1 7
5 -2 -1

>> b = [5 -1 2]
b=
5 -1 2

>> x = b/A
x=
0.00000 0.38462 0.69231

232 Cálculo Numérico Utilizando Octave


Sim, para calcular a matriz transposta, basta colocar um apóstrofo (‘) na variável da
matriz e poderíamos usar assim direto na fórmula. Você pode até testar e verificar que:
x = A\b

É equivalente a:
x = b’/A’

Apenas para finalizar a nossa diversão com sistemas lineares, a própria decomposição
LU já tem função predefinida no Octave. Você tem acesso a uma função chamada
“lu”, que recebe uma matriz A e produz três matrizes: as conhecidas L e U, além de
uma matriz P, de transição.
Para os mesmos A e b do exemplo anterior, temos:
>> A
A=
3 4 5
4 1 -2
3 7 -1

>> b
b=
5
-1
2

>> [L, U, P] = lu(A)


L=
1.00000 0.00000 0.00000
0.75000 1.00000 0.00000
0.75000 0.52000 1.00000

U=
4.00000 1.00000 -2.00000
0.00000 6.25000 0.50000
0.00000 0.00000 6.24000

UNIDADE 9 233
P=

Permutation Matrix

0 1 0
0 0 1
1 0 0

>> y = L\(P*b)
y=
-1.0000
2.7500
4.3200

>> x = U\y
x=
0.00000
0.38462
0.69231

em que chegamos ao mesmo x, utilizando apenas as funções predefinidas para tra-


balhar com matrizes e sistemas lineares.
Além dessas funções, temos disponíveis operadores para trabalhar com matrizes
e vetores, além de diversas funções, desde funções aritméticas simples até funções
mais complexas predefinidas.
Podemos trabalhar com operadores em matrizes de uma forma até intuitiva, veja
por meio dos exemplos.
>> A = [1 2 3; 4 5 6; 7 8 9]
A=
1 2 3
4 5 6
7 8 9

234 Cálculo Numérico Utilizando Octave


>> A * 2 # multiplicação por 2
ans =
2 4 6
8 10 12
14 16 18

>> A / 2 # divisão por 2


ans =
0.50000 1.00000 1.50000
2.00000 2.50000 3.00000
3.50000 4.00000 4.50000

>> A + A # soma de matrizes


ans =
2 4 6
8 10 12
14 16 18

>> A * A # multiplicação de matrizes


ans =
30 36 42
66 81 96
102 126 150

Para aprender melhor a usar os operadores e as funções, eu recomendo ver a própria


documentação acessível pelo menu de ajuda do Octave. Há uma documentação
que pode ser instalada e uma documentação online. Ajuda bastante a aprender e
melhorar no uso.

UNIDADE 9 235
Integração
Numérica

Chegamos a um ponto em que todo aluno que


passou por aulas de cálculo fica assustado: in-
tegração numérica! Mas não você, que já viu na
Unidade 4 como podemos resolvê-las por meio
de cálculo numérico.
De forma similar ao que fizemos com os siste-
mas lineares, vamos utilizar as ferramentas dispo-
níveis no Octave para resolver as integrações nu-
méricas. Lá na Unidade 4, vimos formas diferentes
de chegar à integração numérica usando métodos
de aproximação, sendo um deles conhecido como
a regra dos trapézios, então vamos aproveitar este
método para trabalhar com o Octave.
Reaproveitando o que já vimos, podemos apro-
ximar o desenho real da área que queremos inte-
grar ao desenho de um trapézio que “se encaixa”
em nossa área desejada. Afinal, nós sabemos como
se calcula a área de um trapézio.

236 Cálculo Numérico Utilizando Octave


y y = ƒ(x)
ƒ(b)
Área
= 12 (b-a) (ƒ(b)-ƒ(a))
ƒ(a)
Área
= ƒ(a)(b-a)
x
a b
Figura 5 - Método do trapézio
Fonte: Gilat e Subramaniam (2008, p. 293).

Aproveitando a teoria do método dos trapézios, que não vamos repetir aqui, pode-
mos também escrever uma função para resolver a integração como o código escrito
a seguir (GILAT; SUBRAMANIAM, 2008):

Figura 6 - Função para resolução de integração


Fonte: adaptada de Gilat e Subramaniam (2008).

Portanto, temos uma função chamada “trapezoidal”, que recebe 4 variáveis de entrada:
“integrando”, “a”, “b” e “N”, em que:
• integrando: função a ser integrada, passada como texto.
• a: limite inferior da integral.
• b: limite superior da integral.
• N: número de subintervalos que será gerado.

UNIDADE 9 237
A saída, ou seja, o valor da integral será salvo na variável “I”.
Na linha 2, é calculada a largura dos intervalos.
Na linha 3, integrando é definido como uma função inline (em linha).
Na linha 4, x é um vetor que recebe as coordenadas dos subintervalos. Na sintaxe
do Octave, essa linha significa que deve ser gerado um vetor com valores de a até b,
com espaço de h entre os valores.
Nas linhas 5 a 7, é executando um loop onde um vetor F recebe os valores do
integrando em cada ponto x.
Por fim, na linha 8, a variável I recebe o valor da integral, de acordo com a fórmula
obtida na regra dos trapézios.



1 EXEMPLO Um Boeing 727-200 de massa m = 97000 kg aterrissa a uma velocidade de 93 m/s
(em torno de 181 nós) e liga os seus reversos em t = 0. A força F aplicada no avião
à medida que ele reduz a sua velocidade é dada por F  5v2  570000 , onde
v é a velocidade do avião. Usando a segunda lei de Newton do movimento e da
dinâmica dos fluidos, a relação entre a velocidade e a posição x do avião pode ser
escrita como:

dv
mv  5v2  570000
dx

onde x é a distância medida a partir da localização do jato em t = 0.

Determine a distância percorrida pelo avião antes que sua velocidade se reduza
a 40 m/s (em torno de 78 nós) usando o método tradicional composto (GILAT;
SUBRAMANIAM, 2008, p. 294).

Podemos escrever esse problema em forma de uma integral, primeiro reescrevendo


a fórmula de uma forma a separar v de um lado e x do outro, na equação.
97000vdv
 dx
 5v2  570000 
A partir dessa equação, é possível integrar os dois lados. Os limites de v serão 93 m/s
e 40 m/s, retirados do enunciado, enquanto x será integrado de 0 a um x arbitrário
(GILAT; SUBRAMANIAM, 2008).

x 40 97000v 93 97000v
0 d x   dv   dv
93
5v 2
 570000  40 2
5v  570000

238 Cálculo Numérico Utilizando Octave


Agora que temos a nossa integral, podemos usar o programa criado no Octave para
realizar o cálculo. Iremos calcular a integral para três tamanhos diferentes de subin-
tervalos: 10, 100 e 1000.
>> format long g
>> dist = trapezoidal(‘97000*v/(5*v^2+570000)’,40,93,10)
dist = 574.0854851337124
>> dist = trapezoidal(‘97000*v/(5*v^2+570000)’,40,93,100)
dist = 574.1487739314092
>> dist = trapezoidal(‘97000*v/(5*v^2+570000)’,40,93,1000)
dist = 574.1494067751289

Podemos observar que a precisão aumenta à medida que o número de subintervalos


aumenta.
Bom, como você já deve ter imaginado, também há funções predefinidas no
Octave para o trabalho com integração numérica. Podemos ver essas funções na
documentação do Octave mencionada antes.
Quadro 1 - Funções para integração numérica com uma variável

quad Integração numérica baseada na quadratura de Gauss.


Integração numérica utilizando uma regra adaptativa vetorizada de
quadv
Simpson.
quadl Integração numérica utilizando uma regra adaptativa de Lobatto.
quadgk Integração numérica utilizando uma regra adaptativa de Gauss-Konrod.
quadcc Integração numérica utilizando regras adaptativas de Clenshaw-Curtis.
Uma função de compatibilidade que irá escolher entre quadv e quadgk
integral
dependendo do integrando e das opções.
trapz, Integração numérica utilizando o método dos trapézios.
cumtrapz

Fonte: Eaton ([2019], on-line)².

Para utilizar essas funções, vamos escrever nossa equação em forma de uma função.

Figura 7 - Equação de função no Octave


Fonte: o autor.

UNIDADE 9 239
As funções predefinidas no Octave possuem entradas e saídas específicas e podem
possuir conjuntos de entrada diferentes, mesmo que tenham o mesmo objetivo.
Por isso, sempre veja a documentação das funções.

Em seguida, podemos utilizar essas funções. Veja a utilização a seguir, você pode
comparar os resultados.

>> I = quad(@myfun,40,93)
I = 574.1494131674854
>> I = quadv(@myfun,40,93)
I = 574.1494133380179

Para utilizar as outras funções, nossa função precisa ser adaptada, o que não faremos
neste momento.
Estamos no fim de nossa unidade e vimos como aplicar no computador o que
aprendemos de cálculo numérico. Por favor, nunca se esqueça de que o computador
pode fazer por você o trabalho chato de cálculo que você não quer fazer.
Temos formas diferentes de chegar às soluções e, em nossa utilização prática, pre-
cisaremos levar em conta fatores como tolerância de erros, nível de precisão, tempo
de processamento, entre outros. Cabe a você encontrar um método de acordo com
suas necessidades.
Não deixe de estudar e se aprimorar sempre. Espero que você possa aproveitar
esse conteúdo e que tenha sido um tempo proveitoso de estudo.
Sucesso!

240 Cálculo Numérico Utilizando Octave


Você pode utilizar seu diário de bordo para a resolução.

1. Um número de ponto flutuante pode ser representado em binário de maneiras


diferentes, e uma forma comum é usar a ideia de mantissa, base e expoente.
Assinale a alternativa correta.
a) A mantissa pode ser armazenada como o número completo, ignorando a vírgula
e convertendo para binário.
b) Em binário, armazenamos a multiplicação da mantissa pela base.
c) O expoente precisa ser armazenado de forma negativa.
d) A base utilizada é 2, por ser armazenado em binário.
e) O número de ponto flutuante tem uma quantidade fixa de bits para a parte
inteira e outra quantidade para a parte decimal.

2. Podemos escrever programas em Octave ou mesmo usar funções da linguagem


para resolver sistemas de equações lineares. Considerando o texto, avalie as
afirmações.
I) Sistemas de equação lineares requerem uma biblioteca especial do Octave.
II) É possível encontrar as soluções de um sistema de equações lineares sim-
plesmente passando o comando x = A\b.
III) Para realizar a decomposição LU, há uma função predefinida em Octave.
IV) A função trapz resolve um sistema linear retornando o vetor x de soluções.

Assinale a alternativa correta:


a) Apenas I e II estão corretas.
b) Apenas II e III estão corretas.
c) Apenas I está correta.
d) Apenas II, III e IV estão corretas.
e) Nenhuma das alternativas está correta.

241
3. Métodos numéricos trabalham com aproximações, não necessariamente com
soluções exatas.
Assinale verdadeiro (V) ou falso (F):
( ) Os métodos numéricos sempre apresentam erros na solução, mas esses
podem ser ignorados.
( ) Por causa da forma que o número é representado, podem ocorrer erros de
arredondamento no cálculo.
( ) Podemos definir a tolerância de erro que aceitamos em um método numérico.
( ) Um método numérico tem que ter critérios de parada que, além da tolerância
de erro, pode ser um número de iterações predefinido.
Assinale a alternativa correta:
a) V-V-V-V.
b) V-F-F-V.
c) F-F-F-F.
d) F-V-V-V.
e) V-F-V-F.

242
FILME

O Homem Que Mudou o Jogo


Ano: 2012
Sinopse: Billy Beane (Brad Pitt) é o gerente do time de baseball Oakland Athletics.
Com pouco dinheiro em caixa e a ajuda de Peter Brand (Jonah Hill), ele desen-
volveu um sofisticado programa de estatísticas para o clube, que fez com que
ficasse entre as principais equipes do esporte nos anos 80.

LIVRO

Octave: Seus primeiros passos na programação científica


Autor: Alexandre Fioravante de Siqueira
Editora: Casa do Código
Sinopse: o GNU Octave possui estrutura similar à da linguagem MATLAB, que
é uma linguagem de programação interpretada de alto nível, voltada ao cálculo
matricial, à computação, visualização e programação numérica. É um software
livre que dispõe de ferramentas para a resolução de problemas relativos à álge-
bra linear, equações não lineares, equações diferenciais e algébrico-diferenciais,
entre outros.
Neste livro, Alexandre dará uma introdução à computação científica por meio
do software GNU Octave. Serão abordadas funções matemáticas básicas, ve-
tores e matrizes, gráficos bidimensionais e tridimensionais, funções e pacotes
disponíveis no Octave Forge.

243
FRANCO, N. M. B. Cálculo Numérico. São Paulo: Pearson, 2006.

GILAT, A.; SUBRAMANIAM, V. Métodos numéricos para engenharia e cientistas. Porto Alegre: Bookman,
2008.

REFERÊNCIAS ON-LINE

¹Em: https://www.esss.co/blog/metodos-numericos-para-simulacao-na-engenharia/. Acesso em: 17 set. 2019.

²Em: https://octave.org/doc/interpreter/index.html. Acesso em: 17 set. 2019.

244
1. A.

2. B.

3. D.

245
246
247
CONCLUSÃO

Chegamos ao fim do nosso estudo. Permita-me, agora, imaginar que você não
conseguiu segurar um “Aaaaahhhhhhh!”, com um misto de tristeza por acabar e
felicidade pelo dever cumprido.
Pode ficar feliz porque este não é o fim! Todo(a) bom/boa profissional, princi-
palmente quem se envolve com tecnologia, sabe que sempre estamos aprendendo
algo novo, atualizando-nos, e esta disciplina apenas introduziu você no fantástico
mundo da programação.
Não tivemos a pretensão, neste livro, de dizer que ensinamos os melhores mé-
todos ou melhores softwares, até porque sabemos que os softwares sempre passam
por adaptações, melhorias, outros softwares surgem, alguns ficam defasados. A
intenção é que você saiba que há diversos recursos disponíveis e também passar
um caminho para que você saiba por onde iniciar a busca pela solução dos seus
problemas.
Começamos nosso estudo com os métodos numéricos para encontrar as raízes
de equações, já percebendo que o computador realiza os cálculos de forma diferente
de como o nosso cérebro trabalha. Depois, passamos para os métodos numéricos
que resolvem sistemas lineares e, na terceira unidade, passamos a trabalhar com
polinômios, estudando a aproximação polinomial. Então, fechamos o estudo dos
métodos numéricos com a integração numérica e equações diferenciais.
Em seguida, passamos a estudar o computador e a programação, iniciando, na
Unidade 5, com conceitos básicos sobre o computador e a programação. Então,
na Unidade 6, passamos a estudar as linguagens de programação, para então, na
Unidade 7, descobrir como escrever código nessas linguagens e transformá-los
em programas.
Nas duas últimas unidades, fizemos a união da matemática com a computação:
na Unidade 8, alguns softwares para manipulação matemática; fechamos o estudo,
na Unidade 9, escrevendo os métodos numéricos em forma de programação.
Espero ter lhe animado a se aprofundar nos estudos e a aproveitar todo o po-
tencial que seu computador tem, que pode não estar sendo bem aproveitado.
Um ótimo futuro para você!
Quando identificar o ícone de QR-CODE, utilize o aplicativo Unicesumar Experience para
ter acesso aos conteúdos digitais. O download do aplicativo está disponível nas plataformas:

RADUAÇÃO Google Play App Store

A Unicesumar apresenta uma proposta de metodologia, cujo objetivo é a


integração do que temos de melhor: toda a qualidade da nossa educação
a distância, mesclada com a excelência comprovada do nosso ensino pre-
sencial, utilizando tecnologias diversificadas e focando na personalização O Ã Ç A U D A R G
do ensino e da aprendizagem de maneira eficaz. Nessa metodologia, os
encontros presenciais são roteirizados a partir de metodologias ativas de
aprendizagem, além de práticas em laboratório, o que ajuda a criar um
vínculo maior com o aluno. Para embasar tudo isso, os cursos contam com
RADUAÇÃO
materiais didáticos com recursos exclusivos, produzidos integralmente pela
OÃÇAUDARG
Unicesumar e disponibilizados tanto na versão impressa como na digital.

ISBN: 978-85-459-2036-6

0 251073 620200

RADUAÇÃO

OÃÇAUDARG

OÃÇAUDARG

Você também pode gostar