Você está na página 1de 44

Lógica de

Programação
Introdução à Computação e aos
Algoritmos
Diretor Executivo
DAVID LIRA STEPHEN BARROS
Gerente Editorial
CRISTIANE SILVEIRA CESAR DE OLIVEIRA
Projeto Gráfico
TIAGO DA ROCHA
Autoria
IZABELLY MORAIS DE MORAIS
LEANDRO C. CARDOSO
MAX ANDRÉ DE AZEVÊDO SILVA
AUTORIA
Izabelly Morais de Morais
Sou licenciada em Ciência da Computação pela Universidade Federal da
Paraíba (UFPB), e mestre em Ciência da Computação com ênfase em Engenharia
de Software e Linguagens de Programação pela Universidade Federal de
Pernambuco (UFPE). Leciono como professora formadora no Instituto Federal de
Pernambuco (IFPE) e na Faculdade Pitágoras (João Pessoa, na Paraíba), onde tenho
a oportunidade de transmitir minha experiência na área de Tecnologia e Educação.
Por isso fui convidada pela Editora Telesapiens a integrar seu elenco de autores
independentes. Estou muito feliz em poder ajudar você nesta fase de muito estudo
e trabalho. Conte comigo!

Leandro C. Cardoso
Sou graduado em Comunicação Social com habilitação em Design Digital, e
mestre em Tecnologias da Inteligência e Design Digital pela Pontifícia Universidade
Católica de São Paulo (PUC-SP), com mais de 20 anos de experiência em direção
de arte e criação. Passei por empresas como a Laureate International Universities
– FMU/Fiam-Faam, a Universidade Anhembi Morumbi e o Centro Paula Souza
(Fatec-Etec). Já atuei como analista de desenvolvimento pedagógico sênior,
coordenador de curso técnico de Design Gráfico e revisor técnico e validador para
curso EAD para clientes Laureate International Universities, DeVry Brasil, Unef,
FAESF, Faculdade Positivo, Uninter e Platos Soluções Educacionais S.A. (Krotonn –
Universidade Anhanguera). Além disso, sou autor de mais de 24 livros didáticos e
um dos organizadores da Maratona de Criação e Design do Curso de Comunicação
Visual da Etec Albert Einstein. Sou apaixonado pelo que faço e adoro transmitir
minha experiência de vida àqueles que estão iniciando em suas profissões. Por
isso fui convidado pela Editora Telesapiens a integrar seu elenco de autores
independentes. Estou muito feliz em poder ajudar você nesta fase de muito estudo
e trabalho. Conte comigo!

Max André de Azevêdo Silva


Sou formado em Ciência da Computação, pela Universidade Federal da
Paraíba (UFPB), e mestre em Ciência da Computação com ênfase em Engenharia de
Software pela Universidade Federal da Paraíba (UFPB). Tenho experiência na área
de Desenvolvimento de Sistemas Web, Mobile e Jogos Eletrônicos. Atualmente,
trabalho como analista de sistemas. Por isso fui convidado pela Editora Telesapiens
a integrar seu elenco de autores independentes. Estou muito feliz em poder ajudar
você nesta fase de muito estudo e trabalho. Conte comigo!
ICONOGRÁFICOS
Olá. Esses ícones irão aparecer em sua trilha de aprendizagem toda vez
que:

OBJETIVO: DEFINIÇÃO:
para o início do houver necessidade
desenvolvimento de de se apresentar um
uma nova compe- novo conceito;
tência;

NOTA: IMPORTANTE:
quando forem as observações
necessários obser- escritas tiveram que
vações ou comple- ser priorizadas para
mentações para o você;
seu conhecimento;
EXPLICANDO VOCÊ SABIA?
MELHOR: curiosidades e
algo precisa ser indagações lúdicas
melhor explicado ou sobre o tema em
detalhado; estudo, se forem
necessárias;
SAIBA MAIS: REFLITA:
textos, referências se houver a neces-
bibliográficas e links sidade de chamar a
para aprofundamen- atenção sobre algo
to do seu conheci- a ser refletido ou dis-
mento; cutido sobre;
ACESSE: RESUMINDO:
se for preciso aces- quando for preciso
sar um ou mais sites se fazer um resumo
para fazer download, acumulativo das últi-
assistir vídeos, ler mas abordagens;
textos, ouvir podcast;
ATIVIDADES: TESTANDO:
quando alguma quando o desen-
atividade de au- volvimento de uma
toaprendizagem for competência for
aplicada; concluído e questões
forem explicadas;
SUMÁRIO
Introdução à Computação....................................................................... 10
O Ábaco, Ossos de Napier e Auxílio Mecânico para os Cálculos................10

Gerações dos Computadores e Evolução dos Recursos


Computacionais................................................................................................................................. 14

Linguagens de Programação.................................................................. 18
Conceitos Fundamentais............................................................................................................ 18

Classificação das Linguagens de Programação....................................................... 22

Infraestrutura dos Sistemas Computacionais.................................26


Unidade Central de Processamento (CPU)...................................................................26

Dispositivos de Entrada e Saída .......................................................................................... 30

Infraestrutura de Software.........................................................................................................33

Introdução à Lógica de Programação Algorítmica........................ 35


O que é Lógica?................................................................................................................................35

Algoritmos Computacionais.....................................................................................................37
Lógica de Programação 7

01
UNIDADE
8 Lógica de Programação

INTRODUÇÃO
Você sabia que compreender a área da Ciência da Computação,
sobretudo no que concerne a softwares e programação de computadores,
é fundamental para começar o entendimento da lógica de programação?
Isso mesmo. Conhecer a história e entender os conceitos relacionados à
Ciência da Computação é vital para o desenvolvimento das competências
de programação de computadores. Ao longo desta primeira etapa de
estudos, iremos desbravar todo esse conhecimento. Entendeu? Ao longo
desta unidade letiva você vai mergulhar neste universo!
Lógica de Programação 9

OBJETIVOS
Olá. Seja muito bem-vindo à Unidade 1. Nosso objetivo é auxiliar
você no desenvolvimento das seguintes competências profissionais até o
término desta etapa de estudos:

1. Entender a história dos computadores e a evolução dos recursos


computacionais.

2. Compreender o funcionamento e os vários paradigmas das


linguagens de programação.

3. Identificar e compreender a infraestrutura dos sistemas


computacionais, discernindo sobre hardware, software e
peopleware.

4. Definir e entender o conceito e as funcionalidades da lógica de


programação e algoritmos computacionais.
10 Lógica de Programação

Introdução à Computação
OBJETIVO:

Ao término deste Capítulo você será capaz de conhecer


a história dos computadores e a evolução dos recursos
computacionais. Isso será fundamental para o exercício
de sua profissão. E então? Motivado para desenvolver esta
competência? Então vamos lá. Avante!.

O Ábaco, Ossos de Napier e Auxílio


