Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Unidade 1
Lógica de Programação
Aula 1
Conceitos Introdutórios
Conceitos introdutórios
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante!
Nesta videoaula inaugural da disciplina, discutiremos sobre os fundamentos de algoritmos. A
área de programação é muito abrangente e cheia de oportunidades, por essa razão, nosso
objetivo é apresentar os conceitos essenciais de algoritmos, abordando os primeiros passos no
desenvolvimento de soluções bem elaboradas e de alta performance. Além disso, trataremos de
assuntos relativos à importância da programação, aos operadores aritméticos e aos tipos de
dados com exemplos práticos.
Não perca a oportunidade de agregar informações valiosas ao seu aprendizado e, assim,
expandir sua compreensão e entendimento sobre algoritmos. Junte-se a nós nesta jornada de
descobertas e fortaleça suas habilidades computacionais. 
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Olá, estudante! Seja bem-vindo à primeira aula de Algoritmos e Lógica de Programação,
Conceitos introdutórios da Lógica de programação.
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u1a1_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Nesta aula, vamos explorar os tópicos fundamentais do mundo da programação. Inicialmente,
abordaremos a importância de aprender a programar e como essa habilidade tornou-se
indispensável em diversos setores.
A programação deixou de ser apenas um conhecimento especí�co de pro�ssionais de tecnologia
e tornou-se uma competência valiosa em várias carreiras. Compreender os fundamentos da área
não apenas amplia as oportunidades pro�ssionais, como também desenvolve aptidões cruciais,
como raciocínio lógico, resolução de problemas e pensamento estruturado. A programação é,
pois, atualmente, uma ferramenta poderosa para transformar ideias em soluções tangíveis.
Além desses pontos, ao �nal desta aula, você vai compreender teoricamente o que são
operadores dentro da construção de algoritmos, bem como os tipos de dados existentes e como
estes são trabalhados dentro de aplicações computacionais.
Para ilustrar o conteúdo desta aula, imagine um restaurante movimentado, onde a equipe
enfrenta desa�os para registrar os pedidos dos clientes de maneira e�ciente e necessita de um
sistema que armazena informações essenciais sobre os pedidos do restaurante por meio de
instruções que tornem possível tal atividade.
Vamos dar os primeiros passos, caro estudante, na sua jornada de aprendizado. Explore o
material, mergulhe nos conceitos apresentados e pratique para fortalecer o entendimento do
assunto. A programação, lembre-se, é uma habilidade dinâmica que se aprimora com a prática
constante. Vamos juntos, assim, construir uma base sólida para a sua trajetória na área de
algoritmos. Aproveite a aula!
Vamos Começar!
O objetivo desta aula é apresentar uma introdução aos algoritmos, seus conceitos e de�nições,
suas principais características, além de inserir você, estudante, neste enorme cenário da
tecnologia.
Na era digital em que vivemos, a programação emerge como uma habilidade essencial,
moldando o setor tecnológico e permeando diversas áreas da sociedade. A capacidade de criar
algoritmos e desenvolver softwares não é somente um diferencial, mas também uma
competência importante para enfrentar os desa�os do mundo contemporâneo. Nesse contexto,
exploraremos alguns assuntos que constituem parte da área da programação: a importância de
aprender a programar, uma introdução básica aos operadores aritméticos e a compreensão dos
tipos de dados.
No decorrer da aula, então, vamos percorrer os diferentes caminhos que a lógica de
programação pode seguir. Preparado?
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Importância de aprender a programar
A primeira pergunta que podemos nos fazer a respeito desse tema é: a programação é uma
ferramenta somente para quem quer ser um desenvolvedor ou trabalhar tecnicamente na área de
desenvolvimento?
No século XXI, a programação surge como uma competência fundamental, transcendendo as
barreiras do mundo da tecnologia e se tornando um instrumento valioso em diversas áreas. A
capacidade de criar algoritmos e desenvolver softwares não é apenas um diferencial para
pro�ssionais da computação, mas uma aptidão transformadora para qualquer indivíduo,
independentemente da sua área de atuação.
A programação é a arte de criar sequências lógicas de instruções para que um computador
execute tarefas especí�cas. Essa linguagem universal possibilita a interação com máquinas de
forma que ideias sejam transformadas em ações concretas. Ao entender e aplicar conceitos de
programação, é possível criar desde simples scripts até complexos sistemas, proporcionando
soluções inovadoras para desa�os cotidianos.
No universo pro�ssional, a demanda por habilidades em programação nunca foi tão alta.
Especialistas da computação são requisitados em diferentes setores, desde o desenvolvimento
de softwares até a análise de dados e inteligência arti�cial. Contudo, a importância de aprender a
programar vai além dos limites da TI. Empregadores de áreas diversas buscam pro�ssionais
versáteis que possam aplicar lógica de programação para otimizar processos, automatizar
tarefas e encontrar respostas inovadoras.
A programação, tradicionalmente associada à área de Tecnologia da Informação, transcende
essas fronteiras e se torna uma ferramenta transversal em diversas pro�ssões. Desde cientistas
sociais que analisam grandes conjuntos de dados até designers que criam experiências digitais,
a programação oferece uma vantagem competitiva. Seja na medicina, nas �nanças, no marketing
ou design, a habilidade de programar permite a personalização de soluções e a criação de
produtos que atendam às necessidades especí�cas de cada setor.
A seguir, elencaremos alguns motivos para todos aprenderem a programar. Mas, a �m de adquirir
novas soft skills, perguntamo-nos: isso é possível, ou melhor, é realmente válido?
1. Pensamento lógico e resolução de problemas: a programação desenvolve o pensamento
lógico, estimula a resolução de problemas e fortalece a habilidade de decompor desa�os
complexos em tarefas menores.
2. Automatização e e�ciência: a automação de tarefas rotineiras é uma das maiores
vantagens da programação, o que não apenas economiza tempo, como também reduz
erros humanos, proporcionando maior e�ciência.
3. Entendimento tecnológico: vivemos em uma era digital, e compreender a lógica por trás da
tecnologia nos permite interagir de forma mais signi�cativa com as ferramentas digitais
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
presentes em nosso cotidiano.
4. Inovação e criatividade: a programação é uma forma de expressão criativa, possibilitando a
criação de soluções únicas e inovadoras para desa�os diversos.
5. Adaptação ao futuro: em um mundo cada vez mais tecnológico, a aprendizagem contínua e
a habilidade de adaptação são cruciais. A programação fornece uma base sólida para
enfrentar os desa�os do futuro.
Ao considerar a importância de aprender programação, somos instigados a re�etir sobre a forma
como interagimos com a tecnologia e como podemos moldar ativamente o futuro. A
programação não é apenas uma habilidade técnica; é uma linguagem universal que capacita
indivíduos a transformar ideias em realidade. Quando embarcamos nessa jornada, abrimos as
portas para a inovação, a resolução de problemas e o desenvolvimento de soluções que
impactam positivamente o mundo ao nosso redor.
Siga em Frente...
Introdução básica de operadores aritméticos
Na programação, operadores são elementos essenciais que permitem realizar diversas
operações sobre dados. Eles são responsáveis pela manipulação e processamento de
informações. Dentro desse conjunto, destacam-sesimples, um algoritmo em Portugol que utiliza comandos
básicos de entrada e saída. Esse algoritmo solicita ao usuário que insira dois números, realiza a
soma e exibe o resultado, como podemos observar na Figura 1:
Figura 1 | Exemplo de algoritmo com comandos básicos. Fonte: elaborada pelo autor.
Neste exemplo, o algoritmo utiliza os comandos “escreva” para exibir mensagens no console e
“leia” para capturar a entrada do usuário. Os números fornecidos são armazenados nas variáveis
“numero1” e “numero2”. Em seguida, a soma é calculada e armazenada na variável “resultado”,
que é exibida ao usuário. Este é um exemplo básico que demonstra o uso fundamental de
entrada e saída em algoritmos simples.
Outro exemplo clássico é o cálculo da média de um aluno. Baseado em informações solicitadas
para o usuário, é possível apresentar o resultado de cálculos como a média aritmética ou a
média ponderada de uma turma de alunos, ou até mesmo determinar qual aluno �cou com a
maior média da turma. Na Figura 2 a seguir, vemos um exemplo desse algoritmo:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 2 | Cálculo da média de um aluno. Fonte: elaborada pelo autor.
Note que a �gura apresenta a criação das variáveis na linha 3. Nesse caso, todas as variáveis
foram declaradas como reais, pois existem valores nos cálculos de divisão que podem retornar
resultados fracionários. Em seguida, é solicitado do usuário as notas e, após essa etapa, é
realizado o cálculo da média. O algoritmo �naliza apresentando o resultado da média na tela do
programa como uma mensagem textual que acompanha o valor numérico.
Em síntese, compreender a de�nição e aplicabilidade dos algoritmos é essencial para qualquer
pessoa envolvida no mundo da programação e da ciência de dados, uma vez que possibilitam a
automação de processos, a solução de problemas básicos e complexos e a otimização de
sistemas.
Portanto, mergulhar no entendimento e na prática dos algoritmos é não apenas uma escolha
sábia, mas uma necessidade para quem busca excelência na área da programação e na
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
resolução de desa�os computacionais.
Propriedades de um algoritmo
O aprendizado das propriedades de um algoritmo é fundamental no campo da ciência da
computação. Imagine os algoritmos como os mecanismos complexos que impulsionam a
engrenagem por trás do funcionamento e�ciente dos softwares que utilizamos diariamente.
Compreender suas propriedades permite aprimorar, então, a capacidade de resolução de
problemas e criar soluções mais e�cazes para desa�os complexos. Ao iniciar os estudos nesse
domínio, os futuros programadores aprimoram suas habilidades técnicas, além de cultivar uma
perspicácia analítica que é essencial para navegar no cenário em constante evolução da
tecnologia.
Debruçar-se sobre os algoritmos e suas propriedades não se trata, pois, de uma exploração
acadêmica, mas de uma habilidade indispensável para quem busca a perfeição na arte da
programação e da resolução de problemas computacionais. Na sequência, apresentaremos
alguns exemplos práticos que englobam as principais propriedades de um algoritmo:
1. Passo a passo para realizar uma tarefa
A característica de seguir um passo a passo em um algoritmo é crucial para garantir a execução
ordenada e lógica de uma tarefa especí�ca. Isso signi�ca que cada ação é cuidadosamente
planejada e executada em uma sequência predeterminada. A analogia pode ser feita com uma
receita de cozinha, na qual cada instrução precisa ser acompanhada na ordem correta para se
obter o resultado desejado. No contexto da programação, a clareza e a precisão nos passos são
essenciais para evitar erros e garantir o desfecho almejado. Observe, na Figura 3, o exemplo de
um passo a passo na realização de uma tarefa:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 3 | Exemplo em Portugol: média ponderada. Fonte: elaborada pelo autor.
A propriedade de passo a passo é essencial para guiar a execução de um algoritmo de maneira
sequencial e lógica, como este que calcula a média ponderada de três notas, seguindo um
processo ordenado de entrada, cálculo e exibição do resultado.
2. Processamento e instruções lógicas
O processamento e as instruções lógicas são a essência do funcionamento de um algoritmo.
Cada passo do algoritmo envolve a manipulação de dados através de operações lógicas, como
comparações, cálculos e tomadas de decisão. Por exemplo, ao veri�car se um número é positivo,
o algoritmo utiliza a instrução lógica “se” para comparar o número com zero. Essas operações
são a base que permite que o algoritmo resolva problemas complexos, decompondo-os em
operações lógicas mais simples, como vemos na Figura 4:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 4 | Exemplo em Portugol: veri�cação e divisibilidade por 3. Fonte: elaborada pelo autor.
A propriedade de processamento e instruções lógicas é exempli�cada em um algoritmo que
veri�ca se um número é divisível por 3. Em outras palavras, o processamento envolve a
veri�cação lógica da condição de divisibilidade. Aqui, as instruções lógicas determinam se o
número é ou não divisível por 3.
Siga em Frente...
3. Início e �m
A propriedade de ter um início e um �m é essencial para estruturar e delimitar a execução de um
algoritmo. O início é o ponto de partida, onde são recebidos os dados ou parâmetros necessários
para realizar a tarefa. O �m, por sua vez, marca o encerramento do processo, resultando na
conclusão da tarefa ou na produção do resultado desejado. Essa estruturação clara proporciona
uma melhor compreensão do escopo do algoritmo, facilitando o controle do desenvolvedor sobre
o �uxo de execução, como na Figura 5:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 5 | Exemplo em Portugol: conversão de Celsius para Fahrenheit. Fonte: elaborada pelo autor.
Na Figura 5, a propriedade de ter um início e um �m é evidente em um algoritmo que converte
temperatura de Celsius para Fahrenheit. O início envolve a entrada da temperatura em Celsius e o
�m marca a exibição da temperatura convertida.
4. Instruções claras e objetivas
Instruções claras e objetivas são fundamentais para garantir que o algoritmo seja compreendido
e executado corretamente. A clareza nas instruções signi�ca que cada passo do algoritmo é
descrito de maneira direta, sem ambiguidades, evitando interpretações errôneas. A objetividade,
por seu turno, está relacionada à e�ciência na comunicação das ações a serem realizadas, sem
informações desnecessárias. Essas instruções são como um manual detalhado que guia a
execução do algoritmo de forma inequívoca. Veja o exemplo a seguir:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 6 | Exemplo em Portugol: veri�cação de número primo. Fonte: elaborada pelo autor.
A clareza e objetividade nas instruções, como vemos na Figura 6, são primordiais em um
algoritmo que veri�ca se um número é primo. A estrutura de controle de �uxo é clara, tornando o
algoritmo compreensível.
Em suma, cada uma dessas propriedades desempenha um papel elementar na criação de
algoritmos robustos e e�cientes. A sequencialidade garante uma execução ordenada, o
processamento e as instruções lógicas são a essência da operação, o início e �m delimitam o
escopo, e as instruções claras e objetivas asseguram uma compreensão e execução adequadas.
Ao entender e aplicar essas propriedades, os programadores são capazes de desenvolver
algoritmos mais e�cazes, precisos e fáceis de manter.
Introdução a funções e modularização
As funções possuem grande relevância na construção de algoritmos. Elas são blocos de código
que realizam tarefas especí�cas e podem ser chamadas de diferentes partes do programa. Ao
introduzir funções, a programação se torna mais modular e compreensível. Imagine-as como
ferramentas especializadas no kit de um desenvolvedor, cada qual projetada para executar um
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
trabalho único. No mercado da Tecnologia da Informação, isso se traduz em e�ciência e
reutilização decódigo. Por exemplo, uma função que valida senhas pode ser usada em
diferentes partes de um sistema, promovendo consistência e economizando tempo de
desenvolvimento. A seguir, veremos quatro exemplos básicos e contextualizados de funções no
campo da TI.
1.  Validação de e-mail
Cenário: em um sistema de cadastro online, é necessário validar se o endereço de e-mail
fornecido pelos usuários está no formato correto.
Função: uma função especí�ca pode ser criada para validar e-mails, sendo utilizada em
várias partes do sistema, desde o cadastro até a recuperação de senha.
2. Geração de relatórios
Cenário: um sistema de gerenciamento �nanceiro precisa gerar relatórios mensais para os
usuários.
Função: uma função especializada para gerar relatórios pode ser desenvolvida,
proporcionando uma abordagem modular para lidar com diferentes tipos de relatórios.
3.  Ordenação de lista
Cenário: um sistema de gerenciamento de tarefas precisa exibir as tarefas em uma ordem
especí�ca, como por data de vencimento.
Função: desenvolver uma função de ordenação que aceite a lista de tarefas como entrada e
retorne a lista ordenada. Essa função pode ser usada sempre que for necessário exibir as
tarefas em uma ordem especí�ca.
4. Conversão de moeda
Cenário: um aplicativo �nanceiro permite que o usuário converta valores entre diferentes
moedas.
Função: criar uma função de conversão de moeda que aceite o valor a ser convertido, a
moeda de origem e a moeda de destino como parâmetros. Essa função encapsula a lógica
de conversão e pode ser chamada sempre que uma conversão for necessária.
Dessa forma, conclui-se que, ao dominar os conceitos de funções, os programadores podem
organizar melhor seus programas, facilitando a manutenção e a depuração destes. Além disso, o
uso adequado de funções promove a abstração e a encapsulação, permitindo que partes do
código sejam isoladas e modi�cadas independentemente, o que contribui para a escalabilidade e
a �exibilidade do software. Portanto, investir tempo no estudo das funções na programação é
fundamental para se tornar um desenvolvedor mais competente e e�caz.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Quanto à modularização, podemos de�ni-la como o princípio de dividir um sistema complexo em
módulos ou componentes independentes e interconectados. Esse conceito traz inúmeras
vantagens para o desenvolvimento de software no mercado de TI. Em termos de desempenho, a
modularização permite a otimização de cada módulo individual, melhorando a e�ciência geral do
sistema. Além disso, ela também simpli�ca a manutenção, uma vez que alterações ou
atualizações podem ser feitas em módulos especí�cos sem impactar o sistema como um todo.
Isso se traduz em economia de tempo e recursos, que são essenciais no cenário tecnológico e
na vida de um desenvolvedor. A seguir, discorreremos sobre essas vantagens com mais
detalhes.
1. Manutenibilidade: ao dividir um sistema em módulos, torna-se mais fácil localizar e corrigir
problemas especí�cos sem afetar outras partes do código. Isso simpli�ca a manutenção e
atualização do software.
2. Reusabilidade de código: módulos bem de�nidos podem ser reutilizados em diferentes
partes do sistema ou mesmo em projetos futuros, o que economiza tempo de
desenvolvimento e promove consistência no código.
3. Escalabilidade: sistemas modulares são mais fáceis de escalar, pois novos módulos podem
ser adicionados conforme necessário, o que ajuda na adaptação do sistema às mudanças
nos requisitos.
4. Colaboração e�ciente: a modularização permite o trabalho colaborativo, pois diferentes
equipes podem se concentrar em módulos especí�cos sem interferir no trabalho umas das
outras.
Como pudemos notar por meio dos exemplos citados, a modularização tem um papel importante
no mercado de Tecnologia da Informação (TI), pois oferece uma abordagem organizada e
escalável. Ao dividir um sistema complexo em módulos independentes e interconectados, os
desenvolvedores podem aumentar a e�ciência em desenvolvimento, testes e manutenção de
software. Isso permite que equipes trabalhem de forma colaborativa em diferentes partes do
projeto, facilitando a identi�cação e correção de erros, além de promover a reutilização do
código. A modularização também permite a integração de novos recursos e a adaptação a
mudanças nos requisitos do cliente ou do mercado, tornando o processo de desenvolvimento
mais ágil e adaptável. Logo, a modularização não somente melhora a qualidade e con�abilidade
dos produtos de software, como também contribui para a entrega oportuna de soluções
inovadoras e e�cientes para os clientes.
As funções e a modularização são, portanto, elementos de grande importância no
desenvolvimento de software e no mundo da programação. Ao utilizar funções, os
desenvolvedores podem criar blocos de código reutilizáveis, promovendo e�ciência e coesão no
desenvolvimento. A modularização, por sua vez, traz vantagens signi�cativas, desde a melhoria
do desempenho até a facilitação da manutenção e escalabilidade do sistema. Esses princípios
formam uma ótima base para o desenvolvimento de sistemas de qualidade que sejam �exíveis e
fáceis de manter, qualidades muito valorizadas no ambiente tecnológico atual.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Vamos Exercitar?
Vamos retomar a situação apresentada no início da aula, na qual em um posto de combustível
movimentado, os funcionários enfrentam di�culdades para registrar as vendas de maneira
e�ciente. Para melhorar esse processo, é necessário criar um sistema simples que armazene
informações essenciais sobre as transações. Os dados a serem registrados incluem o tipo de
combustível escolhido pelo cliente, a quantidade abastecida, além do preço por litro dependendo
do tipo de combustível.
Vamos à resolução?
Registro do tipo de combustível
Solicite ao cliente tipo de combustível desejado (gasolina, etanol, diesel etc.).
Criar uma variável do tipo “Caractere” que armazene o tipo de combustível.
Registro da quantidade abastecida
Solicite ao cliente a quantidade de litros desejada para o combustível escolhido.
Armazene a quantidade em uma variável do tipo “Real”, pois a quantidade pode ser
fracionada.
Registro do valor por litro
O valor por litro deve ser consultado na tabela de preços do posto.
Armazene o valor por litro em uma variável do tipo “Real”.
Cálculo do valor total
Calcule o valor total da compra multiplicando a quantidade de litros pelo preço por litro.
Apresente o valor total ao cliente.
Este método simpli�cado de gerenciamento de transações ressalta a relevância da utilização de
variados tipos de dados para armazenar informações em um posto de abastecimento de
combustível. A habilidade em lidar com dados e realizar cálculos é essencial para assegurar um
serviço ágil e preciso aos clientes.
Saiba mais
Para saber mais sobre conceitos básicos de algoritmos, entre os quais estão os tipos de dados e
operadores aritméticos, consulte o Capítulo 2 – Algoritmos e a Lógica de Programação, do livro
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Algoritmos – Lógica para Desenvolvimento de Programação de Computadores, de Manzano e
Oliveira, disponível no repositório da Biblioteca virtual.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Capítulo 2 – Algoritmos e a Lógica de Programação. In:
Algoritmos – Lógica para Desenvolvimento de Programação de Computadores. São Paulo:
Editora Saraiva, 2019, p. 29. 
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos - Lógica para Desenvolvimento de
Programação de Computadores. São Paulo: Editora Saraiva, 2019.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula2
Execução Sequencial e Estruturas de Decisão
Execução sequencial e estruturas de decisão
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante!
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Nesta videoaula, temos como objetivo apresentar os conceitos básicos de algoritmos que
abrangem os primeiros passos no desenvolvimento da tomada de decisão em códigos. Além
disso, abordaremos como deve ser a estrutura de um código de decisão, que utiliza condicionais,
e como ele funciona.
Não perca a oportunidade de agregar informações valiosas ao seu aprendizado e, assim, ampliar
seu conhecimento e compreensão da área de algoritmos. 
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
 
Ponto de Partida
Olá, caro estudante! Seja bem-vindo à esta aula sobre estrutura sequencial e estrutura de
decisão, as quais constituem a base para a construção lógica de programas.
As estruturas sequenciais são como os blocos de construção iniciais de um projeto em que as
instruções são executadas em ordem linear, uma após a outra. Essa abordagem é essencial para
organizar o �uxo de execução do programa, permitindo que a lógica siga de forma ordenada e
compreensível. Seja na simples exibição de mensagens ou até em cálculos mais complexos, as
estruturas de sequência fornecem um ponto de partida para qualquer programador iniciante.
 À medida que avançamos, entramos no domínio da estrutura de decisão, um conceito-chave
para a tomada de decisões dinâmicas em um programa. Através de declarações condicionais,
como “se” e “senao”, podemos introduzir rami�cações lógicas no �uxo do código. Essas
estruturas permitem que um programa escolha entre diferentes caminhos de execução com base
em condições especí�cas, aumentando, assim, a �exibilidade e adaptabilidade às aplicações.
Para ilustrar a aprendizagem dos conteúdos desta aula, imagine que você precisa desenvolver
um módulo para um sistema de comércio eletrônico que oferece descontos aos clientes com
base em suas compras anteriores. O sistema deve aplicar um percentual de desconto de acordo
com o valor total da compra.
Ao compreender esses princípios básicos, estaremos prontos para explorar cenários e desa�os
de programação mais complexos no futuro. Vale lembrar que esses conceitos iniciais são a
chave para desbloquear o enorme potencial da programação. 
Vamos Começar!
No vasto universo da programação, as estruturas que moldam a execução dos algoritmos são
partes que integram a e�cácia do código. Sua compreensão é um pré-requisito elementar para
qualquer programador que busca criar sistemas coesos e funcionais. Nesse contexto, destacam-
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2a2_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
se três aspectos fundamentais: a estrutura de programação, que de�ne o esqueleto do código; as
estruturas sequenciais, que determinam a execução linear das instruções; e as estruturas de
decisão, que conferem ao programa a capacidade de se adaptar a diferentes cenários por meio
de lógica condicional.
 Em um nível macro, a estrutura de programação estabelece a ordem geral das operações,
enquanto as estruturas sequenciais e de decisão re�nam essa ordem, proporcionando ao código
a �exibilidade necessária para enfrentar desa�os diversos. Este mergulho no centro dessas
estruturas é essencial para capacitar programadores a criar códigos mais claros, concisos e
e�cientes, podendo, assim, solucionar problemas de forma so�sticada no mundo da
programação.
Estrutura de programação
A estrutura de programação refere-se ao esqueleto básico de um programa, estabelecendo a
ordem em que as instruções são executadas. No contexto do pseudocódigo Portugol, podemos
ilustrar essa qualidade com um exemplo simples:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Exemplo de estrutura de programação. Fonte: elaborada pelo autor. 
Na Figura 1, é evidente a estrutura de programação. O programa começa com a entrada de
dados, quando o usuário fornece dois números. Em seguida, ocorre o processamento, em que os
números são subtraídos e o resultado é armazenado na variável "sub". Por �m, a saída de dados
exibe a subtração ao usuário. Essa sequência lógica de operações exempli�ca a estrutura de
programação, na qual cada passo é crucial para alcançar o resultado desejado.
 Essa abordagem estruturada é essencial para garantir a clareza e a funcionalidade do código.