Mecânico para os Cálculos
O ábaco foi um dos primeiros instrumentos desenvolvidos para
auxiliar os humanos na realização de cálculos, muitos atribuem sua
criação à China, mas existem evidências dele na Babilônia do ano 300 a.C.
(MORAIS; AZEVEDO, 2017b). O próprio nome “computador” está associado
ao termo “contar”. E era isso que o ábaco fazia: ajudava as pessoas a
mecanizar o processo da contagem numérica, realizando as operações
de soma e subtração de maneira bastante visual e intuitiva (MORAIS;
AZEVEDO, 2017b), como podemos observar na Figura 1.
Figura 1 – O ábaco ajudava a mecanizar o processo da contagem numérica

Fonte: Freepik
Lógica de Programação 11

Em 1617, John Napier construiu um dispositivo simples e barato para


auxiliar os cálculos matemáticos, este ficou conhecido como “Ossos de
Napier” ou “Bastões de Napier”. Em 1642, o francês Blaise Pascal, aos 19
anos, criou a primeira calculadora mecânica do mundo, e esse dispositivo
ficou conhecido como “As rodas dentadas de Pascal” ou “Pascaline”
(MORAIS; AZEVEDO, 2017b).
Figura 2 – A primeira calculadora mecânica do mundo

Fonte: Wikimedia commons

O mecanismo de funcionamento da Pascaline é o mesmo utilizado


nos odômetros de carros, nos quais as engrenagens são organizadas de
tal forma a simular o “vai um” para a próxima casa decimal nas operações
de adição. Em 1801, Joseph-Marie Jacquard construiu a máquina de tecer
com cartões perfurados. Joseph era um costureiro que trabalhava com
desenhos em tecidos. No entanto, esse processo era demorado e isso o
levou a construir uma máquina para fazer os desenhos nos tecidos. Esse
mecanismo ficou conhecido como “tear programável”, pois, por meio
das instruções contidas nos cartões perfurados, a máquina cortava e
desenhava em tecidos.

Em 1820, Charles Babbage (matemático inglês), preocupado com


os erros contidos nas tabelas matemáticas de sua época, construiu
um modelo para calcular tabelas de funções (logaritmos, funções
trigonométricas etc.), sem a intervenção de um operador humano. Nascia,
então, a máquina diferencial de Babbage. Babbage projetou essa máquina
para ser composta por diversos discos giratórios operados por manivelas.
Em 1823, o governo britânico concordou em financiar a construção da
máquina de Charles Babbage (MORAIS; AZEVEDO, 2017b).
12 Lógica de Programação

Figura 3 – Máquina diferencial de Babbage

Fonte: Wikimedia commons

Todavia, as ferramentas da época não eram suficientemente


sofisticadas para construir a máquina. Babbage, então, gastou tempo
construindo ferramentas e, por diversas vezes, a construção da máquina
parou por falta de fundos.

SAIBA MAIS:

Veja o vídeo a seguir para saber mais sobre Babbage e suas


criações. Para acessar, clique aqui.

Em 1833, Babbage abandonou a ideia da máquina diferencial e


iniciou um trabalho em seu novo projeto, conhecido como máquina
analítica de Babbage. Essa máquina podia ser programada por meio de
cartões perfurados e calculava funções diferentes. Porém, a tecnologia
Lógica de Programação 13

pouco avançada da época não possibilitou que a máquina fosse


concluída e, somente um século depois, suas ideias foram postas em
prática. Para muitos, Charles Babbage é considerado o verdadeiro “pai”
da Computação. Em 1880, os dados do censo demográfico dos Estados
Unidos, que ocorria a cada 10 anos, levaram quase 8 anos para serem
processados. Dessa forma surgiu uma preocupação quanto ao tempo
necessário para processar os dados de 1890. Então, Herman Hollerith
(estatístico) foi designado pela Agência Estatística dos Estados Unidos
para desenvolver uma técnica de aceleração do processamento dos
dados daquele censo. Hollerith utilizou a ideia de Jackard e desenvolveu
a perfuradora de cartões, modo pelo qual os dados eram perfurados em
cartões, que podiam ser classificados por meio de pinos passando pelos
furos (MORAIS; AZEVEDO, 2017b).

A máquina de Hollerith era tão veloz que uma simples contagem


ficava pronta em seis semanas e, uma análise estatística completa, em
dois anos e meio. A população aumentara em cerca de 13 milhões de
pessoas durante a década anterior, até um total de 62.622.250 habitantes.
Mesmo assim, a tabulação do censo de 1890 demorou, aproximadamente,
um terço do tempo gasto por seu predecessor. A máquina de Hollerith
ficou mundialmente conhecida, tendo sido utilizada por vários países
em diversos segmentos de mercado. Assim, Hollerith montou uma
empresa chamada International Business Machines Corporation, mais
popularmente conhecida como IBM, uma marca forte e atuante até os
dias de hoje (MORAIS; AZEVEDO, 2017b).
14 Lógica de Programação

Gerações dos Computadores e Evolução


dos Recursos Computacionais
A primeira geração dos computadores (1946-1954) é marcada
pela utilização de válvulas. A válvula era um tubo de vidro, similar a uma
lâmpada, que aquecia bastante e costumava queimar com facilidade. O
armazenamento dos dados desses computadores era feito, inicialmente,
através de cartões perfurados. Posteriormente, esse armazenamento
passou a ser feito por meio de fitas magnéticas. Esses computadores
eram máquinas extremamente grandes, chegando a ocupar áreas da
ordem de 180 m². Outra característica desses computadores era que,
para programá-los, costumava-se levar muito tempo. Desde o primeiro
computador eletrônico inventado, o processo evolutivo daquelas máquinas
foi célere e intenso. Após a primeira geração, houve muitas outras até
que chegássemos às atuais máquinas em uso. Farias e Medeiros (2013),
trazem os principais acontecimentos, conforme as respectivas décadas.
A segunda geração (1952-1964) foi marcada pela substituição da válvula
pelo transistor, que eram menores que as válvulas a vácuo e tinham outras
vantagens: não exigiam tempo de pré-aquecimento, consumiam menos
energia, geravam menos calor e eram mais rápidos e confiáveis (MORAIS;
AZEVEDO, 2017b).

A terceira geração (1964-1977) foi marcada pela utilização dos


circuitos integrados, feitos de silício. Essa geração se caracterizou pelo
advento dos microchips. Seu processo de fabricação possibilitava a
construção de vários circuitos simultaneamente, facilitando a produção
em massa. A quarta geração (1977-1991) é caracterizada pelo surgimento
dos microprocessadores – unidade central de processamento. Sistemas
operacionais como MS-DOS, Unix e CP/M eram os utilizados à época.
Linguagens de programação orientadas a objeto como C++ e Smalltalk
foram desenvolvidas e discos rígidos eram utilizados como memória
secundária. As impressoras matriciais e os teclados com layouts atuais
foram criados nessa época. A quinta geração é iniciada no ano de 1991. Os
computadores da quinta geração usam processadores com milhões de
circuitos integrados, essa geração é marcada pela Inteligência Artificial e
sua conectividade (MORAIS; AZEVEDO, 2017b).
Lógica de Programação 15

Em relação à evolução dos recursos computacionais, é evidente


que ao armazenarmos algo, esse algo pode ser quantificado, por
exemplo, podemos armazenar água em um reservatório e, para sabermos
a quantidade armazenada, podemos nos basear no seu volume. Este é
medido em litros (l) ou metros cúbicos (m3). No mundo da Informática,
os dados são transmitidos e armazenados, portando, também podem ser
quantificados e mensurados em unidades de medida. Os computadores
trabalham com diversas unidades de medidas, então, vamos esclarecer
algumas das mais importantes, começando pelo fato que consegue
mensurar a capacidade de armazenamento de dados (MORAIS; AZEVEDO,
2017b).

O computador armazena dados em sua memória, reservando um


pequeno espaço denominado “byte”. Cada byte consegue representar um
pequeno fragmento de dado, que podemos chamar de “caractere”. Este
pode ser um algarismo de 0 a 9, uma letra do alfabeto de A a Z, ou um
símbolo especial, como &, @, - etc. Um byte, ou um conjunto deles, pode,
ainda, representar um ponto luminoso na tela do computador ou uma
nota musical que compõe uma canção armazenada em sua memória
(MORAIS; AZEVEDO, 2017b).

VOCÊ SABIA?

Um byte pode, ainda, ser subdividido em fragmentos


menores. Um byte é, na realidade, uma combinação de 8
bits. Estes são sinais binários, representados pelos números
0 e 1. Cada bit, portanto, pode equivaler a zero ou a um.
Internamente, esses sinais binários são simulados pela
presença ou ausência de corrente elétrica dentro do chip.

Agora que você entendeu o que são bits e bytes, observe o quadro
1, que mostra as diferentes unidades de medida de armazenamento de
um computador, em bytes.
16 Lógica de Programação

Quadro 1 – Unidades de medida de armazenamento de dados

Fonte: Morais e Azevedo (2017a).

Outra medida importante para os computadores diz respeito à


velocidade de processamento, chamada de megahertz. Um megahertz,
ou MHz, equivale a 1 milhão de ciclos por segundo, ou seja, 106 (10 elevado
à sexta potência), diferentemente de megabyte, que, como vimos, utiliza
outro tipo de potenciação: a de base dois (210 = 1.024).
Quadro 2 – Unidades de medida de velocidade de processamento

Fonte: Morais e Azevedo (2017a).


Lógica de Programação 17

Um termo comumente utilizado no mercado de informática é


“Clock”. Ao adquirir um computador, você pode se referir à sua velocidade
de processamento usando esse termo, que significa, na realidade,
a frequência com que o processador pergunta para a placa-mãe
(motherboard) se há alguma instrução a ser processada.

RESUMINDO:

E então? Gostou do que lhe mostramos? Aprendeu mesmo


tudinho? Agora, só para termos certeza de que você
realmente entendeu o tema de estudo deste Capítulo, vamos
resumir tudo o que vimos. Você deve ter aprendido que a
Informática nasceu da ideia de auxiliar o homem nos trabalhos
rotineiros e repetitivos, geralmente, ligados à área de Cálculo
e Gerenciamento. Desse modo, conhecer a história dos
computadores é importante, pois é por meio do estudo do
passado que podemos compreender e valorizar o presente.
A história dos computadores está relacionada ao ábaco e aos
Ossos de Napier, além dos métodos de auxílio mecânico para
os cálculos. A primeira geração dos computadores se deu no
período de 1946 a 1954; a segunda geração no período de
1952 a 1964; a terceira geração no período de 1964 a 1977; a
quarta geração de 1977 a 1991; e a quinta geração foi iniciada
no ano de 1991. Além disso, importante conhecer a evolução
dos recursos computacionais, nos quais estão relacionados
a unidade de armazenamento de dados e a unidade de
velocidade de processamento.
18 Lógica de Programação

Linguagens de Programação
OBJETIVO:

Ao término deste Capítulo você será capaz de entender o


funcionamento e os vários paradigmas das linguagens de
programação. Isso será fundamental para o exercício de
sua profissão. E então? Motivado para desenvolver esta
competência? Então vamos lá. Avante!.

Conceitos Fundamentais
É importante entender que o computador é dividido em duas partes
bem distintas: o hardware e o software. O hardware é tudo o que é físico no
computador, como teclado, monitor, mouse etc. Já o software diz respeito
a tudo que não se pode “tocar”, como programas (aplicativos) e dados. É
com foco no software que iremos discorrer sobre os temas ao longo desta
aula, para que você possa entender exatamente o que são e para que
servem programas, dados e linguagens de programação (SOUSA, 2014).

Você sabe o que é um programa? Não estamos nos referindo ao


seu programa de final de semana – esse você certamente conhece bem.
Estamos nos referindo aos programas de computadores, que realizam
todas as tarefas que estamos acostumados a ver, como processar dados,
imprimir informações, fazer a leitura de uma imagem por meio de um
scanner etc. Enfim, toda e qualquer operação que solicitamos que sejam
executadas, até aquelas que são feitas por iniciativa própria do computador.
Mas, espera aí! Quem está por traz de tudo o que o computador faz?
Somos nós? Ou há mais alguém? A resposta para essa pergunta é dúbia:
somos nós, sim, mas por meio dos programas que escrevemos para eles,
que são como cartas escritas para orientá-los a executar procedimentos
(comandos ou instruções) (MORAIS; AZEVEDO, 2017a).
Lógica de Programação 19

Figura 4 – Um programa de computador realiza as tarefas como processar dados e imprimir


informações

Fonte: Freepik

Programas são conjuntos de instruções, ordenadas logicamente,


com vistas à realização de um ou mais procedimentos, que podem ser
executados por meio de um comando ou de outro programa. Podemos
ampliar ainda mais esse conceito, pensando em termos do software
como um todo. Você sabe qual a é diferença entre programa e software?
Podemos entender um programa como um software, mas nem todo
software é um programa. Software é tudo aquilo que não se toca em um
sistema computacional, logo, os dados e as informações também devem
ser considerados como software, pois nelas também não podemos tocar.
Agora, podemos não só ampliar o conceito de software, como lançar mais
algumas definições, como as de dados que são conjuntos de fragmentos
de informações que, processados por um programa, transformam-se
em informações. Informações que são conjuntos de dados capazes de
mudar o estado de conhecimento de alguém sobre algo, podendo ser
exteriorizada em várias mídias distintas, como relatórios de papel, textos
exibidos em monitores de vídeo, gráficos, sons, objetos em 3D etc. Já as
instruções são comandos escritos em um programa, executados apenas
quando esse programa é submetido a um comando ou outro programa.
Em relação ao conceito de software, também é importante conhecer a
definições de comandos.
20 Lógica de Programação