Em projetos mais complexos, a organização e�caz das operações por meio de uma estrutura de
programação bem de�nida torna-se ainda mais crítica, permitindo que programadores e equipes
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
colaborem de maneira mais e�ciente e mantenham o código de forma sustentável ao longo do
tempo. Assim, a estrutura de programação não apenas estabelece a ordem de execução, mas
também promove a legibilidade e a manutenção do código, fatores cruciais no desenvolvimento
de um software de qualidade.
Estruturas sequenciais
As estruturas sequenciais representam a execução de instruções em ordem linear, uma após a
outra. Em linguagens de programação, isso ocorre de forma natural, mas é importante
compreender como organizá-las de maneira lógica. Para tanto, vamos expandir o exemplo
anterior para incluir uma estrutura sequencial.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 2 | Estruturas sequenciais. Fonte: elaborada pelo autor. 
Neste exemplo ampliado, após a saída de dados que exibe a soma, adicionamos instruções
sequenciais para calcular e exibir o dobro do resultado. Essa adição ilustra como as estruturas
sequenciais permitem a execução linear de operações, uma após a outra. No caso, o dobro da
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
soma é calculado imediatamente após a exibição da soma, seguindo o �uxo sequencial do
programa.
As estruturas sequenciais são, pois, capitais para a organização lógica e compreensão do
código. Elas possibilitam que os desenvolvedores expressem a lógica de execução de maneira
clara e direta. Em programas mais complexos, essa sequencialidade torna-se primordial para
evitar resultados inesperados e garantir que as operações sejam realizadas na ordem desejada.
A clareza proporcionada por estruturas sequenciais também facilita a depuração e a manutenção
do código, contribuindo para um desenvolvimento mais e�ciente e e�caz.
Siga em Frente...
Estruturas de decisão
No universo da programação, as estruturas de decisão são fundamentais para conferir ao código
a capacidade de tomar diferentes caminhos de execução com base em condições especí�cas.
Na pseudolinguagem Portugol, a estrutura condicional básica é representada pelo comando "se-
então-senão".
As estruturas de decisão podem ser classi�cadas em três tipos principais: desvio condicional
simples, desvio condicional composto e desvio condicional encadeado. Exploremos cada uma
delas com exemplos claros em Portugol.
Desvio condicional simples
O desvio condicional simples é o tipo mais básico, no qual o código executa uma instrução se
uma condição for verdadeira; caso contrário, ele simplesmente continua sua execução normal.
Na Figura 3, vemos como o programa veri�ca se um número digitado é positivo.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 3 | Positivo?. Fonte: elaborada pelo autor. 
Neste caso, a mensagem "O número é positivo" será exibida apenas se a condição numero > 0 for
verdadeira.
Desvio condicional composto
O desvio condicional composto inclui um bloco de instruções para cada possível resultado da
condição. No exemplo a seguir, além de veri�car se o número é positivo, também apura-se se é
negativo ou igual a zero.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 4 | Positivo ou negativo?. Fonte: elaborada pelo autor.
Logo, o código aborda todas as possibilidades, garantindoque a mensagem correta seja exibida
com base no valor do número inserido.
Desvio condicional encadeado
O desvio condicional encadeado ocorre quando uma série de decisões está interligada. Cada
decisão é tomada com base na condição anterior. Na Figura 5, observamos o programa
classi�car um aluno com base em sua nota.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 5 | Aprovado, recuperação ou reprovado?. Fonte: elaborada pelo autor.
Neste caso, o programa avalia primeiro se a nota é maior ou igual a 7,0. Se sim, o aluno é
aprovado. Caso contrário, se a nota for maior ou igual a 4,0, ele está em recuperação. Se não
atender a nenhuma dessas condições, o aluno é considerado reprovado.
Tais exemplos demonstram como as estruturas de decisão em Portugol podem ser aplicadas de
maneiras simples e compreensíveis, proporcionando ao programador �exibilidade para lidar com
diferentes situações. A escolha entre essas estruturas dependerá da complexidade do problema
a ser resolvido e da lógica especí�ca que se deseja implementar.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Conclusão
Em resumo, as estruturas de programação constituem a espinha dorsal do desenvolvimento de
software, proporcionando a organização lógica necessária para a criação de algoritmos
e�cientes. Ao de�nirem o esqueleto do código, elas estabelecem as bases sobre as quais as
estruturas sequenciais e de decisão se desdobrarão. As estruturas sequenciais, por sua vez,
asseguram a execução ordenada das instruções, conferindo clareza e linearidade ao �uxo do
programa. Da mesma forma, as estruturas de decisão emergem como ferramentas cruciais para
a adaptação dinâmica do código, permitindo que ele responda a condições especí�cas.
Ao aplicar esses conceitos no ambiente de programação em Portugol, os desenvolvedores têm a
oportunidade de criar códigos mais legíveis, organizados e e�cientes. A clareza proporcionada
pelas estruturas de programação é fundamental para facilitar a compreensão do código não
apenas pelo criador, mas também por outros membros da equipe envolvida no projeto. Além
disso, a capacidade de tomar decisões lógicas por meio das estruturas condicionais permite que
os programas lidem de maneira adaptável com diferentes cenários, contribuindo para a robustez
e versatilidade das soluções desenvolvidas. Em última análise, o entendimento profundo dessas
estruturas é uma habilidade essencial para programadores que aspiram a construir soluções de
software robustas e funcionalmente sólidas.
Vamos Exercitar?
Vamos retomar a situação apresentada no início da aula onde você precisa desenvolver um
módulo para um sistema de comércio eletrônico que oferece descontos aos clientes com base
em suas compras anteriores. O sistema deve aplicar um desconto de 10% em relação ao valor
total da compra.
Vamos à resolução?
Identi�cação do cliente
Crie uma estrutura de dados para representar as informações do cliente: nome, e-mail e
total gasto em compras anteriores.
Solicite ao usuário que insira seu nome, e-mail e o valor total gasto em compras anteriores.
Aplicação de desconto
Implemente uma estrutura de seleção (condicional) para veri�car o valor total gasto pelo
cliente.
Aplique um desconto de 10% se o valor total for superior a R$ 500.
Exibição do resultado
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Mostre ao usuário o valor original da compra, o desconto aplicado (se houver) e o valor �nal
a ser pago.
Exiba uma mensagem incentivando o cliente a continuar comprando.
Usando a Linguagem C
Figura 6 | Identi�cação do cliente. Fonte: elaborada pelo autor.
Figura 7 | Aplicação do desconto. Fonte: elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 8 | Resultado. Fonte: elaborada pelo autor.
Saiba mais
Para saber mais sobre as estruturas de decisão e formas de aplicação dos desvios condicionais
na linguagem de programação C e quais suas características, consulte o Capítulo 7. Estruturas
condicionais do livro Elementos de programação em C, de Pinheiro, disponível no repositório da
Biblioteca virtual.
PINHEIRO, F. de A. C. Capítulo 7. Estrutura Condicionais. In: Elementos de programação em C. 
Porto Alegre: Bookman, 2012, p. 148-165. 
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
PINHEIRO, F. de A. C. Elementos de programação em C. Porto Alegre: Bookman, 2012.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 3
Estruturas de Repetição
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/165
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/165
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/165
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/165
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Estruturas de repetição
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Esta videoaula será dedicada às estruturas de repetição, as quais proporcionarão
uma imersão completa nos elementos essenciais para o desenvolvimento de algoritmos mais
complexos. Durante nosso encontro, exploraremos os conceitos fundamentais dessas
estruturas, discutindo como elas podem ser aplicadas para otimizar e automatizar processos em
programação. A habilidade de criar loops e�cientes é crucial para qualquer programador, e esta
aula visa fornecer uma compreensão sólida do assunto. Além disso, abordaremos a importância
da clareza na estrutura do código e como essa qualidade contribui para um desenvolvimento
mais e�ciente. Entender como organizar e controlar o �uxo de um programa é primordial para
qualquer aspirante a desenvolvedor.
Clique aqui e acesse os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Olá, caro estudante! Seja bem-vindo à esta aula dedicada às estruturas de repetição em Portugol.
Nesta jornada, apresentaremos essas estruturas essenciais para a criação de algoritmos
dinâmicos e e�cientes. Elas são como os �os que tecem a complexidade dos programas,
proporcionando a �exibilidade necessária para enfrentar desa�os variados. Assim como
alicerces �rmes sustentam uma construção, entender o "Enquanto-Faça", "Para-Até-Faça" e
"Repita-Até" permitirá, assim, que você construa códigos mais robustos e adaptáveis.
Para ilustrar a aprendizagem dos conteúdos desta aula, imagine que você trabalha em uma loja
de pneus que deseja otimizar o controle de estoque e conta com a sua ajuda para criar um
programa que facilite a contagem de produtos. Cada pneu vendido é registrado, e o estoque
precisa ser atualizado constantemente. Portando, você precisará desenvolver um algoritmo que
permita ao vendedor informar quantos pneus foram vendidos e, com base nessa informação,
realizar a contagem atualizada do estoque.
Este é apenas o começo; o conhecimento adquirido aqui será a chave para desbloquear as
possibilidades in�nitas que a programação oferece. Abrace cada conceito, participe ativamente e
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2a3_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
não hesite em explorar e questionar. Estamos aqui para apoiar sua aprendizagem e guiá-lo na
compreensão plena dessas estruturas. Boa aula!
Vamos Começar!
A lógica de programação é uma parte fundamental do desenvolvimento de software, e entre suas
muitas nuances, destacam-se as estruturas de repetição como ferramentas essenciais para
construir algoritmos e�cientes e dinâmicos. Nesta aula, vamos explorara profundidade dessas
estruturas em Portugol, uma linguagem pseudocódigo que serve como ponte intuitiva para
entender os conceitos básicos da área. À medida que nos aprofundarmos no universo do
"Enquanto-Faça", "Para-Até-Faça" e "Repita-Até", desvendaremos os segredos por trás dessas
construções que capacitam os programadores a automatizar tarefas, criar lógicas complexas e
dar vida a algoritmos mais e�cientes.
Resumidamente, a estrutura "Enquanto-Faça" oferece uma abordagem dinâmica, permitindo que
um bloco de código seja repetido enquanto uma condição especí�ca permanecer verdadeira.
Essa capacidade de adaptação é crucial, pois permite a execução de tarefas variáveis,
condicionando o �uxo do programa à avaliação contínua de uma expressão booleana. No
entanto, há também a necessidade de estruturas que possam lidar com um número �xo de
repetições, e é aqui que o "Para-Até-Faça" assume o palco, simpli�cando o controle de iterações.
Por �m, para cenários em que é necessário garantir que um bloco de código seja executado pelo
menos uma vez, independentemente da condição inicial, a estrutura "Repita-Até" se destaca
como um instrumento valioso, proporcionando robustez e adaptabilidade aos algoritmos. Ao
desbravar esses conceitos, os programadores estarão equipados não apenas com
conhecimentos práticos, como também com uma compreensão mais profunda da arte de criar
algoritmos e�cientes.
Enquanto-Faça
A estrutura de repetição "Enquanto-Faça" destaca-se como uma ferramenta dinâmica e versátil
no contexto da programação. Sua lógica é centrada na execução de um bloco de código
enquanto uma condição especí�ca permanece verdadeira. No exemplo prático do contador,
inicializamos uma variável em 1. Enquanto essa variável for menor ou igual a 5, o bloco de código
dentro do "Enquanto-Faça" será repetido. Cada iteração incrementa o contador, proporcionando
uma contagem sequencial de 1 a 5. Essa �exibilidade torna o "Enquanto-Faça" ideal para
situações em que a quantidade de repetições não é conhecida antecipadamente.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Contador. Fonte: elaborada pelo autor. 
Uma das características marcantes do "Enquanto-Faça" é a sua capacidade de adaptar
dinamicamente o �uxo de execução do programa. A condição que determina a repetição é
avaliada antes de cada iteração, permitindo que o bloco de código seja executado apenas
enquanto a condição for verdadeira. Isso proporciona um controle preciso e �exível sobre o
número de repetições, adequando-se a cenários em que a lógica do programa precisa ajustar-se
às condições variáveis, tornando-o uma escolha ideal para contextos dinâmicos.
Além de seu papel em loops, o "Enquanto-Faça" contribui signi�cativamente para a construção
lógica sequencial de um programa. Sua adaptabilidade ao lidar com conjunturas em que as
condições de repetição podem depender de variáveis externas ou interações do usuário é
valiosa. Ao dominar o uso dessa estrutura, os programadores adquirem uma ferramenta capital
para criar algoritmos dinâmicos e ajustáveis, abrindo portas para a resolução e�ciente de uma
variedade de problemas.
Para-Até-Faça
A estrutura de repetição "Para-Até-Faça" é um instrumento poderoso que proporciona um
controle preciso sobre o número de iterações em um bloco de código. Ao contrário do "Enquanto-
Faça", no qual a execução depende de uma condição booleana, o "Para-Até-Faça" é
especialmente útil quando sabemos previamente quantas repetições são precisas. Essa
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
estrutura é conduzida por uma variável de controle, muitas vezes chamada de índice, que é
inicializada com um valor especí�co e incrementada automaticamente a cada iteração.
Imagine, a título de ilustração, que estamos desenvolvendo um programa para calcular a soma
dos primeiros cinco números inteiros. Utilizando o "Para-Até-Faça", podemos criar um código
conciso e e�ciente:
Figura 2 | Somando 5 números. Fonte: elaborada pelo autor.
Neste exemplo, a variável soma é inicializada em zero, e o "Para-Até-Faça" é utilizado para iterar
de 1 até 5. A cada iteração, o valor de i é somado à variável soma. Ao �nal do loop, obtemos a
soma total dos primeiros cinco números inteiros. Essa abordagem é e�caz quando conhecemos
antecipadamente o número de iterações necessárias, proporcionando um controle preciso sobre
o �uxo do programa.
Essa estrutura é particularmente e�ciente em operações que envolvem listas, arrays ou qualquer
contexto em que a quantidade de elementos seja conhecida. O "Para-Até-Faça" simpli�ca a
implementação de iterações controladas, tornando o código mais legível e fácil de compreender.
Aprofundar-se nesse conceito, assim, proporcionará um entendimento sólido e versátil das
estruturas de repetição em Portugol.
Siga em Frente...
Repita-Até
A estrutura de repetição "Repita-Até" é muito útil quando desejamos que um bloco de código seja
executado pelo menos uma vez, independentemente da condição inicial. Ao contrário do
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
"Enquanto-Faça", que veri�ca a condição antes da execução, o "Repita-Até" executa o bloco
primeiro e, em seguida, veri�ca a condição para determinar se deve repetir o processo.
Considere um exemplo prático: suponha que estamos desenvolvendo um programa para solicitar
ao usuário um número entre 1 e 10. Utilizando o "Repita-Até", podemos garantir que o código seja
executado pelo menos uma vez, independentemente da entrada do usuário.
Figura 3 | Veri�cando número válido. Fonte: elaborada pelo autor. 
Na Figura 3, o bloco de código dentro de "Repita-Até" solicita ao usuário que digite um número
repetidamente até que a condição número >= 1 e númerocom a sua ajuda para criar um programa que
facilite a contagem de produtos. E a sua responsabilidade é desenvolver um algoritmo que
permita ao vendedor informar quantos pneus foram vendidos e, com base nessa informação,
realizar a contagem atualizada do estoque.
Vamos à resolução?
Inicialização do estoque
Inicialize o estoque de pneus com um valor pré-de�nido, por exemplo, 100 pneus. 
Registro de vendas
Implemente um loop (estrutura de repetição) que permita ao vendedor registrar as vendas
de pneus.
Solicite ao vendedor que informe a quantidade de pneus vendidos a cada transação.
Atualize o estoque subtraindo a quantidade vendida. 
Exibição do estoque atualizado
Após cada registro de venda, exiba ao vendedor o estoque atualizado.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Continue o processo até que o vendedor decida encerrar a contagem.      
Figura 4 | Controle de estoque. Fonte: elaborada pelo autor.
O investimento em soluções computacionais que integrem estruturas de controle proporciona
vantagens competitivas e e�ciência operacional, elementos cruciais em um mercado cada vez
mais tecnológico e orientado por dados. Continue, pois, aprimorando suas habilidades para
enfrentar desa�os mais complexos na área de programação.
Saiba mais
Para saber mais sobre laços de repetição na linguagem de programação C e suas características,
consulte o Capítulo 8 - Estruturas de Repetição do livro Elementos de programação em C, de
Pinheiro, disponível no repositório da Biblioteca virtual.
PINHEIRO, F. de A. C. Capítulo 8 - Estruturas de Repetição. In: Elementos de programação em C.
Porto Alegre: Bookman, 2012, p. 171-187. 
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/188
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/188
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/188
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/188
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
PINHEIRO, F. A. C. Elementos de programação em C. Porto Alegre: Bookman, 2012.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 4
Variáveis Indexadas
Variáveis indexadas
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Esta videoaula tem como objetivo apresentar os conceitos básicos de algoritmos
que abrangem os primeiros passos no desenvolvimento da tomada de decisão em códigos.
Abordaremos, também, como deve ser a estrutura de um código e como ele funciona.
Não perca a oportunidade de agregar informações valiosas ao seu aprendizado e de ampliar seu
conhecimento e compreensão da área de algoritmos. 
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2a4_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Ponto de Partida
Olá, caro estudante! Seja bem-vindo à esta aula dedicada à utilização de vetores, às variáveis
indexadas unidimensionais e variáveis compostas na construção e�ciente de algoritmos.
Começaremos entendendo as estruturas sequenciais, que são como blocos de construção
iniciais para projetos. Nelas, as instruções são executadas em ordem linear, passo a passo, o que
é vital para organizar o �uxo do programa, desde tarefas simples, como exibir mensagens, até
manipulações mais complexas usando vetores e variáveis indexadas unidimensionais.
Na sequência, mergulharemos no domínio das variáveis compostas, ferramentas poderosas que
permitem agrupar dados relacionados em uma única estrutura. Nesse contexto, exploraremos
como vetores e variáveis indexadas unidimensionais são primordiais para construir algoritmos
e�cientes e resolver problemas computacionais de forma organizada.
Portanto, para ilustrar a aprendizagem do conteúdo desta aula, vamos exercitar com um
algoritmo em Portugol que faça operações utilizando a estrutura de vetores. Será apresentando
um algoritmo que vai solicitar informações ao usuário que serão armazenadas em 2 vetores. Um
terceiro vetor será necessário para fazer a soma dos elementos dos dois vetores e apresentar o
seu resultado no �nal do programa.
A jornada está apenas começando, e esses conceitos iniciais são a chave para enfrentar
cenários e desa�os de programação mais complexos no futuro.
Vamos Começar!
A programação é uma linguagem que utiliza diversos conceitos para representar e manipular
dados. Entre esses conceitos, destacam-se a utilização de vetores, variáveis indexadas
unidimensionais e variáveis compostas, essenciais para organizar e acessar informações de
maneira e�ciente. Nesta aula, portanto, exploraremos cada um desses conteúdos,
exempli�cando seu uso por meio da linguagem de programação Portugol.
Utilização de vetores
Os vetores são estruturas fundamentais na programação, permitindo armazenar e organizar
dados de forma sequencial em memória, o que facilita seu acesso e manipulação e�caz. Em
linguagens como Portugol, a declaração e manipulação desses vetores são tarefas comuns,
proporcionando uma abordagem estruturada para lidar com conjuntos de dados relacionados.
A declaração de um vetor em Portugol envolve a especi�cação dos elementos e a de�nição da
faixa de índices. Assim, ao criar um vetor de notas, podemos utilizar a declaração vetor [1.5] de
real, indicando que ele terá elementos do tipo real e índices variando de 1 a 5. O acesso aos
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
elementos se dará por meio dos índices que representam uma posição única no vetor. Para
atribuir ou recuperar valores, basta referenciar o vetor e o índice desejado.
Considere, na Figura 1, o exemplo em Portugol no qual criamos um vetor “notas” para armazenar
as notas dos alunos, permitindo acessar, por meio do índice, a segunda nota:
Figura 1 | Exemplo de vetor. Fonte: elaborada pelo autor. 
Vetores são versáteis, podendo armazenar diferentes tipos de dados, desde números até
caracteres. Além disso, são e�cientes para lidar com conjuntos de dados homogêneos, como
uma lista de temperaturas mensais ou um histórico de vendas diárias. Sua utilização simpli�ca a
manipulação desses dados, proporcionando uma estrutura organizada e acessível e contribuindo
para o desenvolvimento de algoritmos mais claros e efetivos.
Variáveis indexadas unidimensionais
As variáveis indexadas unidimensionais são extensões do conceito de vetores, proporcionando
uma forma mais �exível de representar e acessar dados em programação. Elas permitem
organizar informações de maneira estruturada, associando valores a índices especí�cos. No
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
contexto do Portugol, a utilização de variáveis indexadas unidimensionais oferece uma
abordagem e�caz para lidar com conjuntos de dados que não seguem necessariamente uma
sequência contígua de índices.
Mas, ao contrário dos vetores, elas não requerem uma faixa de índices �xa durante a declaração.
Podemos de�nir índices de forma mais dinâmica, tornando-as ideais para situações em que os
dados não seguem uma ordem sequencial prede�nida. No Portugol, a declaração de uma
variável indexada unidimensional é feita como var nome: vetor de tipo, permitindo a atribuição de
índices em tempo de execução. O acesso aos elementos ocorre da mesma forma, utilizando
índices para referenciar valores especí�cos.
A seguir, apresentamos um exemplo em Portugol no qual criamos uma variável indexada“meses” para representar os meses do ano e acessarmos o terceiro mês:
Figura 2 | Variável indexada. Fonte: elaborada pelo autor.   
Variáveis indexadas unidimensionais são especialmente úteis em situações dinâmicas, como a
representação de dados esparsos ou informações que podem ser atualizadas ao longo do
tempo. Podem ser empregadas em cenários que envolvam, por exemplo, a categorização de
eventos no decorrer de um ano, sem a necessidade de reservar espaço para todos os meses.
Essa �exibilidade as torna uma ferramenta poderosa na programação, contribuindo para uma
gestão e�ciente de dados em contextos menos estruturados.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Siga em Frente...
Variáveis compostas
Variáveis compostas evoluem além das estruturas simples de dados, permitindo uma
representação mais rica e abrangente na programação. Como discutimos anteriormente, o uso
de registros em Portugol para criar variáveis compostas é essencial para explorar duas variantes
avançadas, as multidimensionais e as heterogêneas, as quais oferecem recursos adicionais para
lidar com conjuntos de dados mais complexos e diversi�cados.
Variáveis compostas multidimensionais
No contexto das variáveis compostas multidimensionais, a declaração envolve a criação de
estruturas que possuem mais de uma dimensão. Matrizes ou arrays bidimensionais são
exemplos comuns nessa categoria. Ao declarar uma matriz em Portugol, especi�camos o
número de linhas e colunas. O acesso aos elementos ocorre por meio da referência a índices em
ambas as dimensões. Assim, uma matriz pode representar uma tabela em que as linhas são os
meses do ano e as colunas são os dias, facilitando a organização e manipulação de dados mais
elaborados.
Figura 3 | Variável composta multidimensional. Fonte: elaborada pelo autor.  
Variáveis compostas heterogêneas
As variáveis compostas heterogêneas introduzem a ideia de estruturas que contêm campos de
diferentes tipos de dados. Enquanto os registros em Portugol são homogêneos, as estruturas
heterogêneas permitem uma abordagem mais �exível. Pode-se ter um campo que armazena um
número inteiro, enquanto outro armazena um caractere, por exemplo. Essa versatilidade é muito
vantajosa ao modelar entidades que possuem atributos diversos e não uniformes.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 4 | Variável composta heterogenia. Fonte: elaborada pelo autor.  
Em resumo, a incorporação de variáveis compostas multidimensionais e compostas
heterogêneas enriquece signi�cativamente a capacidade de representar dados na programação.
Ao entender e aplicar esses conceitos em Portugol, os programadores podem desenvolver
soluções adaptáveis, adequadas para lidar com desa�os mais complexos. A linguagem Portugol,
integrando essas formas, proporciona, então, uma base sólida para o desenvolvimento de
habilidades programáticas mais avançadas em linguagens subsequentes, preparando
programadores para enfrentar problemas cada vez mais so�sticados na construção de
softwares.
Conclusão
A integração de vetores, variáveis indexadas unidimensionais e variáveis compostas emerge
como prática essencial na programação, promovendo uma estrutura organizada e e�ciente para
a manipulação de dados. A compreensão profunda desses temas e sua aplicação criteriosa em
contextos especí�cos capacitam os programadores a conceberem sistemas mais transparentes,
modulares e de fácil manutenção. A linguagem Portugol, ao dar suporte para esses elementos,
destaca-se como uma ferramenta inestimável para aqueles que buscam aprender a programar de
maneira estruturada e e�caz.
Vamos Exercitar?
Retomando a situação apresentada no início da aula, de exercitar com um algoritmo em Portugol
que faça operações utilizando a estrutura de vetores, criando um algoritmo que vai solicitar
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
informações ao usuário que serão armazenadas em 2 vetores. Um terceiro vetor será necessário
para fazer a soma dos elementos dos dois vetores e apresentar o seu resultado no �nal do
programa.
Vamos à resolução?
Inicialização dos vetores
Crie dois vetores inteiros: vetorA e vetorB, com um tamanho pré-de�nido.
Leitura dos elementos
Implemente um loop para solicitar ao usuário que informe os elementos de cada vetor.
Para cada posição i do vetorA e vetorB, leia um valor inteiro e armazene no vetor
correspondente.
Somatória dos vetores
Crie um terceiro vetor, vetorSoma, com o mesmo tamanho dos vetores vetorA e vetorB, para
armazenar a soma dos elementos de cada posição.
Para cada posição i, realize a soma dos elementos das posições correspondentes dos
vetores vetorA e vetorB e armazene o resultado no vetorSoma.
Apresentação dos vetores
Após a leitura e somatória, exiba ao usuário os elementos dos vetores vetorA, vetorB e
vetorSoma, mostrando os valores de cada posição.
Fim do programa
Encerre a execução do programa.
Segue o demonstrativo da codi�cação em Portugol:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 5 | Soma de vetores. Fonte: elaborada pelo autor. 
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 6 | Soma de vetores – cont. Fonte: elaborada pelo autor. 
Nesta atividade, você aprendeu como utilizar vetores em Portugol para armazenar e manipular
conjuntos de dados. Você criou um algoritmo que permite ao usuário inserir elementos em dois
vetores, somá-los e depois apresentar os vetores originais e o vetor resultante da soma. Esta
prática é essencial para entender o conceito de vetores e como aplicá-los na resolução de
problemas computacionais.
Saiba mais
Para saber mais sobre estruturas de dados homogêneas e heterogêneas, vetores e matrizes,
consulte o Capítulo 6 – Estruturas de Dados Homogêneas de Uma Dimensão, do livro Algoritmos
– Lógica para Desenvolvimento de Programação de Computadores, de Manzano e Oliveira,
disponível no repositório da Biblioteca virtual.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Capítulo 6 - Estruturas de Dados Homogêneas de Uma
Dimensão. In: Algoritmos – Lógica para Desenvolvimento de Programação de Computadores.
São Paulo: Saraiva, 2019, p. 145-158.
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos - Lógica para Desenvolvimento de
Programação de Computadores. São Paulo: Editora Saraiva, 2019.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 5
Elementos de Algoritmos
Videoaula de Encerramento
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Seja bem-vindo à videoaula de encerramento desta Unidade, na qual
destacaremos as estruturas de seleção, também conhecidas como condicionais. Essa estrutura
é uma das mais presentes nos algoritmos desenvolvidos em todas as aplicações do mercado de
https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146
https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146
https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146
https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146
https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
software, portanto muito relevante para quem já atua ou está planejando entrar para a área da
computação.
Preparado para �nalizar essa jornada?
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Chegada
Olá, estudante! Para desenvolvera competência desta Unidade, a saber, desenvolver algoritmos
com a utilização das estruturas de decisão e repetição por meio de pseudocódigos na
programação, tivemos, primeiramente, que conhecer os conceitos fundamentais de algoritmos,
entender a sua importância e, ainda, compreender por que eles são tão utilizados no
desenvolvimento de sistemas.
Embarcar no universo da programação é abrir as portas para a resposta a desa�os complexos e
a criação de soluções inovadoras. É preciso se inteirar a respeito das estruturas existentes para
construir soluções inteligentes e essenciais na atualidade. Isso não apenas torna o código mais
e�ciente, como também proporciona uma abordagem �exível para a resolução de problemas.
As empresas buscam pro�ssionais capazes de criar códigos robustos, que respondam
dinamicamente a variáveis e situações diversas. A capacidade de implementar condicionais de
forma inteligente, assim, otimiza processos e demonstra uma compreensão sólida da lógica de
programação.
Especialistas que dominam as estruturas de seleção são capazes de criar algoritmos mais
desenvolvidos, adaptáveis e e�cazes. Essa habilidade facilita a resolução de problemas
complexos e destaca os programadores como ativos valiosos em um mercado cada vez mais
competitivo e dinâmico. Ela enriquece o repertório técnico, além de ser um diferencial
estratégico. Portanto, ao compreender as estruturas condicionais, os programadores se
capacitam para criar soluções arrojadas, contribuindo para o progresso contínuo no mundo da
programação. 
É Hora de Praticar!
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2enc_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Chegou o momento, caro estudante, de colocar em prática o conhecimento adquirido nesta
unidade de ensino. Para tanto, vamos abordar um estudo de caso sobre Processo de conserto de
motocicleta com o cenário descrito a seguir.
Suponha que você trabalhe em uma o�cina de motocicletas e receba um cliente com um veículo
apresentando problemas de funcionamento. O cliente relata que a moto está falhando e deseja
uma análise mecânica para identi�car o problema.
O desa�o é criar um algoritmo que ajude o mecânico a diagnosticar o mau funcionamento com
e�ciência em todo o processo. O passo a passo seria o seguinte:
1. Coleta de informações: o algoritmo deve solicitar o input das informações do cliente
colhidas pelo mecânico ou atendente.
2. Inspeção da motocicleta: o veículo segue para diagnóstico dos possíveis problemas.
3. Proposta de solução: já com o diagnóstico provisório, o cliente recebe uma proposta de
solução do(s) problema(s) apresentado(s).
Agora é a sua vez! Utilize seus conhecimentos em algoritmos para criar soluções para o estudo
de caso apresentado. Siga os passos sugeridos no gabarito e demonstre suas habilidades para a
resolução desse desa�o.
No contexto do aprendizado de programação, é essencial compreender não apenas as técnicas
especí�cas, como também a importância de estruturas, como as estruturas condicionais dentro
da lógica de programação e o uso de pseudocódigos.
A seguir, apresentamos duas questões de re�exão para aprofundar nossa compreensão sobre
esses temas:
1. Estruturas de seleção
Após ter explorado as estruturas de seleção, pense quais habilidades especí�cas são
necessárias para criar condicionais claros e e�cazes?
Como o domínio dessas estruturas pode impactar diretamente na qualidade e
adaptabilidade do código?
Ao colocar essas questões, procure compreender a importância de aprimorar suas
competências no campo e como isso pode in�uenciar positivamente a resolução de
problemas complexos no mundo da programação.
2. Estruturas de repetição
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Ao re�etir sobre as estruturas de repetição, analise como a habilidade de criar loops
e�cientes pode otimizar a execução de algoritmos.
Considere as situações em que a repetição controlada é necessária e como diferentes
estruturas, como o enquanto-faça e o repita até, podem ser aplicadas de maneira
inteligente.
Quais são os benefícios de criar algoritmos que podem lidar dinamicamente com tarefas
repetitivas?
Como o domínio das estruturas de repetição pode in�uenciar a e�ciência e a escalabilidade
do código?
Ao fazer essas re�exões, busque compreender a importância de desenvolver conhecimentos
sólidos na área para enfrentar desa�os variados e criar soluções mais robustas em
programação.
Dê o Play!
Clique aqui para acessar os slides do Dê o play!
Processo de conserto de motocicleta
Passo 1: Coleta de informações 
O mecânico inicia o processo coletando informações do cliente sobre os sintomas da
motocicleta, o que inclui questioná-lo sobre quando os problemas começaram, se há algum
padrão nas falhas, entre outras perguntas relevantes.
Passo 2: Inspeção física 
O próximo passo envolve uma inspeção física da motocicleta. O mecânico veri�ca o
sistema de ignição, o �ltro de ar, as velas de ignição e outros componentes essenciais. Ele
realiza testes visuais e, se necessário, testes práticos para observar o comportamento da
moto.
Passo 3: Análise de dados
 Com as informações coletadas, o mecânico analisa os dados para identi�car a causa raiz