DEFINIÇÃO:

Comandos são palavras imperativas (verbos) que ordenam


um processamento específico por parte do computador,
como um procedimento ou a execução de um programa.

Os comandos, assim como as instruções de um programa, são


escritos de acordo com uma sintaxe (regra gramatical) que deve ser
compreendida pelo sistema operacional, pelo compilador ou pelo
interpretador de programas. Cabe aos sistemas operacionais compreender
a sintaxe dos comandos. Por exemplo, o Windows reconhece o comando
“DIR”, que ordena a exibição do conteúdo de uma pasta em um disco
rígido, ou em outro dispositivo de memória auxiliar qualquer. A Figura
5 mostra claramente como um comando é digitado, submetido ao
computador e, como consequência, as informações são devolvidas após
o processamento dos dados.
Figura 5 – Prompt de comando do Windows executando o comando “DIR”

Fonte: Elaborado pelo autor (2021).


Lógica de Programação 21

Para testar o comando “DIR” do sistema operacional Windows,


clique na ferramenta de pesquisa da barra de tarefas e digite “PROMPT”.
Isso fará aparecer a opção “Prompt de comando” no menu, basta clicar
em cima dela. Dizemos, então, que o comando “DIR” é escrito em uma
linguagem que o Windows entende, mas, e quanto ao programa que
é executado pelo comando “DIR”? Ele existe. Afinal, não é tão simples
assim ler todas as informações de uma pasta em um disco e exibi-la
na tela do computador com todos aqueles detalhes e formatos. Para
isso, uma sequência de outros comandos é executada internamente, e
a essa sequência damos o nome de “programa”. Então, assim como o
comando “DIR”, todos os outros comandos são, na realidade, programas
que executam uma série de procedimentos conforme as instruções neles
previamente programadas. Para tanto, essas instruções também têm que
obedecer uma sintaxe. Pronto! Chegamos à definição de “linguagem de
programação”.

DEFINIÇÃO:

Linguagem de programação é um conjunto de regras


sintáticas cuja finalidade é orientar a escrita das instruções
de um programa..

Com isso, queremos dizer que, assim como a língua portuguesa


tem uma gramática e um dicionário, toda e qualquer linguagem de
programação também deve ter esses dois atributos. O primeiro é a
gramática, que trata-se do conjunto de regras de sintaxe que determinam
como as instruções devem ser empregadas em um programa. E dicionário
é o conjunto de palavras que definem as instruções aceitas pela linguagem
de programação.
22 Lógica de Programação

Classificação das Linguagens de


Programação
Existem muitas linguagens de programação no mercado de
informática. Se formos considerar aquelas que não mais existem, podemos
afirmar que a quantidade de linguagens de programação se aproxima do
número de idiomas oficiais do planeta. Diante de tantas linguagens, vamos
classificá-las em três grupos, sendo o primeiro possuidor de apenas uma
única linguagem, como mostra o diagrama a seguir (MORAIS; AZEVEDO,
2017b).
Figura 6 – Classificação das linguagens de programação

Fonte: Morais e Azevedo (2017b).

Sobre a linguagem de máquina, é a linguagem realmente entendida


pelo computador. Ela é composta por comandos binários (0 e 1), o que
as torna, praticamente, inacessíveis aos programadores convencionais.
Cada família de processador estabelece uma linguagem de máquina
própria, composta, basicamente, por endereços de memória e comandos
de movimentação de bytes entre esses endereços. Já as linguagens de
baixo nível, para ter acesso à linguagem de máquina, deve-se utilizar uma
linguagem de programação inteligível ao ser humano. Existe, como já
Lógica de Programação 23

dissemos, uma enormidade delas, um exemplo relacionada à linguagem


de máquina é o Assembly (ou linguagem montadora). Essa linguagem,
apesar de ser inteligível ao homem, é de alta complexidade e de difícil
compreensão. Dizemos, então, que o Assembly é uma linguagem de
baixo nível (ASCENCIO; CAMPUS, 2012).

IMPORTANTE:

Alguns autores defendem a existência de dois grupos


de linguagem de programação: os de baixo nível e os de
alto nível, considerando que a linguagem de máquina é
uma linguagem de baixo nível. Outros autores isolam a
linguagem de máquina dessa classificação, diferenciando-a
das demais, assim, para efeito desta obra, poderemos nos
referir, eventualmente, às linguagens de máquina como
sendo de baixo nível.

Antes de prosseguirmos, precisamos entender que o computador


só entende uma única linguagem: a de máquina, todas as outras precisarão
ser convertidas para ela. A esse processo de conversão damos o nome
de “compilação”. Para isso, um programa, para ser executado por um
computador, precisará ser compilado por outro, intitulado “compilador”
(MORAIS; AZEVEDO, 2017a).

DEFINIÇÃO:

Compilador é um programa, escrito em linguagem de


máquina, capaz de traduzir outro programa, escrito em
uma linguagem de baixo ou alto nível, para a linguagem de
máquina, gerando o que chamamos de “programa-objeto”
ou “programa-executável”.

Já com as linguagens de alto nível, com a popularidade dos


computadores, foi criado um problema: alta demanda por software e,
consequentemente, por programadores. Aparentemente, isso não é um
problema, e sim uma oportunidade, uma tendência, um novo mercado,
o que faz sentido até certo ponto. O problema era encontrar mão de
24 Lógica de Programação

obra qualificada para criar códigos que as máquinas pudessem executar;


à época, só havia linguagens de baixo nível no mercado. Devido à
necessidade de facilitar a maneira como os humanos poderiam escrever
comandos para as máquinas, surgiram as linguagens de alto nível. Estas
têm a característica de serem mais amigáveis para o entendimento
humano. Podemos citar como exemplos de linguagem de programação
de alto nível: ASP, ActionScript, C++, C#, Pascal, Object Pascal, Euphoria,
Java, JavaScript, Lua, MATLAB, PHP, Python, Ruby, Basic, Visual Basic,
entre muitas outras. O processo de compilação de um programa escrito
em linguagem de alto nível se dá, normalmente, por meio de duas etapas.
Conforme ilustrado na Figura 7, percebemos que os programas de alto
nível são compilados, primeiramente, para uma linguagem de baixo nível,
para somente então serem convertidos para a linguagem de máquina
(MORAIS; AZEVEDO, 2017a).
Figura 7 – O processo de compilação de um programa escrito em linguagem de alto nível

Fonte: Morais e Azevedo (2017b).

Programa-fonte é o programa escrito em linguagem de baixo ou alto