do problema. Ele veri�ca os resultados dos testes, os códigos de falha e as observações
para formar um diagnóstico preciso.
Passo 4: Proposta de solução 
Com o diagnóstico em mãos, o mecânico propõe uma solução ao cliente. Isso pode incluir
a substituição de peças, ajustes especí�cos ou reparos necessários. O cliente é informado
sobre o custo estimado e a extensão do trabalho a ser feito.
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2play_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Conclusão
Esse estudo de caso destaca a importância de uma abordagem sistemática para resolver
problemas em um contexto de reparo mecânico de motocicletas. A coleta cuidadosa de
informações, a inspeção física, o uso de ferramentas de diagnóstico e a análise de dados são,
portanto, passos para uma resolução e�ciente. Esse processo exempli�ca, assim, como a lógica
de programação pode ser aplicada de forma prática na resolução de desa�os do mundo real.
Neste infográ�co, apresentamos, resumidamente, os principais conceitos relacionados aos
elementos de algoritmos.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura | Elementos algoritmos. Fonte: elaborada pelo autor.
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
,
Unidade 3
Conceitos de Programação
Aula 1
Introdução a Conceitos de Programação
Introdução a conceitos de programação
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Sejam bem-vindos à primeira vídeoaula desta unidade de ensino! Vamos mergulhar no universo
dos ambientes de programação em “C”, explorando ferramentas como VS Code, CodeBlocks
entre outras.
 Nesta aula, vamos entender a importância de escolher o ambiente de programação certo para o
desenvolvimento em “C”. Abordaremos detalhes sobre a con�guração e uso desses ambientes,
além de discutir as vantagens e desvantagens de cada um.
Abordaremos também os compiladores e interpretadores, compreendendo suas funções e como
in�uenciam no processo de desenvolvimento de softwarena linguagem “C”.
Ao �nal desta aula, esperamos que você esteja mais familiarizado com os ambientes de
programação em “C” e con�ante para escolher a ferramenta mais adequada às suas
necessidades.
Aproveite esta oportunidade para expandir seus conhecimentos sobre os ambientes existentes
na programação. A sua participação ativa é fundamental para tornar essa experiência de
aprendizado ainda mais enriquecedora.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Olá, estudante! Seja bem-vindo à esta aula sobre fundamentos da linguagem de programação
“C”.
Neste momento, vamos dedicar um tempo para entender os ambientes de desenvolvimento
disponíveis para a linguagem “C”, desde os mais populares, como o VS Code e o CodeBlocks, até
outras opções que podem ser úteis para diferentes necessidades e preferências.
Além disso, abordaremos conteúdos como compiladores e interpretadores. Vamos entender
como essas ferramentas são essenciais para traduzir nosso código em instruções
compreensíveis para o computador, e discutiremos as diferenças fundamentais entre eles.
Por �m, vamos revisitar os conceitos básicos de linguagem de programação, explorando os
fundamentos que nos permitirão construir programas sólidos em C. Desde variáveis e tipos de
dados até estruturas de controle, pois este conteúdo é fundamental para continuar
desenvolvimento algoritmos e aprofundando em demais conteúdos.
Para ilustrar a aprendizagem do conteúdo desta aula, imagine que você foi incumbido de
desenvolver um sistema modular para gerenciar as vendas de uma loja de calçados. O sistema
precisa realizar operações como cadastrar produtos, realizar vendas, administrar o estoque e
emitir relatórios de vendas.
O encerramento desta aula se dará com a aplicação desses conceitos em um exemplo concreto,
demonstrando como esses conteúdos podem ser trabalhados de maneira e�caz.
Vamos Começar!
Compreender os elementos fundamentais da programação torna-se imperativo para aqueles que
desejam trilhar o caminho da codi�cação e�ciente e se tornar um desenvolvedor de softwares
robustos e e�cazes. Nesta aula, pois, discutiremos três deles: o ambiente de programação, os
compiladores e interpretadores, além dos conceitos básicos da linguagem de programação, com
foco especial na linguagem C.
Ambiente de programação
O ambiente de programação refere-se ao conjunto de ferramentas e recursos necessários para
escrever, compilar e executar o código. No caso da linguagem C, os programadores geralmente
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u3a1_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
usam ambientes integrados de desenvolvimento (IDEs), como o Code::Blocks ou o Visual Studio.
Essas ferramentas oferecem uma interface amigável, realce de sintaxe, depuração e outras
funcionalidades que facilitam o processo de escrita do código. Além dos IDEs, os programadores
também podem optar por ambientes de linha de comando, utilizando compiladores como o GCC.
Escolher o ambiente certo, assim, depende das preferências e requisitos especí�cos do projeto.
Imagine, a título de exemplo, que estamos usando o Code::Blocks como para desenvolver um
programa simples em C. Podemos começar criando um programa "Hello World" que exiba uma
mensagem na tela. O IDE nos fornece uma estrutura básica para começar, facilitando a escrita
do código e a compilação do programa.
Figura 1 | Hello World. Fonte: elaborada pelo autor.
A escolha do ambiente de programação é, portanto, crucial para o desenvolvimento e�ciente do
software. Além dos IDEs mencionados, como o Code::Blocks e o Visual Studio, é importante
explorar outras ferramentas, como o Visual Studio Code, que oferece suporte à linguagem C com
extensões especí�cas. Editores de texto mais leves, como o Atom e o Sublime Text, também são
opções viáveis devido à sua �exibilidade.
Ambientes de linha de comando
Ao optar por ambientes de linha de comando, os programadores podem escolher entre diferentes
compiladores, como o GCC e o Clang. Estes proporcionam maior controle sobre as opções de
compilação e vinculação, sendo uma abordagem mais manual e educativa.
 Para compreender melhor esse conceito, vamos expandir nosso exemplo prático para incluir a
entrada do usuário, a manipulação de variáveis e estruturas de controle básicas. Criaremos um
programa em C que solicita ao usuário um número, realiza uma operação simples e exibe o
resultado, o que permitirá um entendimento mais profundo das capacidades da linguagem C
desde o início.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 2 | Entrada e saída de dados em C. Fonte: elaborada pelo autor.
Compiladores
Compiladores desempenham um papel importantíssimo na programação em C. Eles traduzem o
código-fonte escrito pelo programador em linguagem de máquina, tornando-o executável. O
processo de compilação envolve várias etapas, incluindo análise léxica, análise sintática,
otimização de código e geração de código objeto. No contexto da linguagem C, o compilador
traduz o código-fonte (.c) em um arquivo objeto (.o), que é posteriormente ligado para formar o
executável �nal. O GCC (GNU Compiler Collection) é um exemplo comum de compilador utilizado
na linguagem C. Além dele, temos o Make�le, ferramenta auxiliar para automatizar o processo de
compilação e vinculação, especialmente útil em projetos mais complexos e extensos.
Observe a Figura 3, ela apresenta o compilador GCC em ação. No exemplo podemos ver que para
compilar o arquivo em “C” com o nome de “media.c”, é necessário executar o comando: (gcc
media.c -o media), que pode ser visualizado na Figura 3.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 3 | Compilando um programa em “C”. Fonte: elaborada pelo autor.
Após a compilação, vem o próximo passo que é a execução do programa denominado “media”.
Para isso, basta colocar o comando: (./media), e seu programa vai começar a execução, como
pode ser observado na Figura 4.
Figura 4 | Executando um programa em “C”. Fonte: elaborada pelo autor.
Interpretadores
Ao contrário dos compiladores, os interpretadores executam o código fonte linha por linha, sem
gerar um arquivo executável separado. Embora a linguagem C seja geralmente associada a
compiladores, outras linguagens, como Python e Javascript, frequentemente utilizam
interpretadores. Em algumas situações, o interpretador pode ser mais �exível, permitindo a
execução interativa de código. No entanto, a execução de código interpretado pode ser mais
lenta em comparação ao código compilado. Cada abordagem tem suas vantagens e
desvantagens, e a escolha depende do contexto e das necessidades especí�cas do projeto.
Conceitos básicos de linguagem de programação
Na linguagem C, os conceitos básicos incluem variáveis, as quais armazenam dados;
operadores, que manipulam esses dados; estruturas de controle (como condicionais e loops),
que controlam o �uxo do programa; funções, as quais organizam o código em blocos
reutilizáveis; e arrays, que armazenam coleções de dados. Compreendê-los é, portanto,
fundamental para construir programas e�cientes e funcionais em C.
Variáveis e tipos de dados
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
 Em C, começamos com variáveis, que são espaços de armazenamento para dados. As variáveis
têm tipos, como inteiros (int), números de ponto �utuante (�oat), caracteres (char), entre outros.
Figura 5 | Tipos de variáveis. Fonte: elaborada pelo autor.
Siga em Frente...
Estruturas de controle
As estruturas de controle, como condicionais e loops, são elementares. O if, else e switch
permitem controlar o �uxo do programa, enquanto for, while e do-while ajudam a repetir ações.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 6 | If/else. Fonte: elaborada pelo autor.
Funções
 As funções são blocos de código que realizam tarefas especí�cas. Elas promovem a