nível, que é submetido ao processo de compilação. Já programa-objeto
é o programa resultante do processo de compilação do programa-fonte,
sendo gerado na linguagem de máquina pelo compilador. O processo
de compilação, em alguns casos, torna-se moroso, comprometendo a
produtividade da equipe de desenvolvimento de software das empresas.
Por isso, com o advento das linguagens de alto nível, criou-se o conceito
de interpretação de programas como alternativa à compilação.
Lógica de Programação 25

SAIBA MAIS:

Para se aprofundar mais no assunto, recomendamos o


acesso ao vídeo a seguir. Para acessar, clique aqui.

Em termos práticos, a interpretação dispensa a geração de


programas-objeto, ou seja, os interpretadores leem os programas-fontes
e interagem diretamente com o computador, instrução a instrução.
O interpretador é o programa que permite a execução direta de um
programa-fonte, sem a necessidade de criação de um programa-objeto.
Em uma linguagem de programação interpretada, o processo ocorre
como se a compilação se desse instantaneamente a cada instrução
executada, em tempo real.

RESUMINDO:

E então? Gostou do que lhe mostramos? Aprendeu


mesmo tudinho? Agora, só para termos certeza de
que você realmente entendeu o tema de estudo deste
Capítulo, vamos resumir tudo o que vimos. Você deve ter
aprendido que programas são escritos em linguagens
de programação, que reúnem conjuntos de instruções
ordenadas logicamente com vistas à realização de um
ou mais procedimentos. Esses programas são acionados
por meio de comandos, e têm por objetivo ler dados
e submetê-los a um processamento, de modo a obter
uma informação relevante ou uma ação automatizada.
As linguagens de programação podem ser de máquina
(aquela que dialoga diretamente com os componentes de
hardware em sistema binário), de baixo nível (aquelas que
são lidas por compiladores para a geração de programas
em linguagem de máquina) ou de alto nível (as que têm
uma sintaxe mais amigável, mas que necessitam de
interpretadores ou compiladores capazes de gerar um
programa em linguagem de baixo nível, para somente
depois ser traduzido para a linguagem de máquina).
26 Lógica de Programação

Infraestrutura dos Sistemas


Computacionais
OBJETIVO:

Ao término deste Capítulo você será capaz de compreender


a infraestrutura dos sistemas computacionais, discernindo
sobre hardware e software. Isso será fundamental para
o exercício de sua profissão. E então? Motivado para
desenvolver esta competência? Então vamos lá. Avante!.

Unidade Central de Processamento (CPU)


Uma das principais características dos computadores é a
capacidade de processar dados e informações de maneira rápida e
precisa, o principal componente responsável por essa característica é
a CPU. Esta é o componente vital dos sistemas computacionais, sendo
responsável pela realização das operações de processamento, tais como
adição, subtração, multiplicação, divisão, entre outras.
Figura 8 – A unidade central de processamento é o componente vital dos sistemas
computacionais

Fonte: Freepik
Lógica de Programação 27

Basicamente, a função da CPU é buscar as instruções na memória


do computador, interpretar essas instruções que estão explicitadas na
memória, buscar dados, executar operações com esses dados e guardá-
los de volta na memória. O processador é divido em três partes principais:

•• Unidade de controle (UC).

•• Unidade lógica e aritmética (ULA).

•• Banco de registradores.

Sobre a UC, esta tem como função buscar e decodificar as instruções


a serem executadas. Além disso, decide como e quando as outras unidades
serão ativadas. As instruções a serem executadas podem direcionar
dados para a ULA ou diretamente para o banco de registradores. Digamos
que a UC é sistema nervoso central do computador, fazendo um paralelo
com a mente humana. A ULA, como o próprio nome já permite perceber,
é a unidade cuja principal responsabilidade é executar as operações
lógicas e aritméticas exigidas pelas tarefas emanadas dos programas em
execução. Os dados numéricos a serem processados são enviados pela
UC e a ela são devolvidos para armazenamento ou outra destinação. Já
o banco de registradores tem o papel de servir como um assistente de
acesso rápido. Em resumo, esse componente representa uma memória
temporária para armazenagem de tudo o que está sendo processado
pela ULA e/ou direcionado pela UC. Nele, são guardadas as instruções
em execução, dados numéricos utilizados em cálculos e outros dados
que precisem ser temporariamente armazenados para dar celeridade ao
processamento. Não devemos confundir banco de registradores com a
memória RAM do computador. Veremos, mais adiante, que a memória
RAM armazena dados por mais tempo que o banco de registradores
(MORAIS; AZEVEDO, 2017c).

SAIBA MAIS:

Veja o vídeo a seguir para conhecer mais sobre os


processadores. Para acessar, clique aqui.
28 Lógica de Programação

Sobre a memória do computador, esta pode ser definida como


um componente que tem a capacidade de armazenar dados. Estes são
armazenados em pequenas células, onde todos os programas e dados
em execução ficam guardados por muito ou pouco tempo, dependendo
do tipo de memória. A memória do computador pode ser dividida,
inicialmente, em dois tipos (MORAIS; AZEVEDO, 2017c):

1. Memória principal – onde ficam armazenados apenas os dados e


programas em uso no momento.

2. Memória auxiliar – onde são guardadas as informações em caráter


definitivo, só sendo apagadas por meio de comandos intencionais
por parte do usuário.

A memória principal pode ser dividida em três tipos: RAM, ROM e


flash, a Random Access Memory (RAM) – memória de acesso direto ou
memória viva) é a memória principal do sistema, ou seja, um espaço para
armazenar os dados, de maneira temporária, durante a execução de um
programa. Na verdade, ao contrário do armazenamento de dados em
uma memória de massa como o disco rígido, a memória RAM é volátil,
isto é, ela permite armazenar dados somente enquanto estiver sendo
alimentada eletronicamente. Assim, cada vez que o computador for
desligado, todos os dados presentes na memória RAM serão apagados
definitivamente (MORAIS; AZEVEDO, 2017c).
Figura 9 – A RAM é a memória principal do sistema

Fonte: Freepik
Lógica de Programação 29

A Read Only Memory (ROM) – memória somente para leitura,


ou memória morta) é um tipo de memória que permite conservar as
informações contidas no dispositivo mesmo quando ele estiver desligado.
A base desse tipo de memória só pode ser acessada em leitura, contudo,
é possível salvar informações em certos tipos de memórias ROM, como
veremos a seguir. A memória flash é um misto entre as memórias de tipo
RAM e ROM. Esse tipo de memória é não volátil, assim como as memórias
mortas, ou seja, foram projetadas apenas para serem lidas. Por outro lado,
as memórias flash podem ser regravadas pelo fabricante, pois os chips
que as compõem são similares aos que compõem as memórias RAM
(MORAIS; AZEVEDO, 2017c).

IMPORTANTE:

A memória principal do computador se refere a uma


coleção de registradores enumerados sequencialmente,
em que cada uma tem um tamanho, chamado de “tamanho
da palavra”. Cada registrador tem uma localização fixa na
memória, chamada de “localização de memória”. Ao número
único que identifica cada palavra na memória, damos o
nome de “endereço”. Para quem trabalha com linguagens
de baixo nível, como Assembly, esse conhecimento é
fundamental, no entanto, para linguagens de alto nível,
esse conhecimento pode ser abstraído.

Em relação aos barramentos, estes têm a responsabilidade de


interligar os componentes internos de um computador, de modo que a
comunicação entre eles seja rápida e eficiente. A Figura 10 mostra como
os barramentos conseguem interligar os componentes funcionais básicos
de um computador.
30 Lógica de Programação

Figura 10 – Função dos barramentos que têm a responsabilidade de interligar os


componentes internos de um computador

Barramentos

UCP MEMÓRIA PRINCIPAL

Controladores

E/S

Fonte: Morais e Azevedo (2017c).

Na Figura 10, é possível observar que os controladores (da UC)


gerenciam os fluxos de dados entre a CPU (processador), a memória
principal e os dispositivos de entrada e saída (E/S). Estes serão alvo de
estudo na sequência.

Dispositivos de Entrada e Saída


Chamamos de “periféricos” todos os equipamentos (ou dispositivos)
conectáveis ao computador. Esses equipamentos permitem a troca de
dados e informações entre o usuário e o computador. Cada periférico tem
sua função específica e serve para enviar e/ou receber dados ou tarefas
do computador. Da diversidade de dispositivos existentes, podemos
mencionar os periféricos mais comuns:

•• Monitor de vídeo.

•• Teclado.

•• Mouse.

•• Impressora.
Lógica de Programação 31

•• Unidades de armazenamento externas (discos rígidos, cartões de


memória, pen drives etc.).

•• Caixas acústicas e fones de ouvido.

•• Microfones.

•• Câmeras (webcam).

•• Óculos 3D e de 360 graus para realidade virtual/aumentada.

•• Unidade leitoras e gravadoras de CD­ROM e DVD­ROM.

Os periféricos podem, ainda, ser classificados como dispositivos de:

1. Entrada (E).

2. Saída (S).

3. Entrada/Saída (E/S).

Os periféricos de entrada são os dispositivos exclusivos para


a entrada de dados no computador. Por meio deles, o usuário envia
dados à CPU para serem processados. Alguns desses dispositivos são
essenciais ao sistema, pois sem eles seria impossível interagir com o
sistema computacional. Podemos destacar o teclado e o mouse (MORAIS;
AZEVEDO, 2017c).
Figura 11 – Os periféricos de entrada são os dispositivos exclusivos para a entrada de dados
no computador, sendo o teclado e o mouse exemplos

Fonte: Freepik
32 Lógica de Programação

Os periféricos de saída são os dispositivos exclusivos para a saída de


informações vindas da CPU. Por meio desses dispositivos o usuário recebe
o resultado do processamento do computador. Temos como exemplos
dessa categoria de dispositivos: monitores de vídeo, impressoras, plotters,
caixas acústicas, fones de ouvido, entre outros (MORAIS; AZEVEDO, 2017c).
Figura 12 – Os periféricos de saída são os dispositivos exclusivos para a saída de
informações originadas da CPU

Fonte: Freepik

Os periféricos de entrada e saída são dispositivos que tanto


transmitem dados quanto os recebem. Esses dispositivos são responsáveis
pela comunicação máquina a máquina ou pelo armazenamento
persistente de dados. Temos como exemplos típicos desses dispositivos:
interfaces de rede, gravadores de CD e DVD, pen drives, cartões de
memória, monitores sensíveis ao toque (touch screen), entre outros.
Lógica de Programação 33

Infraestrutura de Software
Para fazer um computador funcionar, não basta o hardware. De
nada adiantaria toda a arquitetura que acabamos de estudar se não fosse
um conjunto de programas que é executado a cada vez que ligamos o
computador. Estamos falando do software básico que todo computador
necessita para manter-se ativo e operante. Esse tipo de software define o
padrão de comportamento do computador, de modo a torná-lo utilizável.
São exemplos de software básico (TAVARES, 2006):

•• BIOS – trata-se de um acrônimo para Basic Input/Output System


ou sistema básico de entrada e saída. Esse software já vem
instalado de fábrica na memória ROM do computador, tendo por
finalidade inicializar algumas tarefas consideradas vitais em um
computador.

•• Sistema operacional: após a execução do BIOS, é esse software


que assume total controle sobre o computador, interpretando
os comandos e as ações realizadas pelo usuário. Os sistemas
operacionais mais comuns no mercado mundial são o Windows
(da Microsoft), o MacOS (da Apple) e o Linux (sistema operacional
gratuito e de código-fonte aberto, não pertencendo a nenhuma
empresa especificamente).

•• Os sistemas operacionais já perpassaram os velhos PCs e


notebooks, e já estão invadindo os smartphones. Para esses
dispositivos móveis, outros sistemas operacionais entram em
cena, como o Android (do Google) e o iOS (da Apple). O Windows
Mobile (da Microsoft) foi descontinuado em 2017, e representava
a terceira força nesse cada vez mais disputado mercado mundial.
Outras versões denominadas como Windows Phone surgiram,
a versão chamada de Windows 11 permite, por meio de uma
parceria entre Microsoft, Amazon e Intel, executar os aplicativos
do Android. Dessa maneira, é importante estar sempre atualizando
as versões para smartphone.

Sobre software utilitário, estes servem de complementação para


os softwares básicos, ou seja, são programas que têm funcionalidades
34 Lógica de Programação

mais voltadas para o sistema operacional. Como exemplos desse tipo de


software podemos citar as ferramentas para organizar os discos, verificador
de disponibilidade de memória, corretor de falhas de processamento,
entre muitos outros. Boa parte dos programas utilitários são fornecidos
pelo próprio fabricante do sistema operacional, incluídos no pacote
vendido ou previamente instalado de fábrica. No entanto, existem
outros softwares utilitários que podem ser adquiridos e/ou instalados
de forma separada, como antivírus, firewalls (proteção contra hackers),
compactadores de arquivos (como WinZip, WinRAR etc.), programas para
conexão com redes, entre outros (TAVARES, 2006).

Os softwares aplicativos são programas voltados para a solução de


problemas dos usuários, podendo ser divididos em duas categorias: uso
geral e uso específico. Os de uso geral são aqueles programas que todos
podem usar, independentemente de suas áreas de atuação ou interesse.
Esses softwares se prestam para as mais variadas aplicações, como: editores
de texto, geradores de gráficos, planilhas eletrônicas, gerenciadores de
bancos de dados, linguagens de programação etc. Já os de uso específico
são destinados, exclusivamente, a um único tipo de aplicação, como folha
de pagamento, crediário, imposto de renda, cadastro, contas a pagar e
receber, contabilidade etc. (MORAIS; AZEVEDO, 2017c).