modularidade e a reutilização do código.
Disciplina
ALGORITMOS E LÓGICADE
PROGRAMAÇÃO
Figura 7 | Funções. Fonte: elaborada pelo autor.
Arrays e estruturas de dados
Arrays armazenam conjuntos de dados do mesmo tipo, enquanto estruturas de dados mais
complexas, como structs, permitem agrupar diferentes tipos de dados sob um único nome.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 8 | Vetor. Fonte: elaborada pelo autor.
Ao percorrer esta aula, espero que você tenha adquirido uma compreensão sólida dos elementos
essenciais da programação em linguagem C. Desde o ambiente de programação até a aplicação
prática de conceitos como funções e modularização, cada aspecto contribui para a formação de
um programador habilidoso. Continuar aplicando esses conhecimentos em projetos reais não
apenas fortalecerá suas habilidades em C, como também preparará o terreno para aventuras
futuras em outras linguagens de programação.
Lembre-se de que a programação é uma habilidade que se aprimora com a prática constante e a
resolução de desa�os reais. Que sua jornada no mundo da programação em linguagem C seja
repleta de descobertas, conquistas e, acima de tudo, diversão. Boa codi�cação!
Vamos Exercitar?
Vamos retomar a situação apresentada no início da aula, onde você foi incumbido de
desenvolver um sistema modular para gerenciar as vendas de uma loja de calçados. O sistema
precisa realizar operações como cadastrar produtos, realizar vendas, administrar o estoque e
emitir relatórios de vendas. A modularização, neste caso, é crucial para manter o código
organizado e permitir futuras expansões.
Vamos à resolução?
Módulo de cadastro de produtos
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Crie uma função cadastrarProduto que solicite ao usuário informações como modelo,
marca e preço do calçado.
Armazene os dados em uma estrutura ou em variáveis, simulando o cadastro do produto.
Módulo de vendas
Desenvolva uma função realizarVenda que, ao receber o modelo do calçado, efetue a venda,
atualizando o estoque e registrando a operação.
Considere manter um histórico de vendas com informações como data, cliente e valor total.
Módulo estoque
Implemente uma função gerenciarEstoque que permita ao usuário consultar a quantidade
disponível de determinado modelo de calçado.
Simule a atualização do estoque conforme as vendas são realizadas.
Módulo de relatórios
Crie uma função emitirRelatorio que apresente informações relevantes, como o total de
vendas em um período especí�co.
Considere utilizar estruturas de controle para �ltrar os dados necessários.
Na sequência, uma sugestão do desenvolvimento da situação é apresentada. Considere um
modelo de aprendizado replicando-o e implementando alterações para seu próprio aprendizado.
A ideia do método “main()” é apresentada com a inserção de um menu de operações, dando a
ideia do desenvolvimento de funções para as ações de cadastro de produtos, venda, consultado
de estoque, emissão de relatório de vendas e uma opção para sair do programa.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 9 | Venda de calçados. Fonte: elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
O desenvolvimento desse sistema para a venda de calçados é fundamental para garantir a
e�ciência e manutenção. A estrutura modular possibilita a construção independente de cada
funcionalidade, simpli�cando a detecção e correção de possíveis problemas. Além disso,
proporciona escalabilidade ao sistema, permitindo futuras adições sem comprometer a estrutura
existente. A utilização de funções especí�cas para cada módulo promove um código mais
organizado e compreensível, evidenciando a importância da modularização em projetos de
software.
Saiba mais
Para saber mais sobre os conceitos e aplicabilidade dos algoritmos e suas propriedades,
consulte os Capítulos 1 e 2 do livro Elementos de programação em C, de Pinheiro, disponível no
repositório da Biblioteca virtual.
PINHEIRO, F. de A. C. Capítulos 1 e 2. In: Elementos de programação em C. Porto Alegre:
Bookman, 2012, p. 1-30. 
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 2
Introdução à Linguagem C
Introdução à Linguagem C
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/10
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/10
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/10
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/10
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Nesta videoaula  vamos dar continuidade à nossa jornada de aprendizado, desta
vez explorando os fundamentos essenciais da programação através de temas como entradas,
saídas e operadores, linguagem de programação em C e tipos de dados.
Em primeira instância, estudaremos as entradas e saídas em um programa, como interagir com o
usuário e processar informações de maneira e�caz. Na sequência, mergulharemos no universo
da linguagem de programação C, desbravando suas características e compreendendo como ela
se tornou uma ferramenta poderosa na construção de softwares robustos.
Nesse trajeto, não poderíamos deixar de abordar os conceitos de tipos de dados, constantes e
variáveis, elementos fundamentais na construção de algoritmos e�cientes. Entender como
manipular e armazenar dados é crucial para o desenvolvimento de soluções inovadoras.
Participe ativamente desta jornada, explorando cada conceito com entusiasmo e engajamento.
Aprofundar seus conhecimentos nesses temas é o caminho para se tornar um programador
versátil e capacitado. Contamos com a sua participação para fazer desta aula uma etapa valiosa
em sua jornada de aprendizado. Vamos juntos desvendar os segredos por trás da programação e
aprimorar suas habilidades no mundo da computação.
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Olá, estudante! Seja bem-vindo à esta jornada através de temas cruciais que ampliarão sua
compreensão no vasto universo da programação. Inicialmente, vamos explorar os fundamentos
das entradas, saídas e operadores, entendendo não apenas o que são, mas também como esses
elementos são essenciais para a interação e processamento de dados em um programa.
Em seguida, daremos um mergulho na fascinante linguagem de programação C, desbravando
suas características introdutórias. Isso porque compreender os alicerces dessa linguagem é
primordial para se tornar pro�ciente no desenvolvimento de softwares robustos e e�cientes.
Nosso percurso incluirá, também, uma imersão nos tipos de dados, constantes e variáveis,
pilares indispensáveis na construção de algoritmos e�cazes. Aprender como manipular e
armazenar dados é, pois, capital para a criação de soluções inovadoras.
A introdução a funções e modularização fará parte desta jornada, proporcionando uma
percepção profunda de como estruturar e organizar código de maneira produtiva e a habilidade
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u3a2_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
de lidar com projetos mais complexos.
Para ilustrar a aprendizagem desta aula, imagine que você recebeu uma demanda para
desenvolver um aplicativo que será responsável pelo autoatendimento a usuários de um banco
digital. O sistema deve oferecer funcionalidades como login, consulta de saldo, entre outras.
O encerramento desta aula se dará com aos operadores aritméticos, foco do nosso
conteúdo, que são fundamentais para executar operações matemáticas básicas em algoritmos e
programas.
Os operadores aritméticos são responsáveis por realizar operações matemáticas entre variáveis
e valores. São eles: adição, subtração, multiplicação e divisão, incluindo este último o resto.
Soma (+) Realiza a adição entre dois valores. Exemplo:
a + b.
Subtração (-) Efetua a subtração entre dois valores.
Exemplo: a - b.
Multiplicação (*) Executa a multiplicação entre dois valores.
Exemplo: a * b.
Divisão (/) Realiza a divisão entre dois valores.
Exemplo: a / b.
Resto (%) Retorna o resto da divisão entre dois
valores. Exemplo: a % b.
Quadro 1 | Operadores aritméticos. Fonte: elaborado pelo autor.
A título de ilustração considere duas variáveis do tipo real ("a" e "b"), com valores 10 e 5,
respectivamente, e o resultado de cinco (5) instruções com os operadores aritméticos aqui
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
apresentados.
Soma: a + b resulta em 15.
Subtração: a - b resulta em 5.
Multiplicação: a * b resulta em 50.
Divisão: a / b resulta em 2.
Resto: a % b resulta em 0.
Quadro 2 | Instruções com operadores aritméticos. Fonte: elaborado pelo autor.
Observe que todos os operadores fazem o seu papel e apresentam o resultado corretamente. O
operador aritmético resto, talvez o menos trivial, retorna o resto da divisão entre dois valores: 10 /
5 é igual a 2, porém o resto é 0 (zero), pois a conta foi exata. Portanto, o resultado de a % b é = 0
e está correto.
Esses exemplos mostram como os operadores aritméticos podem ser aplicados em situações
reais, sendo fundamentais para cálculos matemáticos dentro de algoritmos. Eles são, assim,
peças-chave na caixa de ferramentas do programador, permitindo realizar cálculos essenciais em
seus programas. Compreender o funcionamento desses operadores é primordial para
desenvolver algoritmos e�cientes e resolver uma variedade de problemas computacionais.
Portanto, ao explorar e praticar o uso desses operadores, você fortalecerá sua base na lógica de
programação e estará preparado para desa�os mais complexos no desenvolvimento de
software.
Tipos de dados
Os tipos de dados são a base para representar e manipular informações em um programa. Eles
de�nem o conjunto de valores que uma variável pode armazenar, proporcionando uma riqueza de
expressão aos nossos algoritmos. Vamos abordar, nesta seção, os tipos primitivos de dados, a
saber, os inteiros, reais, caracteres e lógicos, compreendendo suas peculiaridades e explorando
como são utilizados na linguagem de programação.
Os tipos primitivos de dados estão presentes em todas as linguagens de programação, porém
estas também possuem variações desses tipos, daí serem chamados de primitivos. Por exemplo,
na linguagem C# (Sharp), temos, além do tipo "int", que é o tipo inteiro do Portugol, o tipo "long",
ou um inteiro longo. Mas essa linguagem, a exemplo das outras, contêm os tipos primitivos em
sua sintaxe.
Tipos inteiros: representam números inteiros, ou seja, valores sem parte fracionária. Em
muitas linguagens de programação, assim como na pseudolinguagem Portugol, os inteiros
podem ser positivos ou negativos. Por exemplo, os valores 0, -15, 4185, -3760 são
classi�cados como inteiros. Costumamos dizer, também, que o tipo de dado de�ne qual
informação possível será trabalhada, ou seja, quando designamos um objeto qualquer
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
como inteiro, estamos nos limitando a esse tipo de valor, apenas, isto é, a números sem
casas decimais.
Tipos reais: representam números inteiros e números fracionários, ou seja, valores
numéricos de qualquer tipo. Podemos fazer uma comparação dizendo que os tipos reais
atendem os tipos inteiros e ainda são capazes de trabalhar com números fracionários.
Exemplos de valores dos tipos reais podem ser: -15, 18, 0, -5.3, 48.69, -5.593, etc. É muito
comum o processamento de cálculos matemáticos em programas de computadores, por
essa razão, utilize sempre variáveis do tipo real para garantir que eles não apresentem
falhas.
Tipos caracteres: para representar palavras ou um conjunto de caracteres, textos, símbolos
especiais ou, ainda, números em conjunto com informações textuais, utilizamos o tipo de
dado caractere. Para trabalhar com a informação do endereço de uma pessoa, por
exemplo, teremos valores textuais em conjunto com números, "Av. Brasil, 248". Repare que
nessa informação há o logradouro, o nome do dele e o número, todos representados pelo
tipo caractere. Essa categoria inclui letras, números, símbolos e espaços, e sua forma de
representação sempre será dentro de aspas duplas (" "). Explicando melhor: se o número
5000 aparecer sozinho, ele pode ser considerado um valor inteiro, mas se aparecer entre as
aspas "5000", ele passa a ser caractere. Outra restrição para o número enquanto caractere
é a impossibilidade de participar de operações matemáticas, pois ele não é um valor
numérico, mas sim um valor textual. O que acontece, então. se tivermos a seguinte
instrução: "5000" + "5000"? Muitos vão querer efetuar a soma dos valores achando que o
resultado dessa expressão seria o valor 10000, porém, quando se tem dois valores textuais,
o operador matemático de adição "+" faz o que chamamos na programação de
concatenação, que é a junção dos dois valores. Então, a instrução "5000" + "5000" é igual a
"50005000".
Tipos lógicos: lidam com valores de verdadeiro ou falso e são importantes dentro do
desenvolvimento de algoritmos mais complexos. Para uma linguagem de programação,
trabalhada no idioma inglês, esses valores serão TRUE ou FALSE. Eles são utilizados para
armazenar, por exemplo, o retorno de uma função, conteúdo que será abordado mais ao
�nal de nossa disciplina. Em Portugol, a manipulação desses tipos de dados é intuitiva.
Podemos realizar operações matemáticas, comparações e concatenações de caracteres
de forma simples, uma vez que a linguagem facilita o entendimento dos conceitos antes de
lidar com sintaxes mais complexas.
No Quadro 3, é possível visualizar um exemplo dos tipos de dados primitivos apresentados nesta
aula e os valores que podem ser armazenados em variáveis de cada um deles.
Tipo de dado Exemplo
Inteiro 35
Real -3,14165
Caractere “ANDERSON”
Lógico FALSO
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Quadro 3 | Exemplo de tipos de dados. Fonte: elaborada pelo autor.
Percebemos, assim, a importância que esses elementos desempenham na construção sólida do
conhecimento em programação. Ao compreender os tipos de dados primitivos, como inteiros,
reais, caracteres e lógicos, abrimos as portas para a manipulação e�ciente da informação no
mundo digital. Além disso, ao explorá-los, desenvolvemos uma compreensão mais profunda da
natureza dos dados e das operações que podemos realizar sobre eles.
Portanto, ao encerrar esta jornada, incentivamos a prática contínua e a aplicação desses
conhecimentos em desa�os do mundo real. Aprofundar-se nesse domínio não só enriquecerá
suas habilidades de programação, como também abrirá novas possibilidades criativas e
analíticas em seu percurso educacional e pro�ssional.
Vamos Exercitar?
Vamos retomar a situação apresentada no início da aula: um restaurante movimentado, onde a
equipe enfrenta desa�os para registrar os pedidos dos clientes de maneira e�ciente. Para
melhorar esse processo, é necessário criar um sistema simples que armazene informações
essenciais sobre os pedidos.
Os dados a serem registrados incluem o nome do prato escolhido, a quantidade desejada e o
valor unitário de cada item. Vamos à resolução!
Registro do prato
Solicite ao cliente que informe o nome do prato desejado.
Armazene o nome do prato em uma variável do tipo “Caractere”.
Registro da quantidade
Pergunte ao cliente a quantidade desejada do prato escolhido.
Armazene a quantidade em uma variável do tipo “Inteiro”.
Registro do valor unitário
Peça ao cliente para informar o valor unitário do prato.
Armazene o valor unitário em uma variável do tipo “Real”.aplicação desses conceitos em exemplos concretos,
demonstrando como as entradas, saídas, operadores, linguagem de programação C, tipos de
dados, constantes e variáveis se entrelaçam de maneira poderosa. Bons estudos! 
Vamos Começar!
A compreensão dos conceitos anteriormente mencionados é, então, indispensável para
estabelecer as bases necessárias para a programação em C.
Nesse contexto, a manipulação de dados é uma peça fundamental. As entradas representam a
maneira como um programa recebe informações do usuário ou de fontes externas, enquanto as
saídas são os resultados ou respostas gerados pelo programa. Para conectar esses processos,
utilizamos operadores, que são símbolos ou palavras-chave que executam operações especí�cas
sobre os dados, permitindo a construção de algoritmos complexos.
Quanto à linguagem de programação C, desenvolvida por Dennis Ritchie nos anos 70, ela é
conhecida por sua e�ciência e versatilidade. Amplamente utilizada em sistemas operacionais,
drivers de hardware e aplicativos de baixo nível, C é apreciada por sua sintaxe clara e poderosa.
Sua abordagem procedural favorece o controle direto sobre a memória, proporcionando aos
programadores um nível de otimização crucial em projetos de software.
Já os tipos de dados são categorias que especi�cam quais valores uma variável pode
armazenar. Constantes são valores �xos que não podem ser alterados durante a execução do
programa, enquanto variáveis são espaços de armazenamento nomeados que podem conter
valores mutáveis ao longo do tempo. A escolha adequada entre constantes e variáveis é capital
para a e�ciência e clareza do código, permitindo ao programador gerenciar dados de forma
e�caz e �exível.
Entradas, saídas de dados em C
Vamos começar entendendo a importância das entradas e saídas em C. No contexto da
programação, a entrada refere-se às informações que o programa recebe do usuário ou de outras
fontes, enquanto a saída representa os resultados ou mensagens exibidas para o usuário. Em C,
utilizamos a função scanf para receber entradas e printf para exibir saídas. No entanto, é
importante compreender a necessidade de fornecer formatos corretos ao utilizar a função scanf.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Por exemplo, %d é usado para números inteiros e %f para números de ponto �utuante. Essa
atenção aos detalhes garante uma interação �uida entre o usuário e o programa.
A prática desses conceitos pode ser observada na Figura 1:
Figura 1 | Printf e scanf. Fonte: elaborada pelo autor.
Neste exemplo, o programa solicita ao usuário que insira um número inteiro, armazena esse valor
na variável número e, em seguida, exibe a entrada do usuário de volta. Essa interação forma a
base para construir programas mais dinâmicos e úteis.
Operadores aritméticos, relacionais e lógicos em C
A compreensão abrangente dos operadores é essencial para manipular dados e realizar
operações em C. Os operadores aritméticos (+, -, *, /, %), assim, são fundamentais para realizar
cálculos matemáticos. Por exemplo, podemos calcular a soma de dois números como:
int resultado = 10 + 5;  // Aqui,
o “resultado” será 15
Já os operadores relacionais (==, !=, , =) são empregados para comparar valores e são
vitais em estruturas de controle de �uxo, como o condicional if. Considere o seguinte exemplo:
Figura 2 | Operadores relacionais. Fonte: elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Neste caso, o programa veri�ca se a condição (a 0) e (y indica que
estamos utilizando funções de entrada e saída padrão da biblioteca C.
Controle de �uxo
A linguagem de programação C permite o uso de estruturas de controle de �uxo, como if, else,
while, e for. Estas são fundamentais para a tomada de decisões e repetição de instruções.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 5 | Controle de �uxo em C. Fonte: elaborada pelo autor.
Para ilustrar a utilização da linguagem C em um contexto prático, vamos criar um programa
simples que veri�ca a possibilidade de voto com base na idade do usuário.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 6 | Veri�cação da possibilidade de voto. Fonte: elaborada pelo autor.
Neste exemplo, o programa solicita ao usuário que insira sua idade. Em seguida, utilizando uma
estrutura condicional if, veri�ca se a idade fornecida é igual ou superior a 16 anos, a idade
mínima para votar no Brasil. Dependendo do resultado, o programa exibe uma mensagem
indicando se o usuário é elegível para votar ou não.
Esse programa simples mostra como a linguagem C pode ser utilizada para criar algoritmos que
tomam decisões com base em condições especí�cas. A estrutura de controle de �uxo if é,
portanto, uma ferramenta essencial para criar lógica condicional em seus programas.
Tipos de dados: constantes e variáveis
Em C, os tipos de dados são essenciais para de�nir o tipo de informação que uma variável pode
armazenar. Os principais tipos de dados incluem:
Inteiros (int): usados para armazenar números inteiros, positivos ou negativos. Por
exemplo:
int idade = 25;
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Ponto �utuante (�oat, double): utilizados para armazenar números decimais. O �oat tem
uma precisão menor em comparação ao double. Por exemplo:
�oat altura =
1.75;
Caracteres (char): armazena um único caractere. Por exemplo:
char letra = 'A';
Lógicos (bool): representa valores booleanos true ou false. Exemplo:
bool estaChovendo = 1;  //
true
Para esse tipo de dado, deve ser usada a bibliioteca stdbool.h. Para isso, basta acrescentar um
"include" no início do código
Outros tipos de dados: C oferece outros tipos de dados, como short, long, e unsigned para
variações nos tipos primitivos mencionados.
Constantes
Constantes são valores �xos que não podem ser alterados durante a execução do programa. Em
C, existem dois tipos principais de constantes:
Constantes literais: são valores especí�cos escritos diretamente no código. Por exemplo:
int ano =
2022;
Constantes simbólicas (usando #de�ne): são identi�cadores associados a um valor
constante. Por exemplo:
#de�ne PI
3.14
Variáveis
Variáveis são espaços de armazenamento com um nome especí�co que representam valores
modi�cáveis durante a execução do programa. A declaração de uma variável envolve a de�nição
do tipo de dado que ela pode armazenar. Exemplo:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
int quantidade = 10;
As variáveis oferecem �exibilidade, permitindo a manipulação e o armazenamento dedados
dinâmicos durante a execução do programa.
Em resumo, a linguagem C é uma ferramenta poderosa e versátil para programação de sistemas
e aplicações de baixo nível. Sua sintaxe clara, combinada a um controle preciso sobre a máquina,
a torna uma escolha valiosa para desenvolvedores.
Vamos Exercitar?
Retomando o cenário apresentado no início da aula, você foi designado para criar um sistema
modular para o autoatendimento no aplicativo de um banco digital. Este sistema deve oferecer
funcionalidades como login na conta do usuário, consulta de saldo e realização de depósitos
bancários. A modularização desempenha um papel fundamental para garantir a e�ciência e
manutenção deste sistema, permitindo a construção independente de cada funcionalidade e
facilitando a detecção e correção de possíveis problemas.
Módulo de login
Crie uma função realizarLogin() que solicite ao usuário seu nome de usuário e senha.
Veri�que se as credenciais fornecidas estão corretas e conceda acesso à conta do usuário.
Módulo de consulta de saldo
Desenvolva uma função consultarSaldo() que exiba o saldo disponível na conta do usuário.
Acesse os dados do cliente e apresente o saldo atualizado.
Módulo de depósitos bancários
Implemente uma função realizarDeposito() que permita ao usuário realizar um depósito em
sua conta.
Solicite o valor a ser depositado e atualize o saldo na conta do usuário.
Na sequência, é apresentada uma sugestão para resolução dessa atividade no formato de
codi�cação em “C”:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 7 | Resolução da atividade. Fonte: elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 8 | Resolução da atividade - cont. Fonte: elaborada pelo autor.
O desenvolvimento deste sistema para o autoatendimento no aplicativo de um banco digital é
essencial para proporcionar uma experiência e�ciente e conveniente aos clientes. A estrutura
modular permite a adição de novas funcionalidades sem comprometer a estrutura existente,
garantindo a escalabilidade do sistema. A utilização de funções especí�cas para cada módulo
promove um código mais organizado e compreensível, destacando a importância da
modularização em projetos de software neste contexto bancário digital.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Saiba mais
Para compreender profundamente questões relacionadas a valores de entrada e saída de
informações, consulte o Capítulo 1 do livro Algoritmos – Teoria e Prática, de Cormen, disponível
no repositório da Biblioteca virtual.
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022, p. 1-3. 
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 3
Estruturas Condicionais em Linguagem C
Estruturas condicionais em linguagem C
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Nesta videoaula nos concentraremos nas estruturas condicionais.
https://integrada.minhabiblioteca.com.br/reader/books/9788595158092/epubcfi/6/16[%3Bvnd.vst.idref%3Dchapter01]!/4
https://integrada.minhabiblioteca.com.br/reader/books/9788595158092/epubcfi/6/16[%3Bvnd.vst.idref%3Dchapter01]!/4
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Vamos explicar como elas são fundamentais para controlar o �uxo de execução de um
programa. A estrutura condicional simples permitirá que você tome decisões com base em uma
condição única, enquanto a estrutura condicional composta expandirá suas habilidades,
possibilitando a avaliação de múltiplas condições.
Já com a estrutura condicional encadeada, você aprenderá a lidar com situações mais
complexas, nas quais as decisões podem depender de uma série de condições inter-
relacionadas. Compreender essa técnica é, pois, crucial para o desenvolvimento de algoritmos
mais so�sticados.
Além disso, destacaremos a execução sequencial, que é a base para a organização lógica de um
programa. Em outras palavras, entender como as instruções são executadas em ordem
sequencial é vital para garantir o funcionamento adequado do código.
Portanto, participe ativamente desse aprendizado, explorando cada conceito com entusiasmo e
dedicação. Aprofundar suas habilidades nessas áreas é essencial para se tornar um
programador completo e competente. 
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Olá, estudante! Seja bem-vindo à esta aula sobre estruturas condicionais, fundamentais para o
controle lógico de um programa.
Começaremos com a estrutura condicional simples, a qual permite que você tome decisões com
base em uma única condição, fator primordial para controlar o �uxo do programa de maneira
e�ciente. Em seguida, avançaremos para a estrutura condicional composta, em que a avaliação
de múltiplas condições se torna possível, proporcionando maior �exibilidade na tomada de
decisões.
A estrutura condicional encadeada será o nosso próximo destino, explorando situações mais
complexas nas quais as decisões dependem da inter-relação de diversas condições. O domínio
dessa técnica é, deste modo, essencial para o desenvolvimento de algoritmos mais so�sticados
e robustos.
Não podemos, do mesmo modo, subestimar a importância da execução sequencial. Esta é a
base para a organização lógica de um programa, garantindo que as instruções sejam executadas
em ordem cronológica, e sua compreensão é vital para o funcionamento adequado do código.
Como exemplo prático, você deverá desenvolver de um algoritmo que irá classi�car um triângulo
em um determinado tipo, sendo: isósceles, escaleno ou equilátero.
A aplicação prática dessas estruturas em exemplos concretos encerrará esta aula,
demonstrando como elas se entrelaçam e�cazmente para criar programas funcionais e
robustos.
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u3a3_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Aproveite ao máximo este material e construa uma base sólida para sua trajetória na área de
algoritmos e lógica de programação. Sua dedicação ao estudo desses conceitos será importante
para que você se torne um programador habilidoso, capaz de enfrentar desa�os mais complexos.
Bom aprendizado! 
Vamos Começar!
A linguagem de programação C, venerável em sua simplicidade e poder, é um pilar fundamental
no mundo da computação. O C tem um papel determinante na construção de sistemas
operacionais, compiladores e uma miríade de aplicações de software. Nesta aula, exploraremos
as estruturas condicionais em C, um elemento vital que concede aos desenvolvedores o poder de
tomada de decisões em seus programas. Essas estruturas são a espinha dorsal para a criação
de algoritmos dinâmicos e adaptáveis, tornando-se uma competência essencial para qualquer
programador em C.
O ponto de partida é a estrutura condicional simples, que permite a execução de um bloco de
código com base em uma condição especí�ca. À medida que avançamos, entraremos na
complexidade da estrutura condicional composta, que expande as possibilidades, oferecendo
caminhos distintos a depender das condições. Aprofundaremos nossos estudos com a estrutura
condicional encadeada, a qual proporciona a capacidade de avaliar múltiplas condições
sequencialmente. Além disso, discutiremos a execução sequencial, não estritamente uma
estrutura condicional, mas um aspecto vital para a coerência e lógica do �uxo do programa em C.
Ao compreender esses conceitos, os programadores se equiparão com as ferramentas
necessárias paracriar programas e�cientes e inteligentes, aproveitando ao máximo o potencial
da linguagem C.
Estrutura condicional simples
A estrutura condicional simples é a base da tomada de decisões em C. Ela permite a execução
de um bloco de código apenas se uma condição for verdadeira. Observe o exemplo:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Condicional simples. Fonte: elaborada pelo autor.
Aqui, a mensagem "Você é maior de idade" será exibida apenas se a condição idade maior ou
igual a 18 for verdadeira.
Estrutura condicional composta
A estrutura condicional composta permite a execução de diferentes blocos de código,
dependendo de uma condição. Vejamos a Figura 2:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 2 | Condicional composta. Fonte: elaborada pelo autor.
Neste exemplo, há dois blocos distintos de código, um para o caso em que o número é positivo e
outro para quando não é positivo.
Siga em Frente...
Estrutura condicional encadeada
A estrutura condicional encadeada permite lidar com várias condições em sequência. Cada bloco
de código depende da avaliação das condições anteriores. Observe:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 3 | Condicional encadeada. Fonte: elaborada pelo autor.
Na Figura 3, diferentes mensagens são exibidas com base na faixa de nota em que o aluno se
encontra.
Execução sequencial
A execução sequencial em programação refere-se à ordem em que as instruções são
executadas, seguindo um �uxo linear de cima para baixo no código. Em C, como em muitas
outras linguagens, as instruções são processadas uma após a outra, na ordem em que aparecem
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
no código-fonte, sem desvios automáticos, a menos que uma estrutura de controle, como a
condicional, seja utilizada para modi�car esse �uxo. Isso signi�ca que a primeira instrução é
executada, seguida pela segunda, e assim por diante, até o �nal do programa. O controle do
programa é transferido de uma instrução para a próxima de maneira linear, sem pulos
automáticos.
A execução sequencial é, pois, a essência do funcionamento padrão de um programa e
representa a forma mais básica de controle de �uxo. Sua importância reside na previsibilidade e
na compreensão clara do �uxo de um programa. Ela oferece uma estrutura lógica e fácil de
seguir, facilitando a leitura, manutenção e depuração do código. Ao entender como as instruções
são executadas sequencialmente, os programadores podem antecipar o comportamento de seus
programas e identi�car com precisão onde e como as variáveis são modi�cadas ao longo do
tempo.
Em suma, é fundamental aprender a execução sequencial como base para estruturas de controle
mais avançadas, como as estruturas condicionais e de repetição. Estas introduzem desvios no
�uxo sequencial, permitindo que os programas tomem decisões ou repitam certas instruções
com base em condições especí�cas. Assim, a execução sequencial não apenas fornece clareza
no �uxo padrão do programa, mas também serve como alicerce para a construção de algoritmos
mais complexos e dinâmicos.
A título de ilustração, imagine um programa que solicite ao usuário dois números, some eles e,
em seguida, exiba o resultado.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 4 | Estrutura de uma execução sequencial. Fonte: elaborada pelo autor.
Neste exemplo direto de execução sequencial, cada instrução é executada em ordem:
1. Solicitamos ao usuário que insira o primeiro número.
2. Em seguida, solicitamos o segundo número.
3. Calculamos a soma dos dois números.
4. Finalmente, exibimos o resultado da soma.
Cada passo, portanto, é concluído antes de passarmos para o próximo. A execução sequencial,
nesse sentido, é determinante para a compreensão direta do �uxo do programa, tornando-o mais
legível e fácil de entender.
Em síntese, as estruturas condicionais em C representam a espinha dorsal da capacidade de um
programa fazer escolhas inteligentes em tempo de execução. Seu entendimento claro é crucial e
permite que determinados blocos de código sejam acionados com base em condições
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
especí�cas. Expandindo esse conhecimento para estruturas condicionais compostas, os
programadores podem criar lógicas mais complexas, dando ao programa a capacidade de se
adaptar a uma variedade de circunstâncias.
A estrutura condicional encadeada eleva ainda mais essa �exibilidade, possibilitando que
diferentes cenários se desdobrem sequencialmente e garantindo que cada condição seja
avaliada em ordem. Esse nível de controle é essencial para a construção de softwares
adaptáveis e capazes de responder de maneira dinâmica a diferentes entradas e variáveis. Em
paralelo, a execução sequencial, embora não seja uma estrutura condicional direta, desempenha
um papel importante na orquestração lógica de um programa, estabelecendo a sequência de
operações de maneira clara e compreensível.
Ao dominar esses conceitos, os programadores não apenas criam programas mais e�cientes,
mas também desenvolvem a habilidade de construir soluções complexas de maneira
estruturada. A capacidade de tomar decisões informadas e executar ações condicionais não só
confere robustez ao software, mas também constitui a base para a criação de algoritmos
inteligentes e adaptáveis. Assim, a compreensão profunda das estruturas condicionais, aliada à
execução sequencial, aprimora a qualidade do código e capacita os desenvolvedores a
enfrentarem desa�os de programação de forma mais e�caz e criativa.
Vamos Exercitar?
Como apresentado no início da aula, você irá desenvolver um sistema modular para classi�car
triângulos com base nas medidas de seus três lados. Este sistema deve oferecer funcionalidades
como veri�car se os lados formam um triângulo válido e determinar o tipo de triângulo
(equilátero, isósceles ou escaleno).
Vamos à resolução?
Módulo de veri�cação de triângulo
Crie uma função veri�carTriangulo() que receba como entrada as medidas dos três lados e
veri�que se esses valores formam um triângulo válido.
Utilize a propriedade de que a soma de dois lados de um triângulo é sempre maior que o
terceiro lado.
Módulo de classi�cação de triângulo
Desenvolva uma função classi�carTriangulo() que, ao receber as medidas dos três lados do
triângulo válido, determine se é equilátero (três lados iguais), isósceles (dois lados iguais)
ou escaleno (três lados diferentes).
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Utilize estruturas de controle para comparar os valores dos lados e determinar o tipo de
triângulo.
Na sequência, será apresentadoa uma sugestão para resolução dessa atividade no formato de
codi�cação em “C”:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 5 | Veri�car triângulo. Fonte: elaborada pelo autor.
O desenvolvimento deste sistema para a classi�cação de triângulos é essencial para garantir a
e�ciência e manutenção. A estrutura modular permite a adição de novas funcionalidades sem
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
comprometer a estrutura existente, garantindo a escalabilidade do sistema. A utilização de
funções especí�cas para cada módulo promove um código mais organizado e compreensível,
destacando a importância da modularização em projetos de software neste contexto de
geometria computacional.
Saiba mais
Para saber mais sobre as estruturas condicionais e de seleção, consulte o Capítulo 4 do livro
Programação em C++, de Aguilar, disponível no repositório da Biblioteca virtual.
AGUILAR, L. J. Capítulo 4. In: Programação em C++. São Paulo: McGraw-Hill, 2008, p. 137-160.
Referências
AGUILAR, L. J. Programação em C ++. São Paulo: McGraw-Hill, 2008.
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI,N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 4
Operadores na Linguagem C
Operadores na linguagem C
Este conteúdo é um vídeo!
https://integrada.minhabiblioteca.com.br/reader/books/9788580550269/pageid/164
https://integrada.minhabiblioteca.com.br/reader/books/9788580550269/pageid/164
https://integrada.minhabiblioteca.com.br/reader/books/9788580550269/pageid/164
https://integrada.minhabiblioteca.com.br/reader/books/9788580550269/pageid/164
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Nesta videoaula exploraremos alguns conceitos essenciais na linguagem de
programação C: as atribuições múltiplas, os operadores aritméticos, a conversão de tipos em
atribuições e o prático operador de atribuição. Mostraremos como atribuir valores a várias
variáveis de uma vez e dominar operações matemáticas básicas. Aprenderemos, também, como
converter tipos de dados para ampliar as opções e tornar as tarefas de atribuição mais concisas.
Ao entender esses conceitos, você ganhará ferramentas poderosas para escrever códigos mais
e�cientes e se tornará um programador mais versátil. 
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Olá, estudante! Seja bem-vindo à esta aula, onde abordaremos três tópicos essenciais que são os
pilares da programação: atribuições múltiplas, operadores aritméticos e conversão de tipos em
atribuições.
Atribuições múltiplas: este conceito pode parecer simples à primeira vista, mas é uma
ferramenta poderosa nas mãos de um programador habilidoso. A capacidade de atribuir
valores a múltiplas variáveis simultaneamente pode economizar tempo e tornar o código
mais limpo e legível.
Operadores aritméticos: os operadores aritméticos são as ferramentas que nos permitem
realizar cálculos em nossos programas. Desde as operações básicas de adição, subtração,
multiplicação e divisão até operações mais complexas como exponenciação e resto da
divisão, os operadores aritméticos são essenciais para manipular números em nossos
programas.
Conversão de tipos em atribuições: às vezes, precisamos converter um tipo de dado em
outro para realizar certas operações ou atender a requisitos especí�cos do programa. A
conversão de tipos em atribuições nos permite fazer exatamente isso. Durante esta aula,
exploraremos como realizar conversões de tipos em atribuições e entenderemos a
importância desse conceito ao lidar com diferentes tipos de dados em nossos programas.
Para ilustrar o aprendizado desta aula, imagine que você deverá  desenvolver um sistema
modular para veri�car se determinado produto está corretamente com o mesmo peso indicado
no rótulo.
Explore, ao máximo, o material desta aula e pratique os conteúdos abordados. Juntos,
construiremos uma base sólida para sua trajetória na área de algoritmos e lógica de
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u3a4_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
programação.
Ao �nal desta aula, você estará mais familiarizados com esses conceitos fundamentais da
programação. Estaremos prontos para dar os primeiros passos em direção a uma compreensão
mais profunda da arte da codi�cação.
Portanto, vamos mergulhar de cabeça nestes conteúdos! Preparem-se para desa�ar suas
mentes, expandir seus horizontes e se tornarem mestres na arte de criar software. O aprendizado
começa agora!
Bons estudos!
Vamos Começar!
A linguagem de programação C permanece como uma pedra angular na construção de sistemas
e aplicativos, sendo venerada por sua e�ciência, simplicidade e controle direto sobre o hardware.
Desde a sua criação, o C tem se destacado como a base para o desenvolvimento de inúmeras
aplicações críticas, desde sistemas operacionais até sistemas embarcados. Sua in�uência é tão
profunda que muitas linguagens modernas ainda têm elementos inspirados em C. Dentro deste
vasto ecossistema, dois conceitos fundamentais se destacam: as atribuições múltiplas e os
operadores aritméticos, que determinam a manipulação e�caz de dados e variáveis.
No universo das atribuições múltiplas, C oferece uma ferramenta poderosa que permite a
inicialização simultânea de várias variáveis com um único valor, simpli�cando o código e
melhorando sua clareza. Essa capacidade reduz a quantidade de linhas de código necessárias, e
promove uma estrutura mais concisa e compreensível. Os operadores aritméticos, por sua vez,
fornecem os blocos de construção essenciais para realizar operações matemáticas, desde
cálculos simples até algoritmos mais complexos. Sua presença é vital para a manipulação
e�ciente de dados numéricos, conferindo �exibilidade e precisão ao desenvolvimento em C.
Entretanto, a riqueza dessa linguagem vai além de conceitos isolados. A necessidade de
conversão de tipos em atribuições destaca-se como um aspecto crítico, especialmente quando é
necessário transferir dados entre variáveis de diferentes tipos. A habilidade de realizar essa
conversão, seja de forma explícita ou implícita, é primordial para garantir a coerência dos dados
e o bom funcionamento do código. Complementando esses conceitos, os operadores de
atribuição, incluindo suas formas combinadas, emergem como recursos versáteis para a
manipulação dinâmica de variáveis, permitindo não apenas a atribuição de valores, como
também a realização de operações complexas de forma e�ciente. Assim, compreender
profundamente esses elementos é importante para desvendar todo o potencial que a linguagem
C oferece, capacitando os programadores a criarem soluções robustas e efetivas.
Atribuições múltiplas e operadores aritméticos
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Em C, a capacidade de realizar atribuições múltiplas é uma característica notável que oferece
uma maneira e�ciente de inicializar várias variáveis com um único valor. Essa funcionalidade
simpli�ca o código e melhora signi�cativamente sua legibilidade, tornando-o mais conciso e
compreensível. Por meio dessa abordagem, é possível reduzir a quantidade de linhas de código
necessárias, resultando em programas mais re�nados e fáceis de manter.
Figura 1 | Atribuição de valores. Fonte: elaborada pelo autor.
Como podemos observar na Figura 1, as variáveis a, b e c são, em uma única instrução, todas
atribuídas ao valor 10, o que economiza espaço no código-fonte e cria uma relação explícita
entre elas, facilitando a compreensão por outros programadores e pelo próprio desenvolvedor
em futuras revisões.
Os operadores aritméticos em C têm, portanto, um papel crucial na realização de cálculos
matemáticos e na manipulação de dados numéricos. Além dos operadores básicos, como adição
(+), subtração (-), multiplicação (*) e divisão (/), há também o operador de módulo (%), que
retorna o resto da divisão entre dois números. A correta compreensão da precedência desses
operadores é fundamental para garantir que as operações sejam executadas na ordem desejada,
permitindo a construção de expressões matemáticas complexas de forma precisa.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Essa combinação de atribuições múltiplas e operadores aritméticos não apenas agiliza o
desenvolvimento, como também contribui para a e�ciência do código em C. Ao empregar esses
recursos, os programadores podem criar algoritmos mais claros, concisos e e�cientes,
promovendo uma abordagem e�caz na manipulação de variáveis e na execução de operações
matemáticas.
Conversão de tipos em atribuições
Em programação, a manipulação de dados muitas vezes envolve a transferência de valores entre
variáveis de diferentes tipos. A conversão de tipos em atribuições é determinante nesse
contexto, permitindo que programadores ajustem a representação dos dados conforme
necessário, garantam sua coerência e evitem perdas de informação durante o processo.Em C,
essa conversão pode ser explícita ou implícita, dependendo da situação e da compatibilidade
entre os tipos envolvidos.
Figura 2 | Conversão explícita. Fonte: elaborada pelo autor.
No exemplo da Figura 2, uma conversão explícita é realizada para transformar a variável inteiro
de tipo int para �oat. Essa abordagem é útil quando se deseja preservar a parte decimal de um
número durante a atribuição. A compreensão detalhada das regras de conversão de tipos em C é,
assim, essencial para evitar comportamentos inesperados e garantir a integridade dos dados ao
longo do programa.
A conversão implícita de tipos também ocorre em situações em que o compilador
automaticamente ajusta os tipos para realizar operações. Por exemplo:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 3 | Conversão implícita. Fonte: elaborada pelo autor.
Neste caso, o valor inteiro é implicitamente convertido para um número de ponto �utuante antes
de realizar a adição. O entendimento dessas nuances é, então, capital para programadores que
buscam escrever um código robusto e preciso em C, assegurando que as conversões de tipos
ocorram de maneira adequada e sem perda de dados.
Siga em Frente...
Operador de atribuição
O operador de atribuição (=) é o bloco fundamental na alocação e modi�cação de valores em
variáveis em C. Simples em sua forma, esse operador desempenha um papel central na
construção de algoritmos, permitindo que os desenvolvedores atribuam valores a variáveis de
maneira direta. Além disso, em C, existem operadores de atribuição combinados, como +=, -= e
*=, que possibilitam atribuir valores e realizar operações simultâneas. Esses operadores
combinados contribuem para um código mais conciso e legível, agregando e�ciência e
expressividade à linguagem. Considere o seguinte exemplo:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 4 | Incremento com operador de atribuição. Fonte: elaborada pelo autor.
Na Figura 4, o operador combinado += incrementa o valor atual da variável x por 3. Essa
abordagem concisa é especialmente útil em loops e em situações em que a atualização de
variáveis é uma parte recorrente do algoritmo.
Em conjunto, as atribuições múltiplas, operadores aritméticos e operadores de atribuição são
instrumentos elementares no arsenal do programador C. Esses conceitos trabalham lado a lado
para simpli�car a inicialização e manipulação de variáveis, bem como para realizar cálculos
matemáticos de maneira e�ciente.
Conclusão
Em síntese, as atribuições múltiplas, os operadores aritméticos e a conversão de tipos em
atribuições formam a tríade essencial para programadores que buscam explorar todo o potencial
da linguagem C. A capacidade de realizar atribuições múltiplas, assim, oferece uma maneira
e�ciente de inicializar variáveis, promovendo a concisão e a clareza do código. Paralelamente, os
operadores aritméticos são ferramentas que possibilitam cálculos matemáticos precisos,
fornecendo os alicerces necessários para a manipulação efetiva de dados numéricos.
A conversão de tipos em atribuições destaca-se como um ponto crítico, garantindo a integridade
dos dados ao transferir valores entre variáveis de diferentes tipos. Seja por meio de conversões
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
explícitas ou implícitas, esse processo é crucial para preservar a precisão dos dados e manter a
coerência em todo o programa.
Por �m, o operador de atribuição, junto com seus equivalentes combinados, surge como o
elemento uni�cador, proporcionando a alocação e modi�cação de valores em variáveis. Esses
operadores não são apenas instrumentos para atribuição de valores, mas também facilitam a
execução de operações simultâneas, contribuindo para um código mais expressivo e poderoso.
Ao compreender profundamente esses três pilares, os programadores C fortalecem sua
habilidade na linguagem e se equipam para enfrentar desa�os complexos de desenvolvimento.
Esses conceitos, quando dominados em conjunto, formam a base sólida para a construção de
algoritmos robustos e de fácil manutenção, permitindo que os desenvolvedores alcancem todo o
potencial da linguagem C.
Vamos Exercitar?
No início da aula você recebeu a missão de desenvolver um sistema modular que será
responsável por veri�car se os produtos estão com o mesmo peso de indicação no rótulo. Este
sistema será utilizado em uma linha de produção de uma fábrica de alimentos, onde é essencial
garantir a precisão no peso dos produtos antes de serem embalados e enviados aos clientes.
Vamos à resolução?
Módulo de veri�cação de peso
Crie uma função veri�carPeso() que receba como entrada o peso indicado no rótulo e o
peso real do produto.
Utilize operadores relacionais para comparar os dois pesos e determinar se o produto está
dentro das especi�cações.
Módulo de classi�cação de produto
Desenvolva uma função classi�carProduto() que, ao receber o resultado da veri�cação de
peso, determine se o produto está "Dentro do Peso", "Abaixo do Peso" ou "Acima do Peso".
Utilize estruturas de controle para de�nir as condições de classi�cação com base nos
resultados da veri�cação.
Na sequência, é apresentada uma sugestão do desenvolvimento da atividade:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 5 | Veri�cação de peso de produtos. Fonte: elaborada pelo autor.
O desenvolvimento deste sistema para a veri�cação de peso de produtos é fundamental para
garantir a qualidade e conformidade dos produtos fabricados. A utilização de operadores
relacionais e estruturas de controle promove um código mais claro e compreensível, destacando
a importância da modularização em projetos de software neste contexto de produção industrial.
Saiba mais
Para saber mais sobre conteúdos especí�cos abordados nesta aula como: operadores
aritméticos, operadores relacionais e atribuição de valores, consulte o Capítulo 2 do livro
Algoritmos e Programação em Linguagem C – 1ª edição, de Soffner, disponível no repositório da
Biblioteca virtual.
SOFFNER, Renato. K. Capítulo 2. In: Algoritmos e Programação em Linguagem C. São Paulo:
Saraiva, 2013, p. 34-44.
Referências
https://integrada.minhabiblioteca.com.br/reader/books/9788502207530/pageid/31
https://integrada.minhabiblioteca.com.br/reader/books/9788502207530/pageid/31
https://integrada.minhabiblioteca.com.br/reader/books/9788502207530/pageid/31
https://integrada.minhabiblioteca.com.br/reader/books/9788502207530/pageid/31
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
SOFFNER, R. K. Algoritmos e Programação em Linguagem C, 1. ed. São Paulo: Editora Saraiva,
2013.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 5
Conceitos de Programação
Videoaula de Encerramento
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Seja bem-vindo à nossa última videoaula da Unidade, na qual abordaremos os
conceitos de programação. Vamos nos debruçar nas condicionais e nas estruturas de um
programa na linguagem C. Aproveite e embarque em mais este aprendizado, consistente no
cenário de algoritmos. 
Clique aqui para acessar os slides da sua videoaula.
Bons aprendizado!
Ponto de Chegada
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u3enc_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Olá, estudante! Para desenvolver a competência desta Unidade, a saber, criar algoritmos
contendo estruturas de seleção, operadores e conversões de tipos de dados, nos dedicamos ao
estudo deconceitos fundamentais para a área. Foram eles:
1. Ambiente de programação: conhecemos esses espaços essenciais para criar e depurar
código, proporcionando uma experiência e�ciente de desenvolvimento.
2. Compiladores e interpretadores: compreendemos a diferença entre compiladores e
interpretadores, ferramentas cruciais que transformam nossos códigos em programas
executáveis.
3. Entradas, saídas e operadores: exploramos como interagir com programas por meio de
entradas e saídas, e dominamos o uso de operadores para manipular dados.
4. Introdução à linguagem C: iniciamos nossa jornada na linguagem C, investigando sua
sintaxe e estrutura, preparando-nos para expressar lógica e soluções através do código.
5. Estrutura condicional simples e composta: aprendemos a importância das estruturas
condicionais, permitindo que nossos programas tomem decisões com base em condições
especí�cas.
Esses conhecimentos adquiridos ao longo das aulas são um trampolim para desa�os mais
avançados. Agora, após esta importante jornada, você está equipado para explorar temas mais
complexos e aplicar suas habilidades em projetos práticos. Continue, pratique, e verá seu
domínio da programação crescer. 
É Hora de Praticar!
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Agora, convido você estudante, a trabalhar com o conteúdo abordado nesta unidade de ensino.
Para tanto, vamos abordar um estudo de caso sobre Atendimento em laboratório de revelação de
fotos com o cenário descrito a seguir.
Cliente: João da Silva
Data do atendimento: 15/09/2022
Abertura da ordem de serviço (OS):
Código da OS: 00123
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Descrição do serviço: revelação de 50 fotos no tamanho 10x15cm
Produtos: papel fotográ�co, revelador, �xador
Valor: R$ 75,00
Forma de pagamento: cartão de crédito
Prazo de entrega: 3 dias úteis
Detalhamento do atendimento
João da Silva compareceu ao laboratório de revelação de fotos com o objetivo de revelar 50
fotos tiradas em sua viagem de férias. Foi aberta uma ordem de serviço (OS) com o código
00123 para registrar o pedido. O serviço solicitado consistia na revelação das fotos no tamanho
10x15cm, utilizando papel fotográ�co de alta qualidade e produtos químicos especí�cos, como
revelador e �xador.
O valor total do serviço foi calculado em R$ 75,00, considerando o custo dos materiais utilizados
e a mão de obra. O cliente optou por realizar o pagamento por meio de cartão de crédito, sendo
realizado o devido registro da transação.
Foi estabelecido um prazo de entrega de 3 dias úteis para que as fotos fossem reveladas e
estivessem prontas para retirada. O cliente foi informado sobre o prazo e concordou com as
condições estabelecidas.
A seguir, apresentamos duas questões de re�exão para aprofundar nossa compreensão sobre
esses temas:
1. Ambiente de programação
Diante da diversidade de ambientes de programação disponíveis, considere o impacto
direto que a escolha de um deles pode ter em sua e�ciência e produtividade como
desenvolvedor. 
Pense em como a familiaridade com uma determinada IDE (Integrated Development
Environment) pode in�uenciar seu �uxo de trabalho e na importância de explorar diferentes
ambientes para encontrar aquele que melhor se alinha ao seu estilo e necessidades. 
Como a escolha do ambiente pode afetar sua jornada de aprendizado em programação C?
2. Operadores na linguagem C
Os operadores na linguagem C são ferramentas poderosas para manipular dados e realizar
operações diversas. Ao pensar nesses operadores, re�ita sobre a importância de
compreender não apenas a funcionalidade básica deles, mas também como combiná-los
estrategicamente para alcançar soluções mais complexas. 
Como a habilidade de dominar os operadores pode in�uenciar sua capacidade de
desenvolver algoritmos e�cientes? 
Considere a importância de explorar essas nuances para fortalecer suas habilidades como
programador em C.
Ao compreender o ambiente de programação e explorar os operadores na linguagem C, você
construirá seu caminho para ser um ótimo programador. A escolha consciente do ambiente e a
maestria nos operadores ampliam suas possibilidades, preparando-o para desa�os mais
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
complexos e uma trajetória de aprendizado consistente. Continue explorando e praticando para
alcançar novos patamares em sua jornada na programação C.
Dê o Play!
Clique aqui para acessar os slides do Dê o play!
Atendimento em laboratório de revelação de fotos
Passo 1: de�nir o problema a ser resolvido e os objetivos do algoritmo.
Passo 2: coletar os dados necessários para a resolução do estudo de caso.
Passo 3: analisar e processar os dados obtidos para identi�car padrões ou relações
relevantes.
Passo 4: escolher o algoritmo mais adequado para a resolução do problema, levando em
consideração a complexidade e os tipos de dados.
Passo 5: implementar o algoritmo escolhido e realizar testes para veri�car sua e�cácia.
Passo 6: avaliar os resultados obtidos e realizar ajustes no algoritmo, se necessário.
Passo 7: documentar o algoritmo criado, incluindo detalhes sobre sua implementação,
funcionamento e resultados.
Passo 8: apresentar a solução do estudo de caso, destacando os benefícios e possíveis
aplicações do algoritmo desenvolvido.
Após analisar o estudo de caso, é possível concluir que a empresa enfrentou desa�os
signi�cativos, mas conseguiu superá-los com sucesso. As estratégias implementadas
demonstraram ser e�cazes na resolução dos problemas e na melhoria dos resultados. Além
disso, o estudo ressalta a importância de adaptar-se às mudanças do mercado e de buscar
constantemente inovação. 
Nesta linha do tempo, apresentamos, resumidamente, os principais conceitos relacionados às
estruturas de decisão, à linguagem de programação C e aos operadores utilizados no
desenvolvimento de algoritmos.
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u3play_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Conceitos de programação. Fonte: elaborada pelo autor.
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
PINHEIRO, F. de A. C. Elementos de programação em C. Porto Alegre: Bookman, 2012.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
WAZLAWICK, R. S. Introdução a algoritmos e programação com Python: uma abordagem dirigida
por testes. Rio de Janeiro: LTC, 2018.
,
Unidade 4
Aplicações de Programação
Aula 1
Programação e Funções com Vetores
Programação e funções com vetores
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Nesta videoaula faremos uma imersão completa nos fundamentos de vetores.
Em nossa jornada de aprendizado, exploraremos os conceitos cruciais, as características e a
sintaxe essencial para compreender e utilizar vetores de maneira e�caz.
A aula abordará, de forma didática, a de�nição de vetores, destacando suas características
principais e apresentando exemplos ilustrativos que facilitarão a assimilação dos conceitos.
Nesse processo, nos dedicaremos, também, à sua declaração. Na sequência, examinaremos o
acesso aos vetores e seus elementos, proporcionando insights práticos sobre como manipular e
utilizar e�cientemente as informações armazenadas. O conhecimento desses aspectos será,
pois, crucial para o desenvolvimentode soluções computacionais robustas e e�cazes.
Não perca a oportunidade de enriquecer seus conhecimentos nesse tema tão importante da
programação. Junte-se a nós nesta jornada de descobertas e fortaleça suas habilidades
computacionais. Sua participação é fundamental para o sucesso coletivo! 
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Olá, caro estudante! Seja muito bem-vindo à nossa primeira aula desta Unidade sobre os
fundamentos essenciais dos vetores. Este conteúdo será de grande valia na construção de seu
conhecimento na área, abrindo portas para oportunidades pro�ssionais e desenvolvendo seu
raciocínio lógico e capacidade de resolução de problemas.
Assim como a programação se tornou uma habilidade indispensável em diversos setores, hoje
os vetores também desempenham um papel vital em várias aplicações. Durante esta aula, vamos
nos debruçar sobre a de�nição, as características e a sintaxe de vetores, proporcionando uma
base sólida para a compreensão e aplicação prática do assunto. Na sequência, será proposto um
exercício com vetores para o entendimento desse valioso elemento no desenvolvimento de
algoritmos.
Para ilustrar a aprendizagem desta aula, imagine que em um exercício, seu professor lança um
desa�o para você desenvolva um programa em C que seja possível passar vetores com todos os
elementos por parâmetro para uma função.
Ao �nal desta aula, você estará familiarizado teoricamente com a declaração de vetores e com a
habilidade de acessar e manipular seus elementos e terá as ferramentas necessárias para
armazenar e gerenciar informações de maneira e�caz. Dedique-se aos tópicos abordados,
pratique ativamente e trilhe sua trajetória na área de algoritmos. Boa aula! 
Vamos Começar!
A programação é um campo vasto e dinâmico, repleto de desa�os e possibilidades. No cerne
dessa disciplina, estruturas de dados são determinantes, moldando a maneira como os
programadores organizam e manipulam informações. Entre essas estruturas, os vetores
destacam-se como uma ferramenta fundamental em linguagens de programação como C. A
habilidade de entender, declarar e manipular vetores é essencial para construir algoritmos
e�cientes e soluções robustas.
Os vetores em C são uma forma estruturada de armazenar dados homogêneos, permitindo a
fácil manipulação de conjuntos de informações de forma sequencial. Este artigo mergulha nas
entranhas dessa estrutura, explorando desde a de�nição e características até a sintaxe de
declaração e acesso aos elementos. Ao compreender esses aspectos fundamentais, os
programadores podem aprimorar signi�cativamente suas habilidades de desenvolvimento,
tornando-se capazes de criar programas mais produtivos e legíveis.
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u4a1_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
A capacidade de declarar e acessar vetores não é apenas um conhecimento técnico, mas
também uma habilidade que promove a modularidade e escalabilidade do código. Esta aula,
então, se propõe a guiar você, estudante, através dos princípios básicos, fornecendo exemplos
práticos que ilustram a aplicação desses conceitos. Espera-se, ao �m, que você se sinta
capacitado a utilizar vetores de maneira efetiva em seus projetos, contribuindo, assim, para o
desenvolvimento de softwares mais estruturados e e�cazes.
De�nição, características e sintaxe de vetores
Os vetores, em linguagem C, são estruturas de dados que proporcionam uma maneira e�ciente
de organizar e manipular conjuntos homogêneos de informações. Essencialmente, um vetor é
uma sequência ordenada de elementos do mesmo tipo, armazenados de forma contígua na
memória. Sua principal característica reside na capacidade de acessar cada elemento
individualmente através de índices, facilitando a implementação de algoritmos complexos e o
gerenciamento e�caz de dados.
As propriedades distintivas dos vetores incluem, pois, a organização sequencial dos elementos,
permitindo um acesso direto e e�ciente a qualquer posição do vetor. Além disso, eles possuem
um tamanho �xo, determinado durante a declaração. Isso implica que a quantidade de elementos
não pode ser alterada dinamicamente durante a execução do programa, o que, por um lado,
proporciona um acesso rápido, mas, por outro lado, impõe limitações em termos de
escalabilidade dinâmica.
A sintaxe de vetores em C segue um padrão especí�co, na qual o tipo de dado é seguido pelo
nome do vetor e o número de elementos, delimitado por colchetes. Por exemplo, a sintaxe "int
numeros[5];" cria um vetor chamado "numeros" capaz de armazenar cinco números inteiros. A
partir dessa declaração, os programadores podem acessar e manipular cada elemento utilizando
índices, iniciando do índice zero até o número total de elementos menos um. Vale lembrar que os
índices sempre são valores inteiros, então sempre devemos pensar na sintaxe para a criação de
um vetor. Logo, temos:
tipo nome_do_vetor[tamanho];
Em que “tipo” é a classi�cação do tipo de dado que o vetor vai trabalhar, isto é, informações
numéricas, textuais, lógicas etc. Já o “nome_do_vetor”, é o identi�cador atribuído ao vetor. Esse
nome é utilizado para referenciar e manipular o vetor ao longo do código. Por exemplo, em “int
numeros[5];”, “numeros” é o nome do vetor. Por �m, o “tamanho”, indica o número de elementos
que o vetor pode armazenar. Este valor deve ser um inteiro não negativo. O tamanho do vetor é
�xado durante a declaração e não pode ser alterado dinamicamente durante a execução do
programa, pois ele é de�nido de forma estática.
Se fossemos pensar no vetor “números” mencionado acima, na forma grá�ca, na memória do
computador, teríamos 5 espaços para armazenar 5 valores diferentes. Observe a Tabela 1:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Bloco 1
Tipo : int 10 20 30
Índices 0 1 2
Bloco 2
40 50
3 4
Tabela 1 | Exemplo de vetor. Fonte: elaborada pelo autor.
Note que o vetor está exempli�cado de forma horizontal; à esquerda temos o início do vetor e à
direita o �nal dele. Portanto, os índices iniciam sempre no 0 (zero) e terminam um número a
menos que o tamanho do vetor, 4 (quatro), totalizando 5 (cinco) espaços na memória. Isso quer
dizer que em um vetor de 5 elementos, o seu maior índice será o número 4. Da mesma maneira,
se criarmos um vetor de 38 elementos, o seu maior índice será o número 37, e assim
sucessivamente.
Os vetores em C fornecem uma organização e�caz para dados, mas, além disso, oferecem uma
sintaxe clara e características especí�cas que facilitam o desenvolvimento de algoritmos
e�cientes. A compreensão da de�nição, características e sintaxe dessas estruturas é
fundamental para explorar plenamente o potencial dessa ferramenta no contexto da
programação em C.
Declaração de vetores
Todos os recursos utilizados na programação e dentro do código-fonte para a construção do
algoritmo, que sempre terá como objetivo resolver um problema, devem ser declarados. Mas, o
que seria essa declaração? E por que ela deve ser realizada?
A declaração de recursos, variáveis ou constantes, é necessária para a criação do objeto no
algoritmo. Veja o exemplo a seguir:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Erro na declaração de variáveis. Fonte: elaborada pelo autor.
O código da Figura 1 apresenta a criação do vetor “teste” com a inclusão de 5 valores numéricos
aleatórios. Na sequência, é utilizado um laço de repetição com o comando “for” para a
apresentação em tela dos seus valores. Na linha 8, uma condição veri�ca se no índice 2 do vetor
existe o valor “43”, caso o retorno lógico da condição seja verdadeiro, então o conteúdo do índice
2 do vetor, que é o valor 43, será atribuído na variável que recebeu o nome de “salvo”. Porém,
existe um problema no código: a variável “salvo” não foi declarada. Observe que na linha 9 ela
tem um traço vermelho indicando que há um erro no código.
Como faríamos para resolver esse problema?Ora, basta declarar a variável no mesmo tipo do
vetor. Observe, na Figura 2, o código resolvido.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 2 | Ajustes na declaração de variáveis. Fonte: elaborada pelo autor.
Façamos, agora, esse mesmo processo com os vetores. A declaração de vetores em linguagem
C é um processo fundamental na construção de estruturas de dados e�cientes. A sintaxe básica
envolve especi�car o tipo de dado dos elementos, seguido pelo nome do vetor e o número de
elementos desejados, encapsulados por colchetes. Por exemplo, a declaração int numeros[5];
cria um vetor denominado “numeros” capaz de armazenar cinco números inteiros. Essa estrutura
�xa a quantidade de elementos e estabelece a base para o acesso e�ciente a dados sequenciais.
Ao lado da declaração, a inicialização de vetores é uma prática comum para atribuir valores
iniciais aos elementos durante a criação. Por exemplo, a declaração int numeros[5] = {10, 20, 30,
40, 50}; cria o vetor “números” com cinco elementos e atribui valores especí�cos a cada um
deles. Tal capacidade de inicialização oferece uma maneira concisa de preencher vetores com
dados relevantes desde o início, facilitando o desenvolvimento de algoritmos coesos.
Em síntese, a �exibilidade na declaração e inicialização de vetores permite aos programadores
adaptarem essas estruturas conforme as necessidades especí�cas de seus algoritmos.
Compreender a sintaxe e utilizar exemplos práticos, como os mencionados acima, os capacita a
criarem estruturas de dados e�cazes em C, fornecendo uma base sólida para a manipulação
e�ciente de conjuntos homogêneos de informações.
Siga em Frente...
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Acesso aos vetores e elementos
O acesso aos elementos de um vetor em linguagem C é realizado por meio de índices, que
representam a posição de cada elemento na sequência. Os índices começam geralmente em 0,
indicando o primeiro elemento, e vão até o tamanho do vetor menos um. A expressão
vetor[indice] proporciona acesso direto ao elemento desejado, permitindo a leitura e modi�cação
dos dados armazenados. Essa abordagem sequencial e indexada é fundamental para a
manipulação precisa e e�ciente de informações contidas nos vetores.
Além do acesso individual, iterações através dos elementos de um vetor são comuns em muitos
algoritmos. Utilizando estruturas de repetição, como o loop “for”, os programadores podem
percorrer todo o vetor, acessando e manipulando cada elemento sucessivamente. O trecho de
código a seguir ilustra como imprimir todos os elementos de um vetor:
Figura 3 | Exemplo de acesso com índices. Fonte: elaborada pelo autor.
Neste exemplo, o loop “for” percorrer o vetor “números” e imprime cada elemento juntamente
com seu índice correspondente.
Note que o último índice é 4, e não 5, porque ele inicia em 0.
O acesso e�ciente aos elementos de um vetor, portanto, não apenas simpli�ca a implementação
de algoritmos, mas também contribui para a otimização do uso de recursos de memória, pois
permite manipular dados de forma organizada e direcionada.
Vejamos, a título de curiosidade, um código mais avançado, porém bastante interessante, sobre
o uso de vetores: um jogo de adivinhação em C que utiliza vetores para armazenar e manipular
dados em que o jogador tenta adivinhar um número aleatório entre 1 e 100.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 4 | Jogo de adivinhação. Fonte: elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 5 | Jogo de adivinhação - cont. Fonte: elaborada pelo autor.
Neste exemplo, o vetor “histórico” é utilizado para armazenar as tentativas do jogador, permitindo
ao programa exibir um histórico ao �nal do jogo. O jogo continua até o jogador acertar o número
ou atingir o limite de tentativas. O uso de vetores facilita o rastreamento e a manipulação dos
dados relacionados às tentativas do jogador.
Explicando melhor:
Início do programa: o programa começa incluindo bibliotecas necessárias e de�nindo
constantes.
Inicialização: inicializa a semente para números aleatórios e de�ne um número secreto
aleatório entre 1 e 100. Cria um vetor para armazenar o histórico de tentativas (historico).
Jogo principal: um loop inicia, permitindo que o jogador faça várias tentativas.
Tentativa do jogador: solicita ao jogador para digitar um número. Armazena a tentativa no
histórico.
Veri�cação da tentativa: se o número digitado for igual ao número secreto, o jogador
acertou e o jogo termina. Caso contrário, são dadas dicas ao jogador sobre se o número é
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
maior ou menor.
Limite de tentativas: o jogo veri�ca se o jogador atingiu o limite de tentativas.
Exibição do histórico: ao �nal do jogo, o histórico de tentativas do jogador é exibido.
Fim do programa: o programa termina.
Este jogo demonstra como utilizar vetores em C para armazenar e manipular dados, aqui, as
tentativas do jogador. Esse uso facilita o rastreamento e a exibição do histórico de uma forma
organizada.
Na Figura 6, é possível observar o código rodando.
Figura 6 | Teste do jogo de adivinhação. Fonte: elaborada pelo autor.
Conclusão
Em síntese, a compreensão abrangente sobre vetores em linguagem C abarca a de�nição, as
características, a sintaxe de declaração e o acesso e�ciente aos elementos. Os vetores
proporcionam uma estrutura organizada para armazenar dados homogêneos, e sua declaração,
feita através da sintaxe especí�ca, determina o tamanho e o tipo de dados que serão
manipulados. A inicialização de vetores, com exemplos como int numeros[5] = {10, 20, 30, 40,
50};, por seu turno, facilita a atribuição de valores iniciais aos elementos.
Ao acessar os vetores e seus elementos através de índices, os programadores ganham a
capacidade de manipular dados de forma precisa, seja para leitura, modi�cação ou iteração. O
exemplo prático de um loop “for” que percorre um vetor ilustra como essa abordagem sequencial
e indexada é aplicada no desenvolvimento de algoritmos.
Em conjunto, essas qualidades fazem dos vetores em C uma ferramenta indispensável para
programadores. Dominar esses conceitos proporciona uma base sólida para estruturas de dados,
além de capacitar o desenvolvedor a criar algoritmos e�cazes, contribuindo, assim, para o
desenvolvimento de software robusto e escalável.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Vamos Exercitar?
Retomando a situação apresentada no início da aula, onde você foi desa�ado pelos eu professor
a fazer um exercício, que desenvolva um programa em C que seja possível passar vetores com
todos os elementos por parâmetro para uma função.
O exercício solicita que sejam criados dois vetores de dez elementos atribuídos da seguinte
forma:
vetA[] = {10, 20, 30, 40, 50, 60, 70, 80, 90,
100}
vetB[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Em seguida, que seja criada uma função que receba os dois vetores e some seus elementos,
chegando em um valor total. Esse valor deve retornar e ser exibido no programa principal.
Este é um exercício simples, porém, vai testar suas habilidades na construção, passagem por
parâmetros de vetores e manipulação de elementos em um vetor.
Vamos à resolução?
O código a seguir mostra a resolução do exercício:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 7 | Código do exercício. Fonte: elaborada pelo autor.
Neste exemplo, a função “somarElementos()” recebe os dois vetores e o tamanho como
parâmetros, percorre os elementos de ambos e calcula a soma total. O programa principal
declara e inicializa os vetores e chama a função para obter o resultado da soma, que é então
exibido. O resultado será sempre "605", pois os valores foram atribuídos de forma �xa no código.
Como sugestão, altere o programa para que os elementos dos dois vetores sejam atribuídos pelo
usuário, assim, o valor exibido pelo programa vai depender dos valores que o usuário informar.
Saiba mais
Para saber mais sobre algoritmos e ter uma visão profunda sobre seus fundamentos, acesse, em
sua Biblioteca virtual, o Capítulo1, Seção 1, “O papel dos algoritmos na computação”, do livro
Algoritmos: teoria e prática, de Thomas Cormen, uma excelente referência na área.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
CORMEN, T. et al. Capítulo 1 – Seção 1: O papel dos algoritmos na computação. In: Algoritmos:
teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022, p. 3-10. 
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 2
Programação com Matrizes
Programação com matrizes
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Nesta videoaula abordaremos os fundamentos das matrizes. Vamos apresentar a
de�nição de matrizes, destacando suas características elementares, e exemplos que facilitarão a
assimilação do tema. Além disso, exploraremos, em detalhes, a atribuição de valores a matrizes.
Em seguida, examinaremos a iteração sobre os elementos das matrizes, oferecendo insights
práticos sobre como manipular e acessar e�cientemente as informações armazenadas.
Será proposto, nesse processo, um exercício prático envolvendo programação com matrizes na
linguagem de programação C.
https://integrada.minhabiblioteca.com.br/reader/books/9788595158092/epubcfi/6/16[%3Bvnd.vst.idref%3Dchapter01]!/4
https://integrada.minhabiblioteca.com.br/reader/books/9788595158092/epubcfi/6/16[%3Bvnd.vst.idref%3Dchapter01]!/4
https://integrada.minhabiblioteca.com.br/reader/books/9788595158092/epubcfi/6/16[%3Bvnd.vst.idref%3Dchapter01]!/4
https://integrada.minhabiblioteca.com.br/reader/books/9788595158092/epubcfi/6/16[%3Bvnd.vst.idref%3Dchapter01]!/4
https://integrada.minhabiblioteca.com.br/reader/books/9788595158092/epubcfi/6/16[%3Bvnd.vst.idref%3Dchapter01]!/4
https://integrada.minhabiblioteca.com.br/reader/books/9788595158092/epubcfi/6/16[%3Bvnd.vst.idref%3Dchapter01]!/4
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
O domínio desses assuntos será, pois, crucial para o desenvolvimento de soluções
computacionais robustas e e�cazes, ampliando suas habilidades em programação. Aproveite o
conteúdo!
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Olá, caro estudante! Seja bem-vindo à nossa aula sobre os fundamentos essenciais das matrizes.
Vamos aprofundar nossos conhecimentos nos conceitos, características e sintaxe de matrizes. 
Para ilustrar a aprendizagem desta aula, você será desa�ado a realizar um exercício de
programação, no qual você deve criar um programa na linguagem de programação C que lide
com duas matrizes de ordem 4x4.
Ao �nal desta aula, você estará familiarizado teoricamente com a atribuição de valores a
matrizes e com a habilidade de iterar sobre seus elementos.
Bons estudos!
Vamos Começar!
As matrizes são estruturas de dados essenciais na programação, permitindo a organização
e�ciente de conjuntos bidimensionais de informações. Elas funcionam como tabelas virtuais,
facilitando a ordenação sistemática de dados. Nesta aula, exploraremos desde os conceitos
fundamentais de matrizes, esclarecendo aspectos teóricos do tema, até aplicações práticas em
C.
Em primeiro lugar, então, compreenderemos as características distintivas das matrizes em C
enquanto estruturas estáticas, com tamanhos conhecidos durante o tempo de compilação, cujos
índices começam em zero. A sintaxe para declarar matrizes é clara e concisa, estabelecendo
uma base sólida para a manipulação e�ciente de dados.
Exploraremos, na sequência, como atribuir valores às matrizes, tanto durante a declaração
quanto posteriormente, destacando a versatilidade dessa operação. A iteração sobre os
elementos das matrizes, por meio de loops aninhados, será abordada em detalhes,
proporcionando as habilidades necessárias para percorrer e manipular dados em futuras
aplicações.
Esta jornada tem como objetivo, portanto, capacitá-lo a dominar o uso de matrizes em C. Ao
compreender os conceitos fundamentais, a sintaxe e as técnicas de atribuição e iteração, você
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u4a2_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
estará preparado para enfrentar desa�os mais complexos e desenvolver soluções e�cientes em
seus projetos.
De�nição, características e sintaxe de matrizes
De�nição de matrizes
Uma matriz em linguagem C é uma estrutura de dados bidimensional que organiza informações
em linhas e colunas, criando uma grade. Essencialmente, é um conjunto de elementos do mesmo
tipo, permitindo o acesso e manipulação e�ciente desses dados. Ao declarar uma matriz,
especi�camos o tipo de dado, seguido pelo nome e suas dimensões entre colchetes. Por
exemplo, para criar uma matriz de números inteiros com 3 linhas e 4 colunas, utilizamos a
seguinte declaração: int matriz[3][4];. Cada elemento na matriz é acessado por meio de índices
de linha e coluna, começando ambos a partir de zero.
O esqueleto de uma matriz refere-se à sua estrutura básica e à forma como ela é declarada em
uma linguagem de programação. Observe, a seguir, o esqueleto de uma matriz em C:
tipo_dado nome_matriz[linhas]
[colunas];
tipo_dado: indica o tipo de dado que será armazenado na matriz, como int, �oat, char etc.
nome_matriz: é o nome que você atribui à matriz, permitindo referenciar e manipular seus
elementos.
linhas e colunas: representam as dimensões da matriz, indicando quantas linhas e colunas
ela terá.
A visualização de uma matriz como uma tabela é uma analogia útil que facilita a compreensão e
manipulação dessas estruturas de dados. Essa representação tabular ajuda a organizar e
entender a relação espacial entre os elementos.
Int matrizTeste[3][3];
Índices
0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
Tabela  1 | Visualização de uma matriz. Fonte: elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Como vemos na Tabela 1, cada número ocupa uma posição especí�ca, sendo identi�cado por
um par de índices (linha, coluna). O número 5, por exemplo, está na segunda linha e segunda
coluna (índices 1, 1).
As vantagens de se visualizar uma matriz como tabela, deste modo, são:
Organização lógica: a visualização como tabela re�ete a organização lógica dos dados.
Linhas e colunas fornecem uma estrutura clara, permitindo que a mente humana
compreenda e manipule as informações de maneira ordenada.
Facilidade na leitura e escrita de código: ao programar, a visualização como tabela facilita a
leitura e escrita de código. Referenciar um elemento especí�co se torna intuitivo, pois você
utiliza os índices de linha e coluna.
Modelagem de dados estruturada: em muitos casos reais, dados são naturalmente
organizados em tabelas. Ao visualizar uma matriz como uma tabela, podemos re�etir essa
estruturação, o que facilita a modelagem de problemas complexos.
Aplicações práticas: em domínios como processamento de imagens, jogos e simulações,
as matrizes são frequentemente utilizadas para representar informações. Visualizá-las
como tabelas torna mais fácil conceber algoritmos e lógicas de programação relacionadas
a esses domínios.
Portanto, ao visualizar uma matriz como uma tabela, ganhamos uma representação intuitiva e
estruturada dos dados, facilitando a compreensão, manipulação e implementação de algoritmos
em programação.
Figura 1 | Criação de uma matriz. Fonte: elaborada pelo autor.
Na Figura 1, criamos uma matriz 2x3 de inteiros e atribuímos valores diretamente durante a
declaração. A primeira linha contém os valores 1, 2 e 3, enquanto a segunda linha contém 4, 5 e
6.
Característicase sintaxe de matrizes
As matrizes em C têm características distintas que moldam seu uso. Elas são estruturas
estáticas, o que signi�ca que seu tamanho deve ser conhecido no tempo de compilação. Seus
índices começam a partir de zero, proporcionando uma abordagem consistente e intuitiva. A
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
sintaxe para acessar e manipular elementos é direta, utilizando colchetes e índices. Já a
atribuição de valores pode ser feita durante a declaração ou posteriormente, e a iteração sobre
os elementos geralmente envolve o uso de loops aninhados.
Figura 2 | Atribuição de valores a elementos especí�cos. Fonte: elaborada pelo autor.
Na Figura 2, declaramos uma matriz 3x2 e atribuímos valores a elementos especí�cos após a
declaração. A célula na primeira linha e primeira coluna recebe 10, enquanto a célula na segunda
linha e segunda coluna recebe 20. Este é um exemplo básico que destaca a �exibilidade na
manipulação de matrizes em C.
Siga em Frente...
Atribuição de valores e matrizes
A atribuição de valores a matrizes em C pode ocorrer durante a declaração ou posteriormente,
proporcionando �exibilidade na manipulação de dados. Durante a declaração, os valores são
especi�cados entre chaves e separados por vírgulas, seguindo a ordem das linhas e colunas. Por
exemplo, int matriz[2][3] = {{1, 2, 3}, {4, 5, 6}}; cria uma matriz 2x3 e atribui os valores diretamente.
Quando a atribuição ocorre após a declaração, cada elemento é acessado individualmente por
seus índices, permitindo uma personalização mais detalhada.
Atribuição detalhada
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Ao atribuir valores a matrizes após a declaração, a abordagem individualizada é crucial.
Consideremos, pois, uma matriz 3x3 e atribuamos valores utilizando loops aninhados:
 Figura 3 | Preenchendo todos os elementos. Fonte: elaborada pelo autor.
Neste caso, a matriz é preenchida com valores resultantes da multiplicação dos índices da linha
e da coluna. Essa abordagem personalizada oferece controle total sobre a atribuição, sendo
especialmente útil em situações em que os valores seguem um padrão ou lógica especí�ca.
Atribuição de valores durante a declaração
A atribuição de valores durante a declaração é conveniente e e�caz. Ela ocorre entre chaves e os
valores são distribuídos automaticamente na ordem das linhas e colunas. Consideremos um
exemplo mais complexo:
Figura 4 | Atribuição na criação. Fonte: elaborada pelo autor.
Aqui, criamos uma matriz 2x4 de números de ponto �utuante e atribuímos valores diretamente. A
precisão decimal dos valores �utuantes é mantida, demonstrando a versatilidade dessa técnica
de atribuição.
Utilização da atribuição condicional
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
A atribuição de valores pode ser adaptada de acordo com condições especí�cas. Por exemplo,
podemos criar uma matriz 2x2 em que cada valor é atribuído com base em uma condição:
Figura 5 | Atribuição com condicional. Fonte: elaborada pelo autor.
Essa abordagem condicional destaca a adaptabilidade da atribuição de valores, possibilitando a
criação de matrizes com base em lógicas especí�cas.
Em resumo, a atribuição de valores a matrizes em C é uma tarefa personalizável. Seja durante a
declaração, seguindo uma lógica condicional, ou através de loops aninhados, essa �exibilidade
permite a criação e manipulação de matrizes de maneira adaptável e e�ciente, atendendo às
necessidades especí�cas de cada situação.
Iteração sobre os elementos de matrizes
A atribuição de valores em matrizes em C é uma prática fundamental que permite inicializar e
atualizar dados de forma e�ciente. Durante a declaração e atribuição simultânea, podemos
utilizar exemplos mais próximos da realidade. Suponhamos que estamos lidando com uma
matriz que armazena as vendas diárias de produtos em uma loja ao longo de uma semana:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 6 | Matriz de vendas. Fonte: elaborada pelo autor.
Neste exemplo, a matriz vendasDiarias armazena as vendas de três produtos ao longo de sete
dias. Cada linha representa um dia e cada coluna representa um produto.
Características e detalhes da atribuição
É essencial entender que, ao atribuir valores em matrizes, estamos organizando dados de forma
estruturada. Podemos, posteriormente, acessar essas informações para análises mais
detalhadas, como calcular médias, identi�car tendências de vendas ou detectar variações
signi�cativas. A �exibilidade na atribuição permite, assim, adaptar a matriz a diferentes
conjuntos de dados e contextos.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 7 | Matriz de notas. Fonte: elaborada pelo autor.
A matriz da Figura 7 apresenta as notas de alunos em diferentes disciplinas. Cada linha
representa um aluno e cada coluna representa uma disciplina. Essa matriz armazena
informações e, além disso, fornece uma estrutura clara para análises futuras, como identi�car
alunos com melhor desempenho em disciplinas especí�cas.
Iteração sobre os elementos de matrizes
Quando falamos de iteração sobre os elementos de uma matriz, estamos nos referindo à
capacidade de percorrer cada elemento individual dessa estrutura de dados. Vamos, a título de
ilustração, considerar uma matriz temperaturaDiaria, que mostra a temperatura em uma cidade
ao longo de um mês, por 30 dias e durante 24 horas por dia.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 8 | Criação de matriz grande. Fonte: elaborada pelo autor.
A iteração, aqui, seria o processo de percorrer cada célula desta matriz. Isso é feito
frequentemente usando loops aninhados, em que um loop controla o índice das linhas e o outro
o índice das colunas. Dessa forma, conseguimos acessar e manipular cada valor
individualmente.
Podemos, por exemplo, preencher essa matriz com valores simulados utilizando um loop duplo:
Figura 9 | Preenchendo matriz com função. Fonte: elaborada pelo autor.
Neste trecho de código, um loop percorre os dias e outro as horas de um dia. Dentro dele, a
função gerarTemperaturaSimulada() (que seria uma função hipotética) pode ser usada para gerar
valores simulados de temperatura. Isso é um exemplo prático de como a iteração nos permite
preencher e manipular grandes conjuntos de dados, como registros meteorológicos em uma
matriz.
Conclusão
Em conclusão, a compreensão dos conceitos fundamentais relacionados a matrizes, sua sintaxe,
atribuição de valores e iteração sobre seus elementos é essencial para qualquer programador. As
matrizes, ao fornecerem uma estrutura bidimensional, oferecem uma maneira poderosa e
organizada de lidar com grandes conjuntos de dados. Suas características estáticas, em que o
tamanho é conhecido no tempo de compilação, e a clareza na sintaxe tornam as matrizes uma
escolha e�ciente para diversas aplicações na programação.
A atribuição de valores em matrizes, por seu turno, permite não apenas inicializar dados, como
também adaptar dinamicamente essas estruturas conforme necessário. Esse processo é crucial
para representar informações do mundo real de maneira organizada, como dados
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
meteorológicos, notas de alunos ou vendas diárias. A �exibilidade na atribuição facilita a
manipulação e análise desses dados, permitindo que programadores extraiam informações
valiosas.
Já a iteração sobre os elementos de matrizes desempenha um papel vital ao possibilitar o
acesso e a manipulação de cada célula individualmente. Essa funcionalidade é especialmente
importante quando lidamos com grandes volumes de dados, como registros de temperatura,
ocupação de salas ou qualquer conjunto de informações distribuído em duas dimensões. A
utilização de loops aninhados para percorrer esses elementos proporciona uma abordagem
estruturada e efetiva.
No universo da programação, a importância das matrizes é inquestionável. Elas são a espinha
dorsal de muitos algoritmos e estruturas de dados, contribuindo para a resolução de problemas
em diversas áreas, desde processamento de imagensCálculo do valor total
 Calcule o valor total do pedido multiplicando a quantidade pelo valor unitário.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Apresente o valor total ao cliente.
Esse processo simpli�cado de controle de pedidos destaca a importância do uso de diferentes
tipos de dados para armazenar informações relevantes. A prática em manipular esses dados é
fundamental para o desenvolvimento de algoritmos e�cazes em situações reais.
Saiba mais
Para saber mais sobre os conceitos introdutórios de algoritmos, os operadores aritméticos e os
tipos de dados, consulte o Capítulo 2 - Computação e resolução de problemas, do livro Estudo
dirigido de algoritmos, de Manzano e Oliveira, disponível no repositório da Biblioteca Virtual.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Capítulo 2 - Computação e resolução de problemas. In:
Estudo dirigido de algoritmos. São Paulo: Érica, 2000, p. 30-37. 
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 2
De�nições de Lógica
De�nições de lógica
Este conteúdo é um vídeo!
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/29
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/29
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/29
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/29
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante!
Nesta videoaula, aprofundaremos nossos conhecimentos sobre algoritmos e lógica de
programação e exploraremos alguns conceitos essenciais para um futuro programador. Você
será guiado através de exemplos práticos, exercícios interativos e dicas para garantir a
compreensão dos conceitos apresentados e a aplicação destes em seus próprios projetos.
Contamos com a sua presença e participação nesta experiência dinâmica de aprendizado para
investigarmos juntos os segredos da programação e, cada vez mais, criarmos soluções
inovadoras e e�cazes.
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Olá, estudante! Seja bem-vindo à aula sobre a construção lógica de soluções computacionais,
campo fundamental da ciência da computação que é a base para o entendimento da
programação de software. Aqui, exploraremos maneiras de transformar problemas complexos
em sequências lógicas com passos precisos e compreensíveis para o computador, permitindo-
nos criar algoritmos e�cientes e funcionais. 
No decorrer desta aula, vamos analisar três abordagens essenciais do tema: a de�nição de
lógica, as características e as aplicação da lógica e as formas de representação por meio de
�uxogramas.
A título de exemplo, imagine que uma mercearia deseja otimizar o controle de estoque de seus
produtos. O gerente quer saber se a quantidade de itens em estoque está abaixo do nível mínimo
para acionar pedidos de reposição. Portanto, você deverá desenvolver um algoritmo simples para
otimizar o controle de estoque dos produtos de uma mercearia.
Preparado para iniciar este conteúdo, no qual cada linha de código é uma oportunidade para
exercitar a criatividade, o raciocínio lógico e a habilidade de resolução de problemas? Boa aula! 
 
Vamos Começar!
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u1a2_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
O objetivo desta aula é apresentar uma introdução aos algoritmos e às lógicas de programação,
seus conceitos, suas de�nições, características, aplicações e formas de representação. Durante
a aula, vamos focar no desenvolvimento das habilidades fundamentais de resolução de
problemas, abstração e pensamento crítico.
Ao longo desta explanação, vamos explorar os princípios necessários para a criação de
algoritmos e�cientes, que são sequências ordenadas de instruções projetadas para resolver
problemas especí�cos, permitindo-nos decompor problemas complexos em passos menores e
mais gerenciáveis.
De�nição de lógica
Em primeira instância, é importante compreendermos que a lógica é um dos fundamentos
essenciais para a compreensão e resolução de problemas em diversos âmbitos, especialmente
na programação e no desenvolvimento de algoritmos. Nesse contexto, a de�nição de lógica se
torna indispensável para qualquer estudante ou pro�ssional que busque desenvolver habilidades
na área e melhorar a e�ciência na resolução de problemas.
Vários autores, então, trazem descrições signi�cativas do conceito. Vejamos algumas delas:
José Augusto Manzano e Jayr Oliveira (2019, p. 29): “Na ciência da computação
(informática), está associada a um conjunto das regras e procedimentos lógicos
perfeitamente de�nidos que levam à solução de um problema em um número �nito de
etapas.” "Programação é uma arte, e a lógica de programação é o pincel que nos permite
criar obras-primas digitais."
Edsger W. Dijkstra: (2022, p. 3) "Um algoritmo é qualquer procedimento computacional bem
de�nido que toma algum valor ou conjunto de valores como entrada e produz algum valor
ou conjunto de valores como saída."
Como podemos perceber, essas citações destacam a importância da lógica de programação
como uma competência essencial para qualquer programador, pois ela é a base sobre a qual
construímos soluções de software e�cientes e con�áveis.
Para conhecer a lógica, devemos conhecer e entender o que são algoritmos, e como utilizá-los
para determinar a sequência de passos necessários para resolvermos determinados problemas
(JR, 2019). Em outras palavras, é uma reunião de tarefas organizadas e estruturadas com um
propósito bem de�nido para a solução de um problema.
Em seu livro Estudo dirigido de algoritmos, Manzano (2000, p. 14) de�ne a lógica como:
Uma sequência coerente, regular e necessária de acontecimentos, de coisas e na área da
informática é a forma pela qual assertivas, pressupostos e instruções são organizados em um
algoritmo para implementação de um programa de computador.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Logo, as de�nições de lógica referem-se à estrutura de pensamento que permite a análise e o
raciocínio coerente. Em termos gerais, ela trata das regras do pensamento válido e da inferência
correta. Suas principais características são:
Coerência: a lógica visa manter a coerência no raciocínio, garantindo que as conclusões
derivem de premissas válidas.
Validade: um argumento lógico é válido quando as conclusões seguem necessariamente
das premissas, independentemente da verdade ou falsidade delas.
Racionalidade: a lógica é uma abordagem racional para analisar informações, tomar
decisões e resolver problemas de maneira ordenada.
A seguir, podemos compreender e demonstrar, por meio de alguns exemplos, as diversas
situações em que a lógica pode ser aplicada, tanto no âmbito pro�ssional quanto pessoal, em
nosso cotidiano.
Desenvolvimento de algoritmos: em programação, a lógica é fundamental para criar
algoritmos e�cientes e livres de contradições. O desenvolvimento lógico permite a
resolução de problemas de maneira estruturada.
Tomada de decisões empresariais: executivos utilizam a lógica para analisar dados,
considerar diferentes cenários e tomar decisões estratégicas consistentes.
Engenharia de software: na criação de sistemas complexos, a lógica é aplicada para
garantir que os componentes interajam de maneira lógica e previsível.
Planejamento de rotina: a lógica permite organizar tarefas diárias para otimizaraté simulações �nanceiras. A capacidade
de representar e manipular dados em matrizes é uma habilidade elementar para programadores,
permitindo a criação de soluções robustas e e�cazes. Em resumo, as matrizes são ferramentas
versáteis e capitais que elevam o poder e a e�ciência da programação em uma variedade de
contextos. Dominar seu uso é, portanto, um investimento para qualquer desenvolvedor.
Vamos Exercitar?
Retomando a situação apresentada no início da aula, na qual você recebeu um desa�o de realizar
um exercício de programação, no qual você deve criar um programa na linguagem de
programação C que lide com duas matrizes de ordem 4x4. Portanto, você deverá acompanhar os
seguintes passos:
1. Inicializar uma matriz de 4x4 e fazer a atribuição de valores aleatórios a ela.
2. Criar uma segunda matriz vazia do mesmo tipo e tamanho.
3. Realizar o cálculo dos elementos da primeira matriz armazenando o resultado na segunda
matriz.
4. No �nal do programa, exibir o conteúdo de todos os elementos das duas matrizes em tela.
Vamos à resolução?
Na Figura 10, apresentamos a resolução do algoritmo codi�cado em C em uma ferramenta de
edição de código-fonte:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 10 | Resolução do algoritmo codi�cado em C. Fonte: elaborada pelo autor.
A saída do programa e a apresentação dos resultados pode ser observada a seguir:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 11 | Saída do programa e resultados. Fonte: elaborada pelo autor.
Neste exercício, trabalhamos com a manipulação de matrizes em linguagem C. Inicializamos a
primeira matriz, realizamos um cálculo simples (multiplicação dos elementos) e armazenamos o
resultado na segunda matriz. Ao �nal, exibimos ambas Os pontos principais abordados foram a
declaração e inicialização de matrizes, iteração sobre os elementos das matrizes e realização de
cálculos com base nesses elementos.
Saiba mais
Para saber mais sobre matrizes (vetores multidimensionais), consulte o Capítulo 10, Seção 10.7,
do livro Elementos de programação em C, de Pinheiro, disponível no repositório da Biblioteca
virtual.
PINHEIRO, F. de A. C. Capítulo 10. In: Elementos de programação em C. Porto Alegre: Bookman,
2012, p. 245-252. 
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/262
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/262
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/262
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/262
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 3
Introdução a Função e Recursividade
Introdução a função e recursividade
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Nesta videoaula, vamos explorar a declaração de funções, assim como sua
de�nição e a caracterização da recursividade. Iniciaremos nossa aula destacando a importância
de estruturar o código por meio de funções bem de�nidas. Analisaremos, posteriormente, a
sintaxe crucial para declarar funções em diferentes contextos, visando fornecer uma
compreensão sólida dessas estruturas fundamentais em programação.
Ao adentrarmos na de�nição e caracterização de recursividade, abordaremos o conceito de uma
função chamando a si mesma, aspecto poderoso da programação que oferece soluções
so�sticadas para problemas complexos. Ilustraremos a recursividade com exemplos práticos,
mostrando como ela pode simpli�car tarefas e tornar o código mais legível.
Aprofundaremos nosso entendimento ao discutir situações especí�cas em que a recursividade é
especialmente apropriada. Analisaremos problemas que naturalmente se prestam a soluções
recursivas, demonstrando como essa abordagem pode simpli�car a implementação e trazer uma
e�ciência notável em determinados contextos.
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u4a3_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Olá, caro estudante! Seja bem-vindo à esta aula sobre declaração de funções e recursividade. A
declaração é um aspecto essencial para estruturar códigos de forma modular e e�ciente,
enquanto a recursividade permite soluções so�sticados para problemas complexos.
Nesse percurso de aprendizado, utilizaremos exemplos práticos para ilustrar como uma função
pode chamar a si mesma, explorando as possibilidades que essa abordagem oferece na
simpli�cação de tarefas e melhoria da legibilidade do código.
Para ilustrar a aprendizagem desta aula, você será desa�ado a criar um algoritmo para
apresentar o "n-ésimo" termo da sequência de Pell. A sequência de Pell é semelhante à
sequência de Fibonacci, mas cada termo é o dobro do termo anterior mais o termo antes do
anterior. Ou seja, P(n) = 2*P(n-1) + P(n-2), com P(0) = 0 e P(1) = 1.
Aproveite a aula e vamos, juntos, construir este conhecimento!
Vamos Começar!
No vasto universo da programação, o entendimento profundo e preciso de temas fundamentais é
a chave para a construção de códigos e�cientes e soluções so�sticadas. Nossa jornada
educativa nos levará por três pilares capitais: a declaração de funções, a de�nição e
caracterização da recursividade, e a identi�cação de situações ideais para a aplicação desse
conceito. Esses tópicos são elementos básicos para qualquer programador e representam o
alicerce para o desenvolvimento de algoritmos robustos e a resolução de desa�os complexos.
A declaração de funções, pois, emerge como um ponto-chave, proporcionando a habilidade de
modularizar e estruturar código de maneira organizada. Essa capacidade não apenas facilita a
reutilização do código, tornando-o mais fácil de manter, mas também contribui para uma
abordagem mais clara e efetiva no desenvolvimento de programas. Entender a sintaxe e a
importância da declaração de funções é crucial para criar códigos legíveis e de fácil manutenção.
Na sequência, exploraremos a intrigante dimensão da recursividade, em que uma função pode
chamar a si mesma. Nesse contexto, analisaremos a de�nição precisa da recursividade, além de
destacarmos as características únicas desse método de resolução de problemas. A capacidade
de pensar de maneira recursiva é uma habilidade valiosa que, quando aplicada corretamente,
oferece soluções mais concisas e elegantes.
Entendendo que a recursividade pode não ser apropriada para todos os cenários,  adentraremos
nas situações especí�cas em que esse conceito se destaca, fornecendo uma visão prática e
estratégica sobre como utilizar esse poderoso recurso. Isso porque a seleção criteriosa de
situações para aplicação de recursividade é determinante para otimizar o desempenho e a
e�ciência do código.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Declaração de funções
A declaração de funções é um pilar essencial na construção de códigos modulares e e�cientes
em programação. Através dela, fragmentamos nosso código em unidades lógicas, permitindo a
reutilização, manutenção facilitada e uma abordagem mais organizada.
Uma função é um bloco de código designado para realizar uma tarefa especí�ca, isolando e
estruturando uma parte do programa. A distinção entre procedimentos e funções reside no
retorno de valores. Procedimentos realizam tarefas sem gerar um resultado especí�co, enquanto
funções retornam um valor após a execução.Por exemplo, um procedimento pode exibir uma
mensagem na tela, já uma função pode calcular uma média e retornar o resultado.
Uma função é como uma pequena fábrica que recebe entradas, executa operações e produz
saídas. Sua estrutura básica (esqueleto) inclui um nome, parâmetros, corpo e um valor de retorno
opcional. Parâmetros são as entradas fornecidas à função, o corpo contém as instruções
executadas e o valor de retorno é o resultado produzido pela função. Vejamos:
tipo_retorno nome_da_funcao(tipo_parametro1 parametro1,
tipo_parametro2 parametro2, ...) {
    // Corpo da função
    // Instruções e operações realizadas pela função
    // Pode incluir declarações de variáveis locais
 
    // Retorno, se a função tem um tipo de retorno diferente de "void"
    return valor_de_retorno;
}
Tipo de retorno (tipo_retorno): indica o tipo de dado que a função retorna. Pode ser
qualquer tipo válido em C (int, �oat, char etc.). Se a função não retornar nenhum valor,
utiliza-se void.
Nome da função (nome_da_funcao): é o identi�cador único que usamos para chamar a
função. Deve seguir as regras de nomenclatura da linguagem.
Parâmetros (tipo_parametro parametro): são variáveis que a função aceita como entrada.
Podem ser de diferentes tipos e podem existir zero ou mais parâmetros. Cada parâmetro é
composto por um tipo e um identi�cador.
Corpo da função ({...}): contém as instruções e operações realizadas pela função. É dentro
do corpo que a lógica da função é implementada.
Valor de retorno (return valor_de_retorno): se a função possui um tipo de retorno diferente
de void, é necessário incluir uma instrução return para indicar o valor que a função retorna.
Esta parte é opcional em funções do tipo void.
Exempli�quemos, assim, a declaração de funções em C. Considere uma função simples que
calcula a soma de dois números:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Exemplo de função. Fonte: elaborada pelo autor.
Neste exemplo, temos uma função chamada somar que aceita dois inteiros como parâmetros,
realiza a adição e retorna o resultado. Este é um esqueleto básico que pode ser adaptado para
diferentes tipos de funções, dependendo da tarefa que a função deve executar.
int resultado =
somar(5, 3);
Aqui, resultado conterá o valor 8, resultado da chamada da função somar.
A declaração de funções é, portanto, vital para a estruturação do código, tornando-o mais
compreensível e fácil de manter. Ela não é apenas uma técnica de programação; é uma �loso�a
que promove a e�ciência, clareza e escalabilidade nos projetos.
Ao criar funções, praticamos conceitos de modularização e abstração. Modularização envolve
dividir um programa em módulos independentes, enquanto abstração oculta os detalhes internos
de uma função, permitindo que ela seja usada sem a necessidade de entender sua
implementação interna. Funções bem de�nidas facilitam a colaboração em equipes de
desenvolvimento e promovem a reutilização de código, um princípio fundamental na engenharia
de software.
De�nição e caracterização de recursividade
A recursividade é um conceito fundamental na programação, de�nindo a capacidade de uma
função chamar a si mesma durante sua execução. Esse método oferece uma abordagem
so�sticada e e�ciente para resolver problemas complexos ao dividi-lo em instâncias menores. A
caracterização da recursividade envolve uma função que se decompõe em casos base, nos quais
a solução é direta, e em casos recursivos, em que a função se chama com entradas reduzidas.
Fora da programação, a recursividade é uma característica encontrada em muitos campos, como
a Matemática e a Linguística, nos quais padrões repetitivos são identi�cados.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Consideremos um exemplo simples e prático de recursividade fora do contexto da programação.
Imagine que você está empilhando caixas em uma sala.
Caso base: se você tiver apenas uma caixa para empilhar, você a coloca no chão. Isso
representa o caso base, pois não há necessidade de empilhar mais caixas.
Caso recursivo: se tiver duas ou mais caixas, o processo se torna recursivo. Você coloca a
primeira caixa no chão e, em seguida, empilha as outras caixas, uma sobre a outra. Para
empilhar as demais caixas, você segue o mesmo processo, tratando cada pilha de caixas
como uma única caixa quando chegar a hora de empilhar.
Repetição do processo: se houver subpilhas de caixas dentro das pilhas maiores, você
repete o mesmo processo. Cada vez que encontra uma subpilha, você a trata como uma
única caixa e a empilha juntamente com as outras caixas.
Essa abordagem re�ete um padrão recursivo em que você resolve o problema (empilhar as
caixas) tratando uma instância menor do mesmo problema (empilhar as subpilhas) até atingir
um caso base (uma única caixa). Tal analogia demonstra como a recursividade pode ser intuitiva
e aplicada em situações do cotidiano, ajudando a resolver tarefas complexas dividindo-as em
tarefas menores e mais gerenciáveis.
Na programação, especi�camente, a recursividade é uma ferramenta poderosa para solucionar
problemas que podem ser decompostos em subproblemas idênticos ou semelhantes. Ela re�ete
a capacidade de uma função se autorreferenciar, promovendo um recurso mais conciso e claro
para certos tipos de problemas. Suas características fundamentais são:
Caso base: toda função recursiva deve ter um caso base, que representa a condição de
parada. Quando a função atinge esse caso base, ela para de se chamar recursivamente e
retorna um resultado direto.
Chamada recursiva: a função chama a si mesma com argumentos modi�cados. Isso
permite que a função resolva instâncias menores do problema, avançando em direção ao
caso base.
Um exemplo clássico é o cálculo do fatorial de um número. A função fatorial pode ser de�nida
recursivamente da seguinte forma em C:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 2 | Cálculo fatorial. Fonte: elaborada pelo autor.
Na Figura 2, o caso base é quando n é 0 ou 1, retornando 1. Para valores maiores, a função
chama a si mesma com n-1, multiplicando o resultado pelo valor atual de n.
A recursividade é particularmente útil em problemas que podem ser decompostos em
subproblemas idênticos ou semelhantes. No entanto, seu uso requer atenção para evitar loops
in�nitos e garantir que cada chamada recursiva aproxime a função do caso base.
Compreender a de�nição e caracterização da recursividade é crucial para expandir a caixa de
ferramentas do programador. Saber quando e como aplicá-la pode simpli�car signi�cativamente
a resolução de questões complexas, tornando o código mais so�sticado e modular.
Siga em Frente...
Situações de programação adequadas para a recursividade
A recursividade é uma ferramenta poderosa, mas é primordial aplicá-la nas situações corretas
para garantir e�ciência e clareza no código. A seguir, exploraremos em que casos a recursividade
é adequada, porque é bené�ca e como pode ser aplicada tanto dentro quanto fora do campo da
programação.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
1. Estruturas de dados recursivas: a recursividade é frequentemente ideal para lidar com
estruturas de dados recursivas, como árvores e listas encadeadas. Por exemplo, ao
percorrer uma árvore binária, uma função recursiva pode visitar seus nós de maneira
e�ciente, lidando com cada subárvore como uma instância menor do mesmo problema.
2. Algoritmos dividir para conquistar: problemas que seguem a estratégia “dividir para
conquistar” são propensos à aplicação de recursividade. Algoritmos como o merge sort e o
quicksort são exemplos claros em que a divisão do problema em subproblemas menores
facilita a solução global.
3. Problemas que exibem autossimilaridade: situações em que o problema pode ser
decomposto em instâncias menores semelhantes ao problema original são ideais para
recursividade. Por exemplo, o cálculo do fatorial e a sequência de Fibonacci exibem essa
autossimilaridade.
4. Processamento de estruturas de dados aninhadas: a manipulação de estruturas de dados
aninhadas, como listas dentrode listas, pode ser simpli�cada usando recursividade. A
função pode tratar cada nível da estrutura como uma instância menor, tornando o código
mais limpo e modular.
5. Travessia de grafos: em algoritmos de travessia de grafos, como a busca em profundidade
(DFS) e a busca em largura (BFS), a recursividade pode ser empregada para explorar os
vértices de maneira e�ciente, permitindo que cada um seja tratado como um subproblema.
Além da programação, a recursividade pode ser aplicada em problemas matemáticos, como
cálculos de sequências recursivas e problemas de divisão e conquista. Em tarefas cotidianas,
como organizar objetos ou resolver quebra-cabeças, ela também pode ser intuitiva.
Embora seja poderosa, a recursividade não é ideal para todos os programas. Em casos de
e�ciência, pode haver uma sobrecarga de chamadas de função, resultando em um consumo
excessivo de memória. Além disso, em problemas que não exibem uma estrutura recursiva clara,
a aplicação de recursividade pode complicar desnecessariamente o código.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 3 | Soma recursiva. Fonte: elaborada pelo autor.
Neste exemplo da Figura 3, a função “somaRecursiva” calcula a soma dos primeiros n números
naturais de maneira recursiva.
Em resumo, a recursividade é adequada em situações em que a estrutura do problema favorece
uma abordagem dividida e conquistada, e sua aplicação deve ser considerada caso a caso.
Conclusão
Ao mergulharmos nos fundamentos da programação, desde a declaração de funções até a
compreensão da recursividade e suas aplicações, ampliamos nossa visão sobre como estruturar
e resolver problemas no mundo da codi�cação.
A declaração de funções se revela como uma ferramenta poderosa para a modularização e
organização de códigos. Ao entender a sintaxe e importância dessa estrutura, programadores
podem criar sistemas mais legíveis, reutilizáveis e e�cientes.
A recursividade, por sua vez, destaca-se como uma abordagem so�sticada para lidar com
problemas que podem ser divididos em subproblemas idênticos ou semelhantes. Seu uso
proporciona soluções concisas e claras, mas requer cautela para evitar armadilhas como loops
in�nitos. Ela não se limita à programação, manifestando-se em fenômenos naturais e padrões
matemáticos. Contudo, seu verdadeiro poder é desbloqueado na programação, na qual a
capacidade de criar funções que chamam a si mesmas permite maneiras e�cazes de solucionar
questões.
Embora a recursividade seja uma ferramenta poderosa, sua aplicação não é ideal para todos os
programas. Em certos contextos, a complexidade e os custos de desempenho associados
podem superar seus benefícios. A escolha da recursividade deve ser guiada pela natureza do
problema a ser resolvido e pelas características do ambiente em que o código será executado.
As situações propícias para a aplicação da recursividade incluem problemas que seguem uma
estrutura hierárquica ou divisível. Algoritmos de ordenação, como o merge sort, ou a exploração
de estruturas de dados aninhadas são exemplos em que a recursividade se destaca,
simpli�cando a resolução de subproblemas.
Ao dominar a declaração de funções, entender a natureza da recursividade e identi�car situações
adequadas para sua aplicação, os programadores capacitam-se para construir códigos mais
robustos e soluções mais poderosas. Esses conceitos são a espinha dorsal de qualquer
desenvolvedor, moldando não apenas a forma como escrevemos códigos, mas também a
maneira como abordamos e resolvemos problemas. Ao explorar esses pilares, elevamos nossa
habilidade de criar, inovar e contribuir para o vasto universo da programação.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Vamos Exercitar?
Retomando a situação apresentada no início da aula, onde você deverá criar uma função
recursiva para calcular o “n-ésimo” termo da sequência de Pell. A sequência de Pell é semelhante
à sequência de Fibonacci, mas cada termo é o dobro do termo anterior mais o termo antes do
anterior. Ou seja, P(n) = 2*P(n-1) + P(n-2), com P(0) = 0 e P(1) = 1.
Vamos à resolução?
Figura 4 | Sequência de Pell. Fonte: elaborada pelo autor.
Neste código, a função sequenciaPell() calcula o n-ésimo termo da sequência de Pell de forma
recursiva, utilizando os casos base P(0) = 0 e P(1) = 1. O exemplo no main mostra como utilizar a
função para obter o 5-ésimo termo, mas é possível substituir o valor de n conforme necessário.
Saiba mais
Para saber mais sobre funções recursivas, consulte o Capítulo 9, Seção 9.7, do livro Elementos
de programação em C, de Pinheiro, disponível no repositório da Biblioteca virtual.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
PINHEIRO, F. de A. C. Capítulo 9. In: Elementos de programação em C. Porto Alegre: Bookman,
2012, p. 245-252. 
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 4
Registros e Arquivos
Registros e arquivos
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Nesta videoaula vamos abordar os processos de abertura e fechamento de
arquivos, desvendando as práticas recomendadas para garantir uma interação segura e e�ciente
com dados armazenados. Nossa jornada de aprendizado se concentrará na declaração de
registros e no acesso a esses dados, proporcionando uma visão aprofundada sobre a estrutura e
organização de informações em arquivos. Passaremos por cada etapa, desde a de�nição inicial
até as nuances da sintaxe, assegurando que você compreenda completamente o manejo
responsável desses componentes essenciais na programação.
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/221
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/221
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/221
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/221
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Na sequência, nos dedicaremos ao processo de escrita e leitura em arquivos, explorando
métodos e�cazes para armazenar e recuperar dados. Essas habilidades são cruciais para o
desenvolvimento de aplicações robustas e para garantir a integridade e segurança dos dados ao
longo do tempo.
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Olá, caro estudante! Seja bem-vindo à esta aula sobre os aspectos fundamentais da manipulação
de arquivos em programação. Vamos nos concentrar em desvendar os processos de abertura e
fechamento de arquivos, fornecendo insights práticos para garantir que você esteja equipado
para lidar e�cientemente com dados armazenados. Nesse processo, exploraremos teoricamente
a declaração de registros para melhor compreender a estrutura e organização dos dados. Além
disso, abordaremos o acesso a esses registros.
Para ilustrar a aprendizagem desta aula, você foi designado para criar um programa em C que
gerencie informações de estudantes. Cada estudante possui os seguintes dados: nome, idade e
média. O programa deve permitir ao usuário inserir informações de vários estudantes e, em
seguida, salvar essas informações em um arquivo chamado "estudantes.txt". Além disso, o
programa deve possibilitar a leitura dessas informações a partir do arquivo.
Ao �nal desta aula, você não apenas terá conhecimentos teóricos na área, como também contará
com as ferramentas necessárias para aplicá-los no mundo real. Bons estudos! 
Vamos Começar!
A manipulação de arquivos é essencial no desenvolvimento deprogramas e sistemas de
software, proporcionando a capacidade de armazenar e recuperar dados de forma persistente.
Abrir e fechar arquivos é uma operação capital nesse contexto, permitindo que o programa
estabeleça uma conexão com o sistema de arquivos, aloque recursos necessários e libere esses
recursos quando a operação for concluída. Esse processo é importante para garantir a
integridade dos dados e o bom funcionamento do programa.
A declaração e o acesso aos registros, do mesmo modo, são conceitos primordiais quando se
trata de trabalhar com arquivos. Registros são estruturas de dados que armazenam informações
relacionadas em uma única unidade. A declaração adequada desses registros é crucial para
garantir a coerência e a organização dos dados. Além disso, o acesso e�ciente a esses registros
é vital para a leitura e gravação efetivas em arquivos. Programadores precisam entender como
navegar e manipular registros para extrair informações ou modi�car dados conforme necessário.
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u4a4_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Escrever e ler em arquivos, por seu turno, são operações fundamentais para a interação e�caz
entre um programa e o sistema de armazenamento. Escrever em arquivos envolve a
transferência de dados do programa para o arquivo, garantindo que as informações sejam
armazenadas de maneira correta e persistente. Já a leitura em arquivos envolve a extração de
dados do arquivo para o programa, possibilitando a utilização dessas informações dentro da
lógica do software.
Abrir e fechar arquivos, declarar e acessar registros, assim como escrever e ler em arquivos são,
pois, elementos basilares na criação de softwares que envolvem a manipulação de dados
persistentes. Uma compreensão sólida desses conceitos é indispensável para garantir a
e�ciência, segurança e integridade dos sistemas, permitindo que os programadores construam
aplicações que interajam e�cazmente com eles.
Declaração e acesso aos registros
Na linguagem de programação C, a declaração e o acesso aos registros desempenham um papel
importante na organização e manipulação de dados estruturados.
Um registro é uma estrutura de dados que permite agrupar diferentes tipos de variáveis sob um
único nome. O esqueleto de um registro em C consiste na declaração da estrutura usando a
palavra-chave struct, seguida pelo nome do registro e um conjunto de membros (variáveis) entre
chaves {}. Cada membro é de�nido com um tipo de dado especí�co e um identi�cador
associado. A estrutura básica segue o formato:
struct NomeDoRegistro {
    TipoDeDado1 Membro1;
    TipoDeDado2 Membro2;
    // ... outros membros ...
    TipoDeDadoN MembroN;
};
struct: palavra-chave que indica que estamos declarando uma estrutura (registro).
NomeDoRegistro: identi�cador que nomeia a estrutura, permitindo a criação de instâncias
dessa estrutura.
TipoDeDado1, TipoDeDado2, ..., TipoDeDadoN: diferentes tipos de dados que podem incluir
inteiros, caracteres, ponto �utuante, entre outros.
Membro1, Membro2, ..., MembroN: identi�cadores associados a cada tipo de dado,
representando os campos individuais do registro.
O esqueleto fornece a estrutura básica que de�ne como os dados são organizados dentro do
registro. Essa estrutura é posteriormente utilizada para criar instâncias do registro e acessar
seus membros para armazenar e manipular dados de maneira organizada.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Declaração de registro. Fonte: elaborada pelo autor.
No exemplo da Figura 1, declaramos um registro chamado "Pessoa" que contém três variáveis:
um array de caracteres para o nome, um inteiro para a idade e um número em ponto �utuante
para a altura.
O acesso aos registros é feito utilizando o operador ponto (.) para cada variável. Para atribuir
valores a um registro "Pessoa", faríamos algo como:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 2 | Acesso aos registros. Fonte: elaborada pelo autor.
 Neste trecho de código, criamos uma instância da estrutura "Pessoa" chamada "pessoa1" e
atribuímos valores às suas variáveis individuais.
É importante ressaltar que os registros permitem agrupar informações relacionadas de forma
organizada, facilitando a manutenção e compreensão do código. Além disso, o acesso a eles
possibilita a manipulação e�ciente dos dados armazenados, tornando-se uma ferramenta valiosa
para estruturar informações em programas escritos em C.
Siga em Frente...
Uso de typedef
O uso de typedef pode simpli�car a criação de instâncias de registros, fornecendo um nome
mais conciso para o tipo.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 3 | typedef. Fonte: elaborada pelo autor.
Neste exemplo, você pode usar “Carro” diretamente como um tipo, sem a necessidade de
escrever struct toda vez que desejar criar uma instância.
Abrindo e fechando arquivos
A manipulação de arquivos é uma operação fundamental em programação que permite que os
programas armazenem e recuperem dados de maneira persistente. Em C, a abertura e o
fechamento de arquivos são realizados por meio de funções especí�cas. A função fopen() é
utilizada para abrir um arquivo, enquanto fclose() é usada para fechá-lo. A função fopen() recebe
dois parâmetros: o nome do arquivo e o modo de operação (por exemplo, “r” para leitura ou “w”
para escrita).
Figura 4 | Declarando arquivo. Fonte: elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
No exemplo anterior, um ponteiro de arquivo chamado “arquivo” é declarado e, em seguida, a
função fopen() é utilizada para abrir o arquivo “exemplo.txt” para leitura. O modo “r” indica que
estamos abrindo o arquivo em modo de leitura.
Após a conclusão das operações de leitura ou escrita, é essencial fechar o arquivo usando a
função fclose() para liberar os recursos associados. O exemplo a seguir ilustra o fechamento de
um arquivo:
Figura 5 | Fechando o arquivo. Fonte: elaborada pelo autor.
Ao fechar o arquivo, o sistema operacional libera quaisquer recursos alocados para a
manipulação do arquivo, garantindo a integridade dos dados e evitando possíveis problemas de
acesso concorrente.
Vale ressaltar que, ao abrir um arquivo, é preciso veri�car se a operação foi bem-sucedida, pois
falhas na abertura podem ocorrer por diversos motivos, como inexistência do arquivo ou
permissões de acesso inadequadas. O ponteiro de arquivo retornado pela função fopen() deve
ser veri�cado para garantir que não seja nulo, indicando que a operação foi bem-sucedida.
Em resumo, a abertura e o fechamento de arquivos em C são operações cruciais para garantir a
persistência de dados. O uso adequado dessas funções, juntamente com veri�cações
apropriadas, contribui para a robustez e con�abilidade dos programas.
Escrevendo e lendo em arquivos
Escrever e ler em arquivos em C é uma parte essencial da programação, permitindo que os
programas armazenem informações persistentes e recuperem dados quando necessário. A
função fprintf() é usada para escrever dados em um arquivo, enquanto fscanf() é empregada
para ler dados de um arquivo.
A manipulação de arquivos em C é realizada por meio de modos que indicam a operação que
será executada no arquivo. O quadro a seguir mostra alguns dos modos mais comuns de
abertura de arquivos em C:
Modo Descrição
“r”
Abre o arquivo para leitura. O
arquivo deve existir; caso
contrário, a abertura falhará.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
“w”
Abre o arquivo para escrita. Se o
arquivo já existir, seu conteúdo é
truncado; se não existir, um novo
arquivo é criado.
“a”
Abre o arquivo para escrita no
modo anexo (append). Os dados
são adicionados ao �nal do
arquivo se ele existir, ou um novo
arquivo é criado se não existir.
“r+” Abre o arquivo para leitura e
escrita. O arquivo deve existir.
“w+”
Abre o arquivo para leitura e
escrita. Se o arquivo já existir, seu
conteúdo é truncado; se não
existir, um novo arquivo é criado.
“a+”
Abre o arquivo para leiturae
escrita no modo anexo (append).
Os dados são adicionados ao �nal
do arquivo se ele existir, ou um
novo arquivo é criado se não
existir.
Quadro 1 | Modos de abertura de arquivos. Fonte: elaborado pelo autor.
Estes são apenas alguns dos modos mais comuns, mas há outros menos utilizados ou
especí�cos para operações binárias ("rb", "wb", "ab", "r+b", "w+b", "a+b", etc.). Ao utilizá-los, é
fundamental realizar veri�cações adequadas para garantir que as operações de abertura sejam
bem-sucedidas antes de prosseguir com a leitura ou escrita.
Para escrever em um arquivo, primeiramente, é preciso abrir o arquivo em modo de escrita. A
Figura 6 ilustra como escrever dados simples em um arquivo:
Figura 6 | Escrevendo. Fonte: elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Neste exemplo, a função fprintf() é usada para escrever uma string e um número no arquivo
"exemplo.txt". O caractere de nova linha (\n) é usado para separar as linhas no arquivo.
Para ler dados de um arquivo, é necessário abri-lo em modo de leitura. Na Figura 7, observamos
como ler dados previamente escritos no arquivo:
Figura 7 | Lendo. Fonte: elaborada pelo autor.
Neste caso, a função fgets() é utilizada para ler uma linha por vez do arquivo. O conteúdo lido é
então exibido no console usando printf().
Ao lidar com leitura e escrita de dados em arquivos, é crucial realizar veri�cações para garantir
que as operações ocorram sem problemas. Certi�que-se de que o arquivo foi aberto
corretamente e que as operações de leitura ou escrita foram concluídas com sucesso.
Para escrita e leitura de tipos de dados complexos, como estruturas, as funções fwrite() e fread()
podem ser utilizadas. Elas são particularmente úteis para armazenar e recuperar blocos de
dados binários.
Conclusão
O entendimento dos conceitos relacionados à declaração e acesso aos registros, abertura e
fechamento de arquivos, e escrita e leitura em arquivos é essencial para o desenvolvimento de
programas robustos e e�cientes. A capacidade de organizar dados em registros, assim, oferece
uma estrutura lógica para representar informações complexas de maneira clara e ordenada,
facilitando a manipulação e análise dos dados. Essa qualidade é particularmente útil ao modelar
objetos palpáveis, como registros de funcionários, informações de clientes ou dados de
transações.
Já a operação adequada de abertura e fechamento de arquivos é determinante para garantir a
persistência de dados. Abrir um arquivo permite que o programa estabeleça uma conexão com o
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
sistema de arquivos, aloque recursos necessários e inicie operações de leitura ou escrita. Por
outro lado, fechar o arquivo é primordial para liberar recursos e evitar possíveis problemas de
integridade dos dados. Essas operações são fundamentais em cenários reais, nos quais a
persistência e a recuperação de informações são indispensáveis, como em sistemas de
gerenciamento de arquivos ou bancos de dados.
A habilidade de escrever e ler em arquivos, por seu turno, permite a interação dinâmica e
contínua entre um programa e o sistema de armazenamento. Ao escrever em arquivos, os
programas podem armazenar dados relevantes para uso futuro, enquanto a leitura de arquivos
possibilita a recuperação dessas informações quando necessário. Essa funcionalidade é vital em
muitas aplicações cotidianas, como sistemas de registro de logs, armazenamento de
con�gurações de aplicativos e processamento de grandes conjuntos de dados armazenados
externamente.
Ao aplicar esses conceitos, os desenvolvedores podem criar softwares mais �exíveis e
adaptáveis às necessidades do mundo real. A manipulação e�caz de registros, combinada com
operações adequadas de abertura, fechamento, escrita e leitura de arquivos, resulta em
programas mais e�cientes, seguros e capazes de lidar com uma variedade de cenários práticos.
Essas práticas são capitais para o desenvolvimento de sistemas que lidam com dados
persistentes, garantindo uma interação �uida entre o software e o sistema de armazenamento,
contribuindo para a robustez e con�abilidade do sistema como um todo.
Vamos Exercitar?
Retomando a situação apresentada no início da aula, na qual você foi designado para criar um
programa em C que gerencie informações de estudantes. Cada estudante possui os seguintes
dados: nome, idade e média. O programa deve permitir ao usuário inserir informações de vários
estudantes e, em seguida, salvar essas informações em um arquivo chamado "estudantes.txt".
Além disso, o programa deve possibilitar a leitura dessas informações a partir do arquivo.
Vamos à resolução?
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 8 | Registros para armazenar informações. Fonte: elaborada pelo autor
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 9 | Leitura das informações. Fonte: elaborada pelo autor.
Este programa em C mostra a utilização de registros (structs) para armazenar informações sobre
estudantes e como gravar esses dados em um arquivo. Além disso, ele possibilita a leitura das
informações a partir do arquivo, fornecendo uma abordagem prática sobre o uso de registros e
manipulação de arquivos em C.
Saiba mais
Para saber mais sobre registros e arquivos, consulte o Capítulo 13 - Entrada e Saída: Arquivos, do
livro Elementos de programação em C, de Pinheiro, disponível no repositório da Biblioteca virtual.
PINHEIRO, F. de A. C. Capítulo 13 - Entrada e Saída: Arquivos. In: Elementos de programação em
C. Porto Alegre: Bookman, 2012, p. 341-384. 
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/358
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/358
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/358
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/358
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/358
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 5
Aplicações de Programação
Videoaula de Encerramento
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, caro estudante! Seja muito bem-vindo à nossa videoaula dedicada às funções, funções
recursivas, registros e arquivos. Nela, exploraremos a fundo tais conteúdos e os elementos
essenciais de um programa na linguagem C.
Aproveite esta oportunidade de aprendizado e mergulhe neste conteúdo fundamental para o
cenário de algoritmos.
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Chegada
Olá, estudante! Para desenvolver a competência desta Unidade, isto é, criar soluções
algorítmicas utilizando técnicas de funções e recursividade e estruturas, como vetores e
matrizes, tivemos que estudar a fundo procedimentos e funções.
Durante esta jornada de aprendizado em programação C, mergulhamos em conceitos
fundamentais para o desenvolvimento de algoritmos. Entre estes tópicos importantes estão:
Programação e funções com vetores: exploração de conceitos e técnicas relacionados à
manipulação de vetores em programação.
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u4enc_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Programação com matrizes: abordagem de técnicas e práticas voltadas para a
programação envolvendo matrizes.
Introdução a função e recursividade: apresentação inicial de conceitossobre funções e
recursividade em programação.
Registros e arquivos: estudo de registros e manipulação de arquivos em programação.
Tais conhecimentos, que constituem a base para enfrentar desa�os de maior complexidade, o
preparou para adentrar temas mais profundos e empregar suas habilidades em projetos do
mundo real. 
É Hora de Praticar!
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Agora, convido você, estudante, a trabalhar com o conteúdo abordado nesta unidade de ensino.
Para tanto, vamos abordar um estudo de caso sobre Cálculo do Imposto de Renda Pessoa Física
(IRPF) com o cenário descrito a seguir:
Requisitos
Você foi designado para desenvolver uma função em linguagem C que calcule o Imposto de
Renda Pessoa Física (IRPF) com base nos rendimentos anuais de um contribuinte. Os requisitos
detalhados são os seguintes:
Entrada de dados
A função deve receber como parâmetro a renda anual do contribuinte.
Faixas de renda
A tabela de alíquotas é dividida em faixas de renda.
Considerar três faixas: até R$ 50.000, de R$ 50.001 até R$ 100.000, e acima de R$ 100.000.
Alíquotas e deduções
Estabelecer alíquotas de imposto diferentes para cada faixa.
De�nir valores �ctícios para as alíquotas.
Incluir deduções �scais para cada faixa.
Cálculo do imposto
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Realizar o cálculo do imposto devido considerando as faixas, alíquotas e deduções
estabelecidas.
Retorno
A função deve retornar o valor do imposto devido.
Testes
Incluir exemplos de uso da função em um programa principal (main) para demonstrar como
a função pode ser utilizada.
A seguir, apresentamos duas questões de re�exão para aprofundar nossa compreensão sobre
esses temas:
1. Funções com vetores
Re�etindo sobre a utilização de funções com vetores, considere como essa abordagem
pode otimizar a organização e e�ciência do código. 
Pense em situações práticas em que a modularidade proporcionada por funções pode
facilitar a manipulação de vetores e como isso contribui para a manutenção do código. 
Além disso, questione-se sobre como essa prática pode melhorar a legibilidade e a
reusabilidade do seu código.
 2. Funções recursivas
Ao explorar o conceito de funções recursivas, re�ita sobre a elegância e simplicidade que
essa abordagem pode oferecer em certos contextos. 
Considere exemplos de situações em que a recursividade se destaca e questione-se sobre
os desa�os e as precauções necessárias ao utilizar esse recurso.
Pondere sobre como a compreensão profunda da recursividade pode in�uenciar a
resolução de problemas complexos e como você pode aplicar essa técnica de maneira
e�ciente em seus projetos. 
Re�etindo sobre funções com vetores e funções recursivas, percebemos que estes são
pilares fundamentais na construção de habilidades sólidas em programação. 
O entendimento desses temas não apenas capacita a resolução de problemas especí�cos,
mas também aprimora a capacidade de pensar de forma algorítmica. 
Dê o Play!
Clique aqui para acessar os slides do Dê o play!
 
Cálculo do Imposto de Renda Pessoa Física (IRPF)
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u4play_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
O desenvolvimento da função segue uma lógica de tomada de decisões baseada nas faixas de
renda, utilizando estruturas condicionais (if, else if). O cálculo do imposto é realizado
multiplicando a renda pela alíquota da faixa correspondente e subtraindo as deduções �scais.
A seguir, oferecemos uma solução em linguagem C, com um exemplo de programa principal
(main) para testar a função de cálculo do Imposto de Renda Pessoa Física (IRPF).
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Cálculo do IRPF. Fonte: elaborada pelo autor.
Conclusão
Este estudo de caso destaca a abordagem conceitual na criação da função, apresentando uma
visão detalhada dos requisitos para o cálculo do Imposto de Renda Pessoa Física (IRPF) em
linguagem C. 
Nesta linha do tempo, apresentamos, resumidamente, os principais conceitos relacionados a
funções com vetores, programação com matrizes, a função e recursividade, e registros e
arquivos.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura | Programação lógica. Fonte: elaborada pelo autor.
 
 
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
PINHEIRO, F. de A. C. Elementos de programação em C. Porto Alegre: Bookman, 2012.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
WAZLAWICK, R. S. Introdução a algoritmos e programação com Python: uma abordagem dirigida
por testes. Rio de Janeiro: LTC, 2018.o tempo e
recursos.
Resolução de problemas pessoais: o raciocínio lógico pode ser usado para analisar opções,
considerar consequências e tomar decisões.
Comunicação e�caz: a lógica é utilizada na expressão de ideias para garantir clareza e
compreensão.
Ao conhecermos as principais características de lógica e compreendermos as suas diversas
aplicações, adquirimos ferramentas importantes para enfrentar desa�os e tomar decisões de
forma mais fundamentada. A lógica é uma habilidade aplicável em diversas áreas da vida
pro�ssional e pessoal. Nos exemplos fornecidos, percebemos como ela é essencial no
desenvolvimento de algoritmos, na tomada de decisões empresariais e, até mesmo, nas nossas
escolhas diárias. Ao incorporar a lógica em seu pensamento, você fortalecerá suas capacidades
analíticas e pragmáticas.
Siga em Frente...
Formas de representação-�uxograma
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Os �uxogramas são representações grá�cas que desempenham um papel importante na análise
e no design de algoritmos e processos, permitindo a compreensão clara e sistemática de uma
sequência de ações. Nesta aula, exploraremos as características das formas de representação
com �uxogramas e como elas podem ser aplicadas em diversas situações por meio de exemplos
práticos que destacam sua utilidade na realidade pro�ssional. Algumas dessas características
são:
Simplicidade e clareza: os �uxogramas buscam simpli�car a representação de processos
complexos, tornando-os visualmente compreensíveis. Eles utilizam símbolos padronizados
para representar diferentes tipos de operações.
Sequencialidade e estruturação: os �uxogramas seguem uma lógica sequencial, facilitando
a visualização de etapas sucessivas em um processo. A estruturação clara permite
identi�car o �uxo de informações e tomadas de decisão.
Adaptabilidade: �uxogramas podem ser adaptados para representar diversos contextos,
desde algoritmos computacionais até processos de negócios. São uma ferramenta versátil
para a análise e comunicação.
Um �uxograma, em síntese, simpli�ca o entendimento da sequência de um determinado
conceito/assunto abordado, mesmo para quem não é conhecedor em linguagens de
programação. Ao seguir as setas e formas, ele mostra, de forma intuitiva, como o algoritmo
trabalha, e essa clareza visual torna-se essencial para o raciocínio lógico.
Na Figura 1, trazemos um exemplo de �uxograma de um algoritmo que solicita ao usuário dois
valores numéricos inteiros, faz a soma deles e, na sequência, exibe o resultado na tela.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Exemplo de �uxograma. Fonte: elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Note que na Figura 1, as instruções estão dispostas com uma sequência lógica que garante a
execução de maneira ordenada de todos os comandos dentro do algoritmo.
Vale mencionar, ainda, algumas aplicações e exemplos práticos das representações de
�uxogramas, como:
Desenvolvimento de software: em programação, �uxogramas são utilizados para
representar algoritmos, destacando o �uxo de controle e as decisões lógicas do código.
Gestão de processos empresariais: empresas utilizam �uxogramas para mapear e otimizar
processos internos, identi�cando áreas de melhoria e aumentando a e�ciência operacional.
Projetos de engenharia: engenheiros utilizam �uxogramas para representar o
sequenciamento de etapas em projetos, desde a concepção até a sua implementação.
Fluxograma de atendimento ao cliente: representação visual do processo de atendimento
ao cliente em uma central de suporte, mostrando as etapas desde a chegada do pedido até
a resolução do problema.
Fluxograma de compra on-line: ilustração grá�ca do processo de compra em uma loja
online, destacando as escolhas do cliente, o �uxo de pagamento e a con�rmação da
compra.
As formas de representação com �uxogramas são ferramentas e�cazes na visualização e
compreensão de processos complexos. Sua aplicação em diversas áreas, do desenvolvimento
de software à gestão empresarial, destaca a variabilidade dessa abordagem. Ao compreender as
características e aplicações dos �uxogramas, os pro�ssionais podem melhorar a análise e a
comunicação de informações, promovendo a e�ciência e o sucesso em suas atividades.
Portanto, explore, pratique e incorpore o uso de �uxogramas em seu repertório de habilidades,
pois eles são ótimos aliados no mundo pro�ssional.
Vamos Exercitar?
Vamos retomar a situação apresentada no início da aula: uma mercearia deseja otimizar o
controle de estoque de seus produtos. O gerente quer saber se a quantidade de itens em estoque
está abaixo do nível mínimo para acionar pedidos de reposição.
Para desenvolver um algoritmo simples para otimizar o controle de estoque dos produtos de uma
mercearia, você deve aplicar a lógica para identi�car os produtos que precisam ser
reabastecidos. Vamos a resolução?
Solicitar a quantidade atual de um produto em estoque
Exibir uma mensagem pedindo para o usuário informar a quantidade do produto.
Ler e armazenar a quantidade em uma variável.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Veri�car se a quantidade está abaixo do nível mínimo
Utilizar uma estrutura condicional para comparar a quantidade com um valor mínimo
preestabelecido.
Se a quantidade estiver abaixo do nível mínimo, atribuir à variável “reabastecer” o valor
verdadeiro (sim).
Exibir o resultado
Exibir uma mensagem indicando se é necessário ou não reabastecer o produto, com base
na veri�cação realizada.
Neste exemplo, aplicamos a lógica para resolver um desa�o comum de gerenciamento de
estoque. A capacidade de tomar decisões com base em condições é fundamental, e essa
situação destaca a aplicação prática da lógica na solução de problemas do cotidiano. Continuar
aprimorando essas habilidades é essencial para o desenvolvimento pro�ssional. Estude, pratique
e explore diferentes cenários para fortalecer sua capacidade de raciocínio lógico.
Saiba mais
Para saber mais sobre os conceitos e introdução aos algoritmos, consulte o Capítulo 1 -
Introdução, do livro Estudo dirigido de algoritmos, de Manzano e Oliveira, disponível no
repositório da Biblioteca Virtual.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Capítulo 1 – Introdução. In: Estudo dirigido de
algoritmos. São Paulo: Érica, 2000, p. 15-24. 
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
JR., Dilermando. Algoritmos e Programação de Computadores. Rio de Janeiro: Grupo GEN, 2019.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos - Lógica para Desenvolvimento de
Programação de Computadores. São Paulo: Editora Saraiva, 2019.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/13
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/13
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/13
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/13
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/13
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/13
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 3
Elementos Fundamentais de Programação
Elementos fundamentais de programação
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante!
Nesta videoaula, abordaremos os três pilares fundamentais para o desenvolvimento de
habilidades sólidas em programação: a importância da aplicação de algoritmos, a utilizaçãode
operadores relacionais e lógicos, e a declaração e utilização de variáveis. Este vídeo será
conduzido com o objetivo de compartilhar conhecimentos e explorar diferentes formas para
compreender os conteúdos tratados por meio da apresentação de exemplos práticos, exercícios
interativos e dicas importantes para garantir que você assimile os conceitos discutidos e consiga
aplicá-los em seus próprios projetos.
Aproveite para aprimorar seus talentos em programação e expandir seu entendimento sobre os
elementos que serão aqui discutidos. 
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Olá, estudante! Seja bem-vindo à aula sobre os elementos fundamentais de programação.
Como vimos anteriormente, os algoritmos são a base para resolver problemas de forma
estruturada e e�ciente. Por essa razão, destacaremos a importância de desenvolver algoritmos
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u1a3_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
claros e concisos que nos permitam criar soluções para uma variedade de desa�os.
Exploraremos, nesse processo, os operadores relacionais e lógicos, os quais nos permitem
comparar valores e tomar decisões dentro de nossos programas, e compreenderemos como eles
são utilizados para construir expressões lógicas que nos ajudam a controlar o �uxo de execução
do código.
Por �m, vamos aprender sobre a declaração de variáveis, elementos fundamentais para
armazenar e manipular dados nos programas, e como atribuir valores a elas e utilizá-las em
diferentes contextos para resolver problemas do mundo real.
Para ilustrar, imagine que você está desenvolvendo um sistema de segurança para uma empresa
que deseja controlar o acesso de seus funcionários a determinadas áreas restritas com a
utilização de operadores lógicos.
Preparado para esses novos aprendizados? Então, boa aula!
Vamos Começar!
O objetivo desta aula é introduzir os elementos fundamentais da programação, abordando alguns
de seus principais conceitos, de�nições e características, além de contextualizar você, estudante,
neste enorme cenário de tecnologia no qual estamos inseridos.
Estudar esses tópicos é primordial para qualquer pessoa que deseje crescer em sua formação
acadêmica e pro�ssional na área de programação. Eles são estruturas essenciais sobre as quais
a compreensão e a prática da programação são construídas. O entendimento da aplicação de
algoritmos, dos operadores relacionais e lógicos, e da declaração e utilização de variáveis
também será de extrema importância para que haja o desenvolvimento de habilidades e a
resolução de problemas, e, igualmente, para que seja proporcionada uma base sólida para o
aprendizado de linguagens de programação especí�cas, permitindo uma transição suave para
explorar tecnologias mais avançadas.
Ao compreender os elementos fundamentais do campo, os estudantes desenvolvem uma
mentalidade crítica que os capacita a abordar uma variedade de desa�os computacionais com
con�ança e criatividade.
Importância da aplicação de algoritmos
Na programação, a aplicação de algoritmos é um dos conteúdos fundamentais que impulsiona o
desenvolvimento de softwares e de soluções tecnológicas. Algoritmos são conjuntos de
instruções sequenciais que resolvem problemas especí�cos. Nesta seção, vamos explorar a
importância da aplicação de algoritmos na programação, destacando, para tanto, suas
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
características distintivas e fornecendo exemplos práticos que evidenciam sua relevância na
realidade pro�ssional.
Quanto às principais características dos algoritmos, temos:
Precisão e clareza: algoritmos são projetados para serem precisos e claros, com instruções
especí�cas que não deixam margem para ambiguidades, o que facilita a implementação e
compreensão por parte dos programadores.
E�ciência: a e�ciência é uma característica crucial dos algoritmos. Algoritmos e�cientes
executam tarefas de maneira rápida e consomem recursos de forma otimizada, garantindo
um desempenho adequado do software.
Reusabilidade: algoritmos podem ser reutilizados em diferentes partes de um programa ou
em projetos distintos, economizando tempo e esforço no desenvolvimento de software.
E para que �que mais clara a importância de sua utilização em situações reais, apresentamos, a
seguir, algumas ilustrações:
Ordenação de dados: algoritmos de ordenação, como o algoritmo de ordenação rápida
(Quicksort) ou o algoritmo de ordenação por mistura (Merge Sort), são essenciais para
organizar grandes conjuntos de dados em ordem crescente ou decrescente.
Busca de informações: algoritmos de busca, como a busca binária, são importantes aliados
na busca de informações em conjuntos de dados ordenados, minimizando o tempo de
execução.
Inteligência arti�cial: algoritmos são a base da inteligência arti�cial, impulsionando a
criação de modelos de aprendizado de máquina que podem reconhecer padrões, tomar
decisões e melhorar cada vez mais com o tempo.
Roteamento em redes: em sistemas de navegação GPS, por exemplo, algoritmos são
aplicados para calcular a rota mais e�ciente de um ponto A para um ponto B, considerando
variáveis como tráfego e distância.
A aplicação de algoritmos na programação é, em suma, de grande importância para a e�ciência e
o sucesso no desenvolvimento de software. Sua precisão, competência e reusabilidade
proporcionam uma base con�ável para a construção de sistemas inteligentes e inovações
tecnológicas interessantes e instigantes. Ao compreender e aplicar algoritmos de maneira
assertiva, os programadores são capazes de criar soluções inteligentes que irão impactar
positivamente diversos setores pro�ssionais. Portanto, mergulhe no estudo e na prática deste
tema, pois isso não apenas aprimorará suas habilidades como programador, como também
abrirá portas para contribuições signi�cativas no mundo da tecnologia.
Siga em Frente...
Operadores relacionais e lógicos
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Os operadores relacionais e lógicos são também elementos essenciais na programação,
desempenhando um papel de grande relevância na construção de algoritmos e na tomada de
decisões. Neste tópico, apresentaremos as características desses operadores, fornecendo uma
compreensão um pouco mais aprofundada de como são utilizados na prática, trazendo
exemplos que destacam sua importância na realidade pro�ssional.
Os operadores relacionais são responsáveis por comparar valores e produzir resultados
booleanos (verdadeiro ou falso). As suas características principais incluem:
Igualdade (==) Veri�ca se dois valores são iguais.
Diferença (!=) Veri�ca se dois valores são
diferentes.
Maior (>) Veri�ca se o valor à esquerda é maior
que o valor à direita.
Menor (=) Veri�ca se o valor à esquerda é maior
ou igual ao valor à direita.
Menor ou Igual (= 18; // Retorna
verdadeiro
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
2.     Operadores lógicos:
int temperatura = 25;
boolean ensolarado = true;
boolean condicaoPasseio = temperatura > 20 && ensolarado; // Retorna verdadeiro
Aqui, vale também destacaras aplicações desses operadores no âmbito pro�ssional, como:
Validação de dados em formulários web: operadores relacionais são utilizados para validar
se os dados inseridos em formulários atendem a critérios especí�cos, como idade mínima
ou formato de e-mail.
Controle de acesso em sistemas: operadores lógicos são empregados para determinar se
um usuário possui permissões su�cientes para acessar determinadas partes de um
sistema.
Os operadores relacionais e lógicos são, portanto, ferramentas necessárias na programação,
pois permitem criar algoritmos complexos e tomar decisões lógicas. Compreender esses
operadores é primordial para os futuros programadores, dado que eles são amplamente
utilizados em todas as fases do desenvolvimento de software. Ao dominar tais conceitos, os
pro�ssionais ganham a habilidade de criar códigos mais e�cientes e funcionais, os quais serão
capazes de lidar com uma variedade de situações.
Declaração e utilização de variáveis
A declaração de variáveis é o processo pelo qual o programador reserva um espaço na memória
do computador para armazenar dados. Cada variável tem um nome único que a identi�ca e um
tipo de dado associado que de�ne as informações que ela pode armazenar. A declaração, assim,
é essencial para informar ao compilador ou interpretador qual será o tipo de dado que ela
manipula.
Na pseudolinguagem Portugol, a declaração de variáveis é feita de maneira simples, atribuindo
um nome à variável e indicando seu tipo. Os tipos mais comuns são Inteiro, Real e Caractere. Na
sequência, com o objetivo de contextualizar a sua importância, apresentaremos alguns exemplos
práticos de declaração e aplicação de variável em Portugol.
algoritmo "Exemplo
Variáveis"
var
   nome: caractere
   idade: inteiro
   altura: real
�m_var
 
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
inicio
   // Código do algoritmo
�m
Após a declaração, as variáveis podem ser utilizadas para armazenar e manipular dados, o que
inclui a atribuição de valores, a realização de cálculos e a exibição de informações. Esse uso
torna possível a criação algoritmos dinâmicos e interativos.
algoritmo "CalculoIMC"
var
   peso, altura, imc: real
�m_var
 
inicio
   escreva("Digite o peso: ")
   leia(peso)
 
    escreva("Digite a altura:
")
   leia(altura)
 
    imclançamentos e
as informações sobre o seu cartão de crédito.
Preparado? Boa aula!
Vamos Começar!
Nesta aula, vamos embarcar em uma jornada de aprendizado que desenvolverá três tópicos
fundamentais para quem está dando os primeiros passos na criação de algoritmos.
Vamos começar entendendo a importância da utilização de constantes em algoritmos. Ao
compreender como declarar e utilizar constantes, você será capaz de atribuir valores �xos que
permanecem inalterados durante a execução do programa, proporcionando clareza ao código e
facilitando futuras manutenções.
Em seguida, exploraremos o formato de um algoritmo, já que a habilidade de expressar ideias de
maneira estruturada é crucial na programação. Por essa razão, vamos nos aprofundar em como
utilizar descrições narrativas para organizar a lógica do programa e em pseudocódigos como
uma forma intermediária entre a linguagem natural e a de programação.
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u1a4_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Por �m, considerando que a manipulação de dados é essencial na programação, abordaremos os
operadores, ferramentas que nos permitem realizar diversas operações. Conheceremos os
operadores de atribuição, necessários para a manipulação de variáveis, e os comandos de
entrada e saída, elementares para a interação usuário-programa.
Prepare-se para explorar cada um desses tópicos de maneira prática e interativa, garantindo uma
compreensão sólida dos fundamentos da programação. Vamos mergulhar nesse universo
emocionante, construindo as bases que impulsionarão sua jornada no mundo da codi�cação.
Utilização de constantes em algoritmos
As constantes possuem um papel determinante na programação, proporcionando uma maneira
e�ciente de atribuir valores �xos que permanecem inalterados durante a execução de um
algoritmo. Ao contrário das variáveis, que podem ter seus valores modi�cados ao longo do
programa, as constantes mantêm sua integridade, tornando o código mais legível e de fácil
manutenção.
Em seu livro Estudo dirigido de algoritmos, Manzano (2000, p. 43) de�ne uma constante como:
Todo valor que é �xo, estável, que não é passível de mudança é considerado uma constante.
Dessa maneira, do ponto de vista matemático e computacional, uma constante é uma grandeza
numérica �xa, utilizada normalmente numa expressão aritmética ou matemática, a qual de�ne
um valor inalterado na expressão, independente das variáveis envolvidas na operação a ser
realizada.
A declaração de constantes é realizada para reservar um espaço de armazenamento na memória
que será utilizado para guardar um valor �xo. Geralmente, as constantes são declaradas no início
do programa e recebem um identi�cador único. A sintaxe pode variar dependendo da linguagem
de programação escolhida, mas em Portugol, por exemplo, a declaração pode ocorrer da
seguinte forma:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Constante de PI. Fonte: elaborada pelo autor.
O valor de PI, apresentado na Figura 1, sempre é um valor de referência quando estamos falando
de uma constante. Seu valor arredondado é 3.14, ou seja, é um valor que nunca muda.
Algumas vantagens da utilização de constantes são:
Legibilidade do código: o uso de constantes torna o código mais compreensível, pois
valores �xos são representados por identi�cadores signi�cativos.
Facilidade de manutenção: se houver a necessidade de alterar um valor �xo em todo o
programa, basta modi�car a declaração da constante, evitando buscas e substituições em
todo o código.
Afastamento de magic numbers: evita a presença de "números mágicos" no código, que
são valores literais usados diretamente nas operações, tornando difícil entender seu
propósito.
Suponha, por exemplo, que você esteja desenvolvendo um programa para calcular a área de um
círculo. Utilizando uma constante para representar o valor de PI, o código pode ser mais claro e
fácil de entender, como observaremos a seguir:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 2 | Algoritmo utilizando uma constante (PI = 3.14). Fonte: elaborada pelo autor.
Ao empregar constantes, seu código se tornará mais legível e sustentável, contribuindo para uma
programação mais e�ciente e de qualidade. A compreensão e prática da utilização de constantes
são habilidades fundamentais para qualquer aspirante a programador.
Formato de um algoritmo: descrição narrativa e pseudocódigos
Quando adentramos no fascinante universo da programação, nos deparamos com desa�os que
exigem soluções bem estruturadas. Logo, é importante compreender as distintas formas de
representação de algoritmos, que são três: narrativa, �uxograma e pseudolinguagem.
Como o �uxograma já foi tratado em aulas anteriores, nos debruçaremos, a seguir, na narrativa e
na pseudolinguagem.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Forma narrativa: nessa forma de representar um algoritmo, utilizamos uma linguagem
próxima ao nosso cotidiano, descrevendo, de maneira clara e sequencial, as ações a serem
executadas. Um exemplo é a receita de bolo em forma de instruções.
Ingredientes:
2 xícaras de farinha de trigo
1 xícara de açúcar
3 ovos
1 xícara de leite
1/2 xícara de óleo
1 colher de sopa de fermento em pó
1 colher de chá de essência de baunilha
Preparo:
Pré-aqueça o forno a 180°C.
Em uma tigela, misture a farinha de trigo e o fermento em pó.
Em outra tigela, bata os ovos e adicione o açúcar, o leite, o óleo e a essência
de baunilha. Misture bem.
Acrescente a mistura de farinha de trigo aos poucos à segunda tigela,
mexendo continuamente até obter uma massa homogênea.
Unte uma forma com margarina e farinha.
Despeje a massa na forma e leve ao forno pré-aquecido por
aproximadamente 40 minutos, ou até que o bolo esteja dourado e �rme ao
toque.
Faça o teste do palito: insira um palito no centro do bolo; se sair limpo, o bolo
está pronto.
Retire do forno e deixe esfriar antes de desenformar.
Dicas:
Varie adicionando frutas, como bananas ou maçãs, à massa.
Explore coberturas, como ganache de chocolate ou glacê.
Preparar um bolo é uma atividade prazerosa e criar a sua própria versão pode tornar a
experiência ainda mais única. Essa receita básica serve como ponto de partida, permitindo que
você solte sua criatividade ao experimentar diferentes ingredientes e técnicas. Aprecie o
processo e, principalmente, saboreie o resultado!
  Pseudolinguagem: a pseudolinguagem Portugol, conhecida também como "português
estruturado", é uma ferramenta pedagógica utilizada no ensino de lógica de programação.
Desenvolvida para facilitar o entendimento dos conceitos fundamentais da área, ela se
destaca por sua simplicidade e clareza, sendo especialmente voltada para iniciantes. A
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
pseudolinguagem, é uma forma de expressão que combina elementos da linguagem
humana com estruturas de programação. Ela oferece uma transição suave do conceitual
para o prático, preparando o terreno para a codi�cação efetiva (Manzano, 2000).
Na Figura 3, apresentamos um exemplo simples de programação em Portugol, ou seja, utilizando
o português estruturado.
Figura 3 | Pseudolinguagem Portugol. Fonte: elaborada pelo autor.
Essa representação oferece uma visão clara e legível do algoritmo, facilitando o entendimento
das etapas lógicas envolvidas na entrada e saída de dados.
Siga em Frente...
Operadores: atribuição e comandos de entrada e saída
De acordo com Manzano (2000, p. 47),
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Para elaborar um programa, é necessário ter em mente três pontos: a entrada, o processamento
e a saída de dados. Se os dados forem entrados de forma errada, serão consequentemente
processados de forma errada e resultarão respostas erradas. Se houve algum erro, é porque foi
causado por falha humana. Uma entrada e uma saída podem ocorrer em um computador de
diversas formas. Por exemplo, uma entrada pode ser feita via teclado, modem, leitores ópticos,
disco, entre outras. Umasaída pode ser feita em vídeo, impressora, disco, entre outras formas.
Devido a esta grande variedade, os programas escritos em português estruturado fazem menção
às instruções de entrada leia e de saída escreva.
Os comandos de entrada e saída, assim, desempenham um papel indispensável na interação
entre o usuário e o programa, permitindo a troca de informações de forma dinâmica. Em
Portugol, pseudolinguagem amplamente utilizada no aprendizado de programação, esses
comandos são fundamentais para criar algoritmos interativos e funcionais.
Comando de entrada: representado por leia(), é utilizado para capturar dados fornecidos
pelo usuário durante a execução do programa. Esse comando possibilita a interação direta,
na qual o usuário introduz valores que serão posteriormente processados pelo algoritmo.
Observe a Figura 4:
Figura 4 | Comando "leia”. Fonte: elaborada pelo autor.
No exemplo anterior, o programa solicita que o usuário digite seu nome, armazena essa
informação na variável nome e, em seguida, emite uma saudação personalizada.
Comando de saída: representado por escreva(), tem a �nalidade de exibir informações ao
usuário. Pode ser utilizado para apresentar resultados de cálculos, mensagens informativas
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
ou qualquer texto relevante. Veja um exemplo simples na Figura 5:
Figura 5 | Comando “escreva”. Fonte: elaborada pelo autor.
Nesse caso, o programa calcula o dobro de um número prede�nido (10) e exibe o resultado.
Os comandos de entrada e saída são, portanto, essenciais para tornar os algoritmos mais
dinâmicos e interativos. Eles permitem que o programa se adapte aos dados fornecidos pelos
usuários e forneça um feedback relevante, tornando a experiência mais amigável e funcional.
Dominar os comandos de entrada e saída em Portugol é um passo determinante no
desenvolvimento das habilidades de programação. Esses comandos formam a base para a
construção de algoritmos mais complexos, capacitando os aprendizes a criarem programas
interativos e funcionais em diferentes contextos.
Vamos Exercitar?
Vamos retomar a situação apresentada no início da aula: você foi designado para desenvolver
um programa simples em Portugol que permita a um correntista consultar seus dados bancários.
O programa deve oferecer opções para o usuário visualizar o saldo da conta, o extrato dos
últimos lançamentos e as informações sobre o seu cartão de crédito. Comece fazendo
anotações de todos os processos que seu algoritmo tem que realizar.
Vamos à resolução?
Início do programa
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
O programa se inicia com uma mensagem de boas-vindas e apresenta as opções
disponíveis para consulta. Observe o código em Portugol a seguir:
Figura 6 | Início do programa. Fonte: elaborada pelo autor.
Comando de entrada para opção
O programa solicita que o usuário escolha uma das opções disponíveis.
Figura 7 | Comando de entrada para opção. Fonte: elaborada pelo autor.
Finalização do programa
O programa encerra com uma mensagem de agradecimento.
Figura 8 | Finalização do programa. Fonte: elaborada pelo autor.
O exemplo prático destaca a importância dos comandos de entrada e saída na programação,
pois permitem a interação direta entre o usuário e o sistema. A habilidade de manipular dados de
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
entrada e apresentar resultados de saída é fundamental para o desenvolvimento de aplicações
práticas e úteis, como o sistema de consulta bancária apresentado.
Saiba mais
Para saber mais sobre os comandos de entrada e saída, acesse, em sua Biblioteca virtual, o
Capítulo 3 - Programação com sequência, do livro Estudo dirigido de algoritmos, de Manzano e
Oliveira.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Capítulo 3 – Programação com sequência. In: Estudo
dirigido de algoritmos. São Paulo: Érica, 2000, p. 38-57. 
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
Aula 5
Lógica de Programação
Videoaula de Encerramento
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/37
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/37
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/37
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/37
https://integrada.minhabiblioteca.com.br/reader/books/9788536519067/pageid/37
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Seja bem-vindo à videoaula de encerramento desta Unidade. Nela abordaremos
os conceitos de algoritmos e a de�nição de lógica de programação, dois temas indispensáveis
para qualquer pro�ssional da computação. Pronto para embarcar nesta jornada de
conhecimento? Vamos desmisti�car os conceitos, fortalecer nossas bases e construir um
caminho sólido para o sucesso na área.
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Chegada
Olá, estudante! Para desenvolver a competência desta Unidade, tivemos, primeiramente, que
conhecer os conceitos fundamentais do tema.
Um deles foi entender e identi�car as situações em que o uso dos algoritmos e da lógica de
programação é necessário e construí-los. Essa competência forma a base para qualquer
aspirante na área de desenvolvimento de sistemas e também oferece uma abordagem
estruturada e lógica para a resolução de problemas computacionais.
A utilização de pseudocódigos é igualmente valiosa, pois serve como uma linguagem
intermediária entre o pensamento lógico e a implementação prática. A capacidade de expressar
algoritmos de forma mais próxima a uma linguagem de programação facilita a transição para a
codi�cação efetiva em diversas linguagens.
Tais habilidades capacitam você a se destacar no desenvolvimento de software, contribuindo
para a criação de programas robustos e e�cientes. Além disso, fornecem uma base sólida para o
aprendizado contínuo, permitindo enfrentar desa�os mais avançados ao longo de sua jornada na
área de programação.
Em síntese, dominar a construção de algoritmos com lógica de programação e pseudocódigos é
o alicerce para se tornar um programador bem-sucedido e adaptável às demandas em constante
evolução na área de computação.
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u1enc_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
É Hora de Praticar!
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Chegou a hora, caro estudante, de colocar em prática o conhecimento adquirido nesta unidade
de ensino. Para tanto, vamos abordar um estudo de caso sobre Processo de atendimento ao
cliente com o cenário descrito a seguir.
Uma empresa de serviços deseja otimizar seu processo de atendimento ao cliente, buscando
maior e�ciência e clareza nas etapas envolvidas. A equipe identi�cou a necessidade de
representar o algoritmo desse processo de maneiras diferentes, por meio de narrativa,
�uxograma e pseudolinguagem.
O desa�o envolve várias etapas, como:
1. Compreensão do processo: narrativa (descrever o processo em linguagem natural,
garantindo que todos os envolvidos compreendam as etapas).
2. Visualização do �uxo: �uxograma (criar um �uxograma visualizando o sequenciamento e
as decisões no processode atendimento).
3. Detalhamento lógico: pseudolinguagem (representar o algoritmo de maneira mais próxima
da linguagem de programação, detalhando a lógica do processo).
Agora é a sua vez! Utilize seus conhecimentos em representação de algoritmos para criar
soluções para o estudo de caso apresentado. Siga os passos estudados nas aulas e demonstre
suas habilidades nas três formas de representação.
A seguir, apresentamos duas questões de re�exão para aprofundar sua compreensão sobre
esses temas:
1. Lógica de programação
Após ter explorado a lógica de programação, considere como essa habilidade impacta não
apenas a escrita de código, mas também a capacidade de abordar problemas complexos. 
Re�ita sobre como a lógica de programação in�uencia sua forma de pensar e resolver
desa�os no contexto computacional.
2. Pseudocódigos
Agora que você teve contato com pseudocódigos, pense em situações práticas nas quais
essa representação intermédia pode ser particularmente útil. Re�ita sobre como a criação
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
de pseudocódigos pode ser uma etapa valiosa na resolução de problemas antes da
implementação real em linguagens de programação. 
Como essa prática pode contribuir para um desenvolvimento de código mais e�ciente e
compreensível?
Dê o Play!
Clique aqui para acessar os slides do Dê o play!
Processo de atendimento ao cliente
Passo 1: narrativa do processo
Descrição do atendimento: inicialmente, é elaborada uma narrativa detalhada do processo
de atendimento ao cliente. Inicia-se com a identi�cação do cliente e sua requisição de
serviço. Em seguida, são descritas as etapas, desde a triagem até a resolução do problema
ou fornecimento do serviço solicitado. Destacam-se interações especí�cas, como a coleta
de informações e o feedback do cliente.
Passo 2: �uxograma
Visualização do �uxo: utilizando símbolos convencionais, é criado um �uxograma para
representar visualmente o sequenciamento do atendimento. São incluídas caixas para cada
etapa do processo, setas indicando a direção do �uxo e tomadas decisões com base nas
informações fornecidas pelo cliente. O �uxograma proporciona uma visão clara e lógica
das interações no processo de atendimento.
Passo 3: pseudolinguagem
Detalhamento lógico: para uma representação mais técnica, é desenvolvido o algoritmo em
pseudolinguagem. Essa abordagem mais próxima à linguagem de programação é adotada,
descrevendo as instruções lógicas envolvidas em cada etapa do atendimento. Isso inclui
condições, loops (se necessário) e ações especí�cas que a equipe deve executar.
Conclusão
A aplicação desses três métodos de representação permite uma compreensão aprofundada e
abrangente do processo de atendimento ao cliente. A narrativa fornece uma visão descritiva e
contextualizada, o �uxograma proporciona uma melhor visualização do �uxo, e a
pseudolinguagem detalha a lógica subjacente. Essas representações múltiplas são essenciais
para uma comunicação e�ciente e contribuem para a otimização contínua do processo de
atendimento ao cliente.
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u1play_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Nesta linha do tempo, apresentamos, resumidamente, os principais conceitos diretamente
relacionados à lógica de programação e que nos auxiliam na compreensão de outras temáticas
da disciplina.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura | Linha do tempo da lógica de programação. Fonte: elaborada pelo autor.
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simpli�cando algoritmos. São Paulo: LTC, 2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para computação. 2. ed. São Paulo: Cengage
Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 3. ed. São Paulo: Cengage
Learning, 2011.
,
Unidade 2
Elementos de Algoritmos
Aula 1
Estruturas de Algoritmos Fundamentais
Estruturas de algoritmos fundamentais
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante!
Nesta primeira videoaula da Unidade, apresentaremos os conceitos essenciais de algoritmos,
sua de�nição e aplicabilidade. Além disso, desenvolveremos os tópicos introdutórios de funções
e modularização. Aproveite esta aula para agregar informações relevantes ao seu aprendizado, e
assim, expandir sua compreensão e entendimento da área de algoritmos e lógica de
programação.
Estudante, esta videoaula foi preparada especialmente para você. Nela, você irá aprender
conteúdos importantes para a sua formação pro�ssional. Vamos assisti-la? 
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
https://cm-kls-content.s3.amazonaws.com/202401/ALEXANDRIA/ALGORITMOS_E_LOGICA_DE_PROGRAMACAO/PPT/u2a1_algo_log_pro.pdf
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Ponto de Partida
Olá, estudante! Seja bem-vindo à esta aula sobre estruturas de algoritmos fundamentais. Em
primeiro lugar, vamos entender o que são algoritmos e algumas de suas aplicabilidades.
Posteriormente, abordaremos suas propriedades e alguns exemplos práticos no que se refere à
sua aplicação. Traremos, também, conteúdos que introduzirão o tema funções e modularização.
Estudar algoritmos não apenas aprimorará suas habilidades de resolução de problemas, como
também proporcionará um entendimento mais profundo do funcionamento interno dos
programas e dos sistemas que moldam nosso cotidiano. Além disso, você será capaz de
compreender o quanto as funções e a modularização desempenham papéis cruciais na criação
de códigos e�cientes e organizados. Por meio das explicações e exemplos dados, �cará claro
que as funções são blocos de construção fundamentais em qualquer linguagem de programação
e que a modularização, ao dividir o código em partes menores e independentes, facilita a
compreensão e promove a reutilização e manutenção e�ciente de um software.
Diante desses pontos, como exemplo prático imagine que em um posto de combustível
movimentado, os funcionários enfrentam di�culdades para registrar as vendas de maneira
e�ciente. Para melhorar esse processo, você foi convidado a criar um sistema simples que
armazene informações essenciais sobre as transações. Os dados a serem registrados incluem o
tipo de combustível escolhido pelo cliente, a quantidade abastecida, além do preço por litro
dependendo do tipo de combustível.
Convidamos você a explorar o material da aula e a praticar os conteúdos aqui trabalhados.
Aproveite! 
Vamos Começar!
De�nição, conceito e aplicabilidade dos algoritmos
Os algoritmos, muitas vezes considerados o ponto principal da ciência da computação,
desempenham um papel determinante na resolução de problemas e na execução e�ciente de
tarefas em diversas áreas. No âmbito da programação, entender a de�nição e a aplicabilidade
dos algoritmos é essencial para qualquer desenvolvedor ou cientista de dados. Nesta aula,
exploraremos o que são algoritmos, como eles são estruturados e como são aplicados no
mundo real.
Os algoritmos são sequências ordenadas de instruções que visam realizar uma atividade
especí�ca ou solucionar um problema. Eles são como receitas detalhadas, fornecendo passos
claros para atingir um resultado desejado. A aplicabilidade dos algoritmos é vasta, abrangendo
desde a ordenação de dados até a resolução de complexos problemas matemáticos. Por
exemplo, o algoritmo Bubble Sort organiza elementos em uma lista de forma ascendente ou
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
descendente, enquanto o algoritmo de Dijkstra é utilizado para encontrar o caminho mais curto
em redes. Vale lembrar que esses exemplos são mais complexos e sua construção exige uma
maior habilidade.
Consideremos, pois, um exemplo mais

Mais conteúdos dessa disciplina