RESUMINDO:

E então? Gostou do que lhe mostramos? Aprendeu


mesmo tudinho? Agora, só para termos certeza de
que você realmente entendeu o tema de estudo deste
Capítulo, vamos resumir tudo o que vimos. Você deve ter
aprendido que conhecer o que se passa por traz da tela do
computador é algo muito importante para todo e qualquer
profissional da área de Tecnologia da Informação. Além de
componentes eletrônicos, programas e dados, existe toda
uma organização dentro de um sistema computacional.
Saber discernir sobre cada um de seus elementos,
entendendo sua funcionalidade, é um pré-requisito básico
para quem quer se tornar um programador ou fazer parte
de um suporte técnico no mercado de Informática.
Lógica de Programação 35

Introdução à Lógica de Programação


Algorítmica
OBJETIVO:

Ao término deste Capítulo você será capaz de definir e


entender o conceito e as funcionalidades da lógica de
programação e algoritmos computacionais. Isso será
fundamental para o exercício de sua profissão. E então?
Motivado para desenvolver esta competência? Então
vamos lá. Avante!.

O que é Lógica?
Damos início a este tópico debatendo um pouco sobre nosso
cotidiano, isso mesmo, falaremos sobre as atividades que desempenhamos
no dia a dia, como tomar café, ir à escola ou até mesmo ao trabalho. Toda
ação que executamos, nos remete a um objetivo final, por exemplo,
quando estamos com fome, sempre vamos atrás de saná-la, por meio
da alimentação. Dessa forma, toda tomada de decisão em um algoritmo
computacional deve ser baseada na lógica de atingir algum objetivo. O
termo “lógica” está associado à análise que estuda as proposições e seus
membros componentes. Já Forbellone (2005) diz que:
a lógica pode estar relacionada com a correção do
pensamento, pois uma de suas preocupações é
determinar quais operações são válidas e quais não são,
fazendo análises das formas e leis do pensamento. Ainda
sob a ótica do autor, ela nos ensina a usar corretamente as
leis do pensamento, ou seja, ensina a colocar ordem no
pensamento. (FORBELLONE, 2005, p. 1)

A lógica está interligada à solução de algum problema que traz


características que não estão relacionadas à determinada situação.
Por exemplo, se precisamos realizar cálculos matemáticos, e nossa
calculadora não está realizando as quatro operações matemáticas de
forma correta, então, temos um problema a ser resolvido. E é por meio da
lógica matemática que conseguimos visualizar essa situação problemática
36 Lógica de Programação

e trazer uma ou mais possíveis soluções. A lógica computacional traz um


conceito de solução de problemas, podendo, muitas vezes, ser aplicada a
diversas situações do nosso cotidiano. Outro exemplo: quando inserimos
um endereço em um GPS e ele nos retorna diversas possíveis rotas,
aplicamos certa lógica para escolher a rota mais adequada para nós, seja
pela quilometragem ou pelo tipo de estrada.
Figura 13 – Quando indicamos um endereço em um GPS e nos retorna diversas possíveis
rotas são aplicadas certas lógicas para a escolha da mais adequada

Fonte: Freepik

A lógica não deve estar ligada apenas aos conceitos que norteiam
a matemática. Para utilizá-la em benefício da solução dos problemas
computacionais, precisamos aplicá-la aos recursos disponíveis nos
sistemas computacionais. Por exemplo, a lógica necessária para trocar o
pneu de um carro articula recursos como macaco, parafusos, pneu, roda
etc. Já na programação do computador para ler um arquivo de dados e
imprimir um relatório, envolvemos outros recursos, como memória, disco,
dados, impressora e papel. Contudo, tanto em um caso quanto em outro,
a forma de raciocinar é a mesma: juntar comandos e manipular recursos
para atingir um objetivo específico ao final do processamento. Uma
definição bastante completa sobre lógica de programação foi lançada por
Forbellone (2005), que a conceitua como:
o uso correto das leis do pensamento da ordem da
razão e de processos de raciocínio e simbolização
formais na programação de computadores, objetivando
a racionalidade e o desenvolvimento de técnicas que
Lógica de Programação 37

cooperem para a produção de soluções logicamente


válidas e coerentes, que resolvam com qualidade os
problemas que se deseja programar. (FORBELLONE, 2005,
p. 14)

A lógica de programação computacional é aplicada, por exemplo,


na seleção e determinação das instruções que devem ser executadas
para que o problema seja solucionado. Por meio de sua aplicação,
podemos ter resultados lógicos que irão satisfazer nossas condições, ou
seja, nenhuma instrução é inserida sem uma funcionalidade.

DEFINIÇÃO:

A lógica de programação, portanto, pode ser definida como


a técnica necessária para nortear o desenvolvimento de um
software, que deve seguir certas regras para atingir o seu
objetivo.

Algoritmos Computacionais
Podemos fazer uso de variados modos para representar a solução
de um problema, computacional ou não. Ao definir um conjunto de regras
sintáticas para expressar raciocínios e operações necessárias à solução
de uma classe de problemas, tem-se um algoritmo. Se tais problemas
forem de cunho computacional, tem-se um algoritmo computacional.

DEFINIÇÃO:
Algoritmo computacional é uma visão esquemática sobre
a solução de uma classe de problemas computacionais,
podendo ser representado gráfica ou textualmente, por meio
de um pseudocódigo escrito em uma pseudolinguagem.

Para entendermos melhor o conceito de algoritmo computacional,


vamos imaginar a representação gráfica do seguinte problema: decidir
qual o maior entre dois números lidos pelo computador. Um problema
38 Lógica de Programação

simples deve apresentar uma solução igualmente simples, portanto,


podemos representar essa solução algorítmica de duas maneiras:
graficamente ou textualmente, como apresentado na Figura 14 (MORAIS;
AZEVEDO, 2017d).
Figura 14 – Representação algorítmica graficamente por meio de fluxograma

Fonte: Morais e Azevedo (2017d).

Observe que a solução algorítmica adotada na Figura 14 está sendo


representada graficamente por uma simbologia denominada “fluxograma”.
Nessa solução, foram adotados comandos visuais, compreensíveis
facilmente por qualquer um, de forma bastante intuitiva. Contudo, para
isso, foi necessário estabelecer um dicionário de comandos, que, nesse
caso, contemplou conforme representado na Figura 15.
Lógica de Programação 39

Figura 15 – Destaque para os comandos visuais do fluxograma, por meio do


estabelecimento de um dicionário de comandos

Marca o início ou o término de um algoritmo.

Lê ou exibe um dado/informação.

Executa um procedimento.

Desvia o fluxo de procedimentos conforme a condição


descrita.

Desvia o fluxo de procedimentos para outro algoritmo.

Fonte: Morais e Azevedo (2017d).

Outro modo de representar uma solução algorítmica é por meio


de textos, ou pseudocódigos. Do grego, “pseudo” significa falso, o que
faz do pseudocódigo um código escrito em uma linguagem que, na
prática, não existe. Em outras palavras, evidencia uma forma genérica de
escrever um algoritmo, utilizando uma linguagem simples, compreensível
por qualquer pessoa, sem que esta conheça a sintaxe de linguagem de
programação. Transcrevendo o algoritmo esquematizado no fluxograma
anterior, poderíamos escrever o seguinte pseudocódigo:
Figura 16 – Pseudocódigo

Fonte: Elaborada pelo autor (2021).


40 Lógica de Programação

Perceba que ambas as representações algorítmicas conseguem


solucionar o mesmo problema, com exatamente o mesmo ordenamento
lógico. O que as diferencia é a semântica da linguagem. Enquanto na primeira
solução foi adotada uma linguagem visual (fluxograma ou diagrama de
blocos), na segunda foi utilizada uma linguagem natural, a própria língua
portuguesa. Assim como toda atividade que desempenhamos no nosso
dia a dia, algoritmizar uma solução computacional exige escolhas sábias.
Ascencio e Campus (2012) destacam os seguintes passos:

1. Ler atentamente o enunciado, destacando os pontos mais


importantes.

2. Definir os dados de entrada, ou seja, quais dados serão fornecidos.

3. Determinar o processamento, ou seja, quais cálculos serão


efetuados e quais são as restrições para esses cálculos. O
processamento é responsável pela transformação dos dados de
entrada em informações de saída.

4. Estabelecer as informações de saída, ou seja, quais informações


serão geradas depois do processamento.

5. Construir o algoritmo utilizando um dos tipos descritos


anteriormente.

6. Testar o algoritmo realizando simulações.

Podemos ter diversos algoritmos desenvolvidos de maneiras


diferentes, ou seja, com etapas distintas, mas que solucionam o mesmo
problema. Cada pessoa tem seu modo de pensar, dessa forma, não é
obrigatório que todos tenhamos a mesma ideia, ou até mesmo executemos
ações da mesma maneira.
Lógica de Programação 41

Figura 17 – Podem existir vários algoritmos desenvolvidos de com etapas diferentes, mas
que resolvem o mesmo problema

Fonte: Freepik

Conforme Manzano e Oliveira (2016), a norma ISO 5807-1985


para a definição e elaboração de diagramas de fluxos para a área de
Desenvolvimento e Projeto de Software é a consolidação de duas normas
anteriores: ISO 10282 e ISO 26363.

SAIBA MAIS:

Para se aprofundar nos temas desta Unidade,


recomendamos o acesso à seguinte fonte de consulta. Para
acessar, clique aqui.

Segundo a informação da própria ISO 5807-1985, a definição e a


elaboração de diagramas para a representação gráfica da linha de raciocino
lógico a ser adotada não deve restringir o uso de aplicações ou soluções
particulares. Uma vez que pode ocorrer a existência de vários tipos de
soluções para os vários problemas de processamento de informação
(MANZANO; OLIVEIRA, 2016). De maneira geral, existe uma enormidade
de linguagens de programação, desde as mais simples e intuitivas (de alto
nível), até as mais complexas e trabalhosas (de baixo nível). É importante
salientar que algoritmos são muito necessários para servir de elemento
cognitivo, ou seja, ajudar às pessoas no aprendizado da programação,
tornando mais fácil o entendimento da lógica de programação.
42 Lógica de Programação

RESUMINDO:

E então? Gostou do que lhe mostramos? Aprendeu mesmo


tudinho? Agora, só para termos certeza de que você
realmente entendeu o tema de estudo deste Capítulo,
vamos resumir tudo o que vimos. Você deve ter aprendido
que independentemente de que linguagem seja adotada,
para solucionar problemas computacionais é requerido
do programador uma habilidade específica: a lógica de
programação algorítmica. Não se trata de habilidade com
matemática ou algo do gênero. Estamos falando de uma
capacidade peculiar a todos os que conseguem visualizar
soluções racionais para problemas do dia a dia. O raciocínio
lógico, que é a base dessa habilidade, já é matéria cobrada
em quase todos os editais de concursos públicos, já sendo
ensinado em várias escolas de ensino fundamental e médio.
Quem desenvolve essa competência é capaz de aprender
rapidamente qualquer linguagem de programação, pois
a diferença de uma linguagem para a outra está apenas
na semântica e no dicionário de comandos. Programar
computadores para os profissionais da área deve ser uma
tarefa tão natural quanto escrever um pequeno manual
sobre como trocar o pneu de um carro.
Lógica de Programação 43

REFERÊNCIAS
ASCENCIO, A. F.; CAMPUS, E. A. Fundamentos da programação de
computadores. 3. ed. São Paulo: Prentice Hall, 2012.

BROOKSHEAR, G. J. Ciência da computação: uma visão abrangente.


11. ed. Porto Alegre: Bookman, 2013.

FARIAS, G.; MEDEIROS, E. S. Introdução à computação. Paraíba:


Universidade Aberta do Brasil, 2013.

FORBELLONE, A. L. Lógica de programação: a construção de


algoritmos e estrutura de dados. São Paulo: Pearson, 2005.

MANZANO, J. A.; OLIVEIRA, J. F. Algoritmos: lógica para


desenvolvimento de programação de computadores. 28. ed. São Paulo:
Érica, 2016.

MÁQUINA diferencial e analítica (1791-1871): história dos


computadores: pré-história. [S. l.: s. n.], 2018. 1 vídeo (6 min). Publicado
pelo canal Marks Tuto. Disponível em: https://www.youtube.com/
watch?v=s8IKAJxl75U&ab_channel=MarksTuto. Acesso em: 7 fev. 2022.

MORAES, P. S. Curso básico de lógica de programação. São Paulo:


Unicamp, 2000.

MORAIS, I.S.; AZEVEDO M. Lógica de programação: linguagens de


programação. Recife: Unissau, 2017a.

MORAIS, I.S.; AZEVEDO M. Lógica de programação: história dos


computadores. Recife: Unissau, 2017b.

MORAIS, I.S.; AZEVEDO M. Lógica de programação: infraestrutura


dos sistemas computacionais. Recife: Unissau, 2017c.

MORAIS, I.S.; AZEVEDO M. Lógica de programação: introdução à


lógica de programação algorítmica. Recife: Unissau, 2017d.

SOUSA, B. J.; DIAS JÚNIOR, J. J.; FORMIGA, A. A. Introdução à


programação. João Pessoa: UFPB, 2014.

TAVARES, A. L. et al. Engenharia de software: uma visão geral.


Palhoça: Unisul, 2006.

Você também pode gostar