Buscar

Algorítmo completo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 53 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 53 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 53 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmo e 
linguagem de 
programação 
Prof. André Furlan 
 
 
 
 
 
 
 
 
 
 
 
2 
 
 
SUMÁRIO 
BLOCO 1: INTRODUÇÃO A ALGORITMOS.................................................................... 3 
BLOCO 2: PSEUDOLINGUAGEM E COMANDOS PORTUCÊ........................................... 10 
BLOCO 3: COMANDOS DE REPETIÇÃO PORTUCÊ......................................................... 17 
BLOCO 4: CONSTRUÇÃO DE ALGORITMOS................................................................... 24 
BLOCO 5: LINGUAGEM C............................................................................................. 33 
BLOCO 6: LAÇOS E IMPLEMENTAÇÃO DA LINGUAGEM C............................................ 39 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3 
 
 
BLOCO 1: INTRODUÇÃO A ALGORITMOS 
1.1. Conceitos básicos de programação de computadores 
Para entendermos melhor o que é programar um computador, precisamos antes 
entender o que é um computador. Um computador é composto por uma série de 
peças cujo objetivo é processar e armazenar dados. Qualquer dispositivo que cumpra 
esse papel pode ser chamado de computador. A seguir, encontramos um diagrama 
básico das peças de um computador: 
 
 
 
 
 
 
Unidades de entrada são mouse, teclado, câmeras etc. 
Já as memórias secundárias são o que conhecemos como unidades de 
armazenamento, ou seja, o HD e o pen drive. 
A CPU é a Unidade de Processamento Central (Central Processing Unity), que é 
composta de memória cache, registradores, unidade lógico-aritmética e unidade de 
controle. 
A memória cache é uma memória intermediária entre o processador e a memória RAM 
que é usada para aumentar a velocidade de transmissão de dados entre esses dois 
dispositivos. 
 
 
 
4 
 
Os registradores são a memória interna do processador. A diferença dessa memória 
para memória RAM é que os registradores são muito mais rápidos, no entanto, sua 
capacidade de armazenamento é muito reduzida. Sem eles, o processador não 
funciona. 
Por sua vez, a unidade lógico-aritmética é a parte do processador responsável por 
fazer todas as operações matemáticas e lógicas que nada mais são do que os nossos 
programas. 
Já a unidade de controle garante que todas as partes do processador funcionem de 
forma sincronizada. 
A memória RAM é o local onde os dados são armazenados antes de serem processados 
na CPU. 
Já a memória ROM é um local no computador que contém um programa básico de 
inicialização do sistema. Essa memória não pode ser atualizada, ou seja, ela é apenas 
para leitura. 
E, finalmente, temos as unidades de saída que na maioria das vezes será nosso 
monitor ou alguma impressora conectada ao computador. 
Agora que já conhecemos a estrutura básica de um computador, podemos definir de 
forma correta o que é programá-lo: 
 
Programar um computador nada mais é do que definir uma série de passos que a 
máquina deve seguir para que um dado problema seja resolvido. Para isso, utilizamos 
o que chamaremos de linguagem de programação e lógica de programação que nos 
ajudará a definir regras claras do quê, como e quando o computador deve fazer. Ou 
seja, programar nada mais é do que definir uma “receita de bolo” que a máquina deve 
seguir. 
 
1.2 Etapas da programação de computadores 
Agora que já sabemos o que é um computador e o que é programar um computador, 
precisamos entender quais são as etapas necessárias para realizar tal tarefa. 
Quando o problema a ser resolvido não é de grande complexidade, geralmente 
podemos ir direto à programação sem a necessidade de passos intermediários. No 
 
 
 
5 
 
entanto, quando o problema fica mais complexo, é recomendado quebrar o problema 
maior em problemas menores de forma a facilitar o entendimento, a modelagem e a 
resolução do problema. 
Antes de continuarmos, devemos frisar que o método aqui apresentado é apenas um 
entre muitos outros existentes. O método apresentado foca apenas em quesitos 
básicos para quem está começando. Para problemas de grande complexidade, 
recomendamos estudar outras técnicas mais avançadas. 
 
Passo 1 – Análise – Coleta de dados 
Escreva um texto descrevendo seu problema do jeito que achar melhor. Esse texto 
pode ser dividido em tópicos, ou não, de acordo com o estilo do escritor(a). O texto 
deve descrever por completo o problema a ser resolvido. 
 
Passo 2 – Análise – Identificação dos dados 
Procure pelos verbos no seu texto, lembrando que verbo é toda palavra que indica 
algum tipo de ação. Os verbos encontrados serão, provavelmente, as funcionalidades 
necessárias para resolver o problema. Encontrados os verbos, verifique se eles têm 
relação com o problema apresentado. Se tiverem, reserve-os para a próxima etapa. 
 
Passo 3 – Análise – Interpretação dos dados 
Com os verbos em mãos, verifique quais se relacionam entre si e quais não se 
relacionam. Os que se relacionam entre si provavelmente representam uma única 
funcionalidade, e os que não se relacionam provavelmente representam eles sozinhos 
uma funcionalidade. 
 
Passo 4 – Modelagem 
Monte seu programa usando o método escolhido. Você pode usar diagramas de fluxo, 
pseudolinguagem. 
 
 
 
 
 
 
6 
 
Passo 5 – Programação 
Programe seu sistema usando linguagem de programação real. Teste sua lógica usando 
problemas cujo resultado você já saiba, verificando sempre se sua lógica gera o 
resultado esperado. Caso isso seja negativo, descubra o problema, corrija-o e teste 
novamente até que o seu programa responda de forma correta. 
 
1.3 Formas de expressão de algoritmos (fluxograma, pseudolinguagem, linguagem) 
Até agora tratamos os programas como “lógica”, no entanto, este nome não é o mais 
apropriado, já que não reflete a totalidade do que estamos fazendo. Afinal de contas, 
programar não é apenas lidar com a lógica, mas também com a questão matemática. 
Sendo assim, daqui para a frente definiremos nossos códigos como “algoritmos”, 
mas.... O que é um algoritmo? 
 
1.3.1 Algoritmo 
Um algoritmo nada mais é do que uma série de passos para realizar um certo objetivo. 
Por exemplo: caso queiramos fazer um bolo de chocolate, teremos de juntar os vários 
ingredientes de uma forma específica para, posteriormente, colocá-los em um 
recipiente específico e depois colocar tudo dentro de um forno a uma temperatura 
específica por um tempo definido para, no final, termos um bolo. 
Essa série de passos pode ser representada de várias formas, sendo que a primeira, a 
chamamos de fluxograma ou diagrama de fluxo. Um fluxograma ou diagrama de fluxo 
nada mais é do que um desenho, composto por vários símbolos, que representa a 
nossa lógica de forma visual facilitando a organização e análise do problema. 
 
1.3.2 Símbolos 
Os símbolos de um fluxograma geralmente são alguma forma geométrica com texto 
dentro. A seguir, apresentamos alguns dos principais que são usados para representar 
os algoritmos. Retomaremos esses símbolos no Bloco 4. 
 
 
 
 
 
7 
 
 
A este bloco, damos o nome de bloco de processo. Seu 
papel é descrever uma ação relativamente simples 
dentro do algoritmo, como, por exemplo, assar o bolo. 
Ações mais complexas e com mais passos serão 
representadas por outro bloco que poderemos ver mais 
à frente. 
 
 
Este bloco representa o início ou fim do algoritmo. Ele 
deve ser colocado em primeiro lugar no topo da página 
e por último na parte de baixo da página que 
representa sua lógica, indicando respectivamente o 
início e o fim do nosso algoritmo. 
 
 
Já este bloco indica entradamanual de dados, mas o 
que seria uma entrada manual? É quando é perguntado 
para o(a) usuário(a) uma informação que o sistema 
necessita para seguir em frente com o algoritmo, como, 
por exemplo, a quantidade de farinha. 
 
 
Este é um dos blocos mais importantes para algoritmos, 
pois representa uma estrutura de decisão. É com ele 
que faremos estruturas de desvio e verificação. Um 
bom exemplo é: O bolo está 
pronto? Se sim, retire-o do forno; se não continue 
assando. 
 
 
Usamos este bloco quando queremos representar o 
que chamamos de sub-rotinas. Mas o que seria uma 
sub-rotina? Nada mais é do que 
uma série de comandos que realizam um certo 
algoritmo, ou seja, este bloco representa um algoritmo 
inteiro! 
 
 
 
8 
 
 
Apesar de pouco usado, talvez seja necessário usar 
este bloco. Ele representa uma origem ou destino de 
dados, como, por exemplo, se você está com dúvida na 
receita do bolo e precisa de alguma informação 
da sua avó. 
 
 
 
O papel deste bloco é simplesmente exibir ao(à) 
usuário(a) do sistema os resultados finais ou 
intermediários do algoritmo. 
Neste caso, o resultado final do nosso algoritmo é o 
próprio bolo. 
 
 
 
1.3.3 Pseudocódigo 
Pseudocódigo nada mais é do que uma forma de representar a lógica do algoritmo 
usando palavras do idioma nativo. O pseudocódigo é muito útil na hora de apresentar 
um algoritmo sem vinculá-lo a uma linguagem de programação específica tornando, 
assim, a lógica aplicável a quaisquer tecnologias de programação. 
A seguir, há uma tabela com a correspondência entre os blocos de fluxograma e o 
PortuCê, pseudolinguagem adotada neste Elemento Textual. Retomaremos essa tabela 
no Bloco 2: 
 
 
Asse o bolo; 
 
 
 
 
 
 
 
9 
 
 
 
 
 
 
 
 
 
 
 
 
 
Entrevista 
Muitos podem se perguntar: “Para que estudar algortimos?”. Com o objetivo de 
responder a essa pergunta, neste bloco, tivemos um bate-papo com a Profa. Debora 
de Camargo Cavalheiro, do Departamento de Engenharia Civil da Universidade Santo 
Amaro (UNISA) a fim de elucidarmos as variadas aplicações de algoritmos para facilitar 
a execução de diversas atividades. Confira a entrevista e descubra esse novo universo. 
 
Referências 
AGUILAR, L. J. Fundamentos de programação: algoritmos, estruturas de dados e 
objetos. 3. ed. Porto Alegre: AMGH, 2011. 
AGUILAR, L. J. Programação em C++: algoritmos, estruturas de dados e objetos. 2. ed. 
Porto Alegre: AMGH, 2011. 
ALVES, W. P. Linguagem e lógica de programação. 1. ed. São Paulo: Érica, 2014. 
ASCENCIO, A. F. G.; VENERUCHI, E. A. Fundamentos da programação de 
computadores. São Paulo: Prentice Hall, 2007. 
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; STEIN, C. Algoritmos: teoria e prática. 
2. ed. Rio de Janeiro: Campus, 2002. 
DASGUPTA, S; PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos. Porto Alegre: AMGH, 
2010. 
DOBRUSHKIN, V. A. Métodos para análise de algoritmos. Rio de Janeiro: LTC, 2012. 
 
 
 
10 
 
MANZANO, J. A. M. G.; OLIVEIRA, J. F. Algoritmos: lógica para desenvolvimento de 
programas de computador. 22. ed. São Paulo: Érica, 2009. 
PEREIRA, S. L. Linguagem C. São Paulo: Érica, 2001. 
MANZANO, J. A. N. G. Algoritmos: lógica para desenvolvimento de programação de 
computadores. 28. ed. São Paulo: Érica, 2016. 
SZWARCFITER, J.L; MARKENZON, L. Estruturas de dados e seus algoritmos. 3. ed. Rio 
de Janeiro: LTC, 2015. 
SOFFNER, R. Algoritmos e programação em linguagem C. 1 ed. São Paulo: Saraiva, 
2013. 
 
 
BLOCO 2: PSEUDOLINGUAGEM E COMANDOS PORTUCÊ 
 
2.1 Pseudocódigo 
Como já mencionamos no bloco anterior, pseudocódigo nada mais é do que uma forma 
de representar a lógica do algoritmo usando palavras do idioma nativo. O 
pseudocódigo é muito útil na hora de apresentar um algoritmo sem vinculá-lo a uma 
linguagem de programação específica tornando, assim, a lógica aplicável a quaisquer 
tecnologias de programação. 
A seguir, retormamos uma tabela com a correspondência entre os blocos de 
fluxograma e o PortuCê, pseudolinguagem adotada neste Elemento Textual: 
 
 
 
 
 
 
 
 
 
 
11 
 
 
Asse o bolo; 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2.2 Identificadores, tipos básicos e declaração de variáveis 
O que é um identificador? Nada mais é do que uma palavra que vai identificar uma 
região específica da memória do computador, ou seja, em vez de usarmos números 
complicados para acessar uma certa posição da memória do computador, 
identificamos essa posição usando uma palavra que seja facilmente inteligível. A essa 
palavra, damos o nome de variável. 
Note no trecho de código a seguir as palavras destacadas em negrito. Essas palavras 
são os nossos identificadores, ou, como usaremos de forma mais frequente, nossas 
variáveis. 
 
 
 
12 
 
 
Perceba que é nesse momento que estamos declarando as variáveis, e que, quando as 
declaramos, devemos obrigatoriamente antes delas definir o seu tipo. Nesse caso, 
inteiro para a variável opção e real para a variável bolo. 
Em cinza, temos escrito um tipo. O tipo serve para definir que espécie de informação 
aquela variável carregará. Esses tipos, dentro do nosso pseudocódigo, poderão ser os 
seguintes: 
● real: que nada mais é do que um número inteiro ou um número com casas 
decimais; 
● inteiro: que é apenas um número sem casas decimais; 
● carácter: que pode conter texto. 
 
Muito cuidado na hora de definir um tipo de variável, pois, caso você atribua um valor 
errado a ela, pode ter problemas com seu programa. Não se pode, por exemplo, 
atribuir um texto a uma variável do tipo inteiro ou real. 
 
2.3 Blocos de programa 
Um bloco de programa nada mais é do que uma forma de agrupar algumas 
funcionalidades para que elas sejam executadas, ou não, dependendo do contexto. 
Um bloco de programa é iniciado pelo símbolo “{“ e finalizado pelo símbolo “}”. 
Perceba que um bloco de programa pode ter dentro outros blocos. A isso, damos o 
nome de sub-bloco. O trecho a seguir exemplifica melhor: 
 
 
 
13 
 
 
 
 
Perceba que o bloco principal do nosso programa (destacado em laranja) é aquele que 
envolve todos os outros elementos do nosso código. Em seguida, podemos notar um 
sub-bloco que delimita o que deve ser feito quando o valor da variável opção for igual 
a 1 (destacado em vermelho). Por fim, percebemos outro sub-bloco que delimita o que 
deve ser feito caso a variável não seja igual a 1. 
Ou seja, blocos podem definir tanto funções, como no caso da função principal que 
vimos anteriormente, quanto blocos de execução, no caso da comparação. 
 
 
 
 
 
 
 
 
14 
 
2.4 Separador de comando 
Considerando o código a seguir: 
 
Perceba que, ao final de cada uma das linhas, temos o símbolo “;” (ponto e vírgula). 
Esse símbolo informa ao programa que terminamos de chamar um comando. Esse 
símbolo é essencial, já que seu esquecimento pode causar erros no programa de forma 
que ele não seja sequer compilado. 
Uma coisa importante de se notar também é que blocos de código não são finalizados 
com ponto e vírgula, pois, como o próprio nome já diz, ponto e vírgula é um separador 
de comandos e não de blocos. 
 
 
 
 
 
 
 
 
15 
 
2.5 Comando de atribuição e operadores aritméticos e lógicos 
 
2.5.1 Comando de atribuição 
O comando de atribuição tem como utilidade atribuir um valor a uma variável, ou seja, 
armazenar um valor numa posição da memória vinculada a um identificador. O 
comando de atribuição pode ser feito a qualquer momento no código.A seguir, vemos 
atribuição do valor 0 a variável opção e a atribuição do valor 10 a variável bolo. O 
símbolo usado para fazer a atribuição é o símbolo “=” (igual). 
 
2.5.2 Operadores aritméticos 
Operadores aritméticos são símbolos usados para fazer operações matemáticas tais 
como: multiplicação, divisão, soma, subtração e resto da divisão. A seguir, estão 
listados os seus respectivos símbolos: 
 
 
2.5.3 Operadores lógicos 
Os operadores lógicos são usados principalmente dentro de comparações, pois, 
juntamente com os operadores relacionais, nos ajudam a fazer testes com os nossos 
dados. Os operadores lógicos são os seguintes: 
 
A seguir, trechos de códigos com exemplos. 
 
 
 
16 
 
 
Nesse primeiro exemplo, a variável opção deve ser maior que 1 e menor que 5. Caso 
contrário, o comando dentro do bloco não poderá ser executado. 
 
 
Nesse segundo exemplo, a variável opção deve ter pelo menos um dos valores 
indicados, ou seja, ela deve ser igual a 20 ou igual a 30 para que o bloco seja 
executado. 
 
Nesse terceiro exemplo, perceba o sinal de exclamação na frente do sinal de igual, ou 
seja, o valor da variável opção deve ser diferente de 80 para que o bloco de código 
correspondente seja executado. 
 
Referências 
AGUILAR, L. J. Fundamentos de programação: algoritmos, estruturas de dados e 
objetos. 3. ed. Porto Alegre: AMGH, 2011. 
AGUILAR, L. J. Programação em C++: algoritmos, estruturas de dados e objetos. 2. ed. 
Porto Alegre: AMGH, 2011. 
ALVES, W. P. Linguagem e lógica de programação. 1. ed. São Paulo: Érica, 2014. 
ASCENCIO, A. F. G.; VENERUCHI, E. A. Fundamentos da programação de 
computadores. São Paulo: Prentice Hall, 2007. 
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; STEIN, C. Algoritmos: teoria e prática. 
2. ed. Rio de Janeiro: Campus, 2002. 
 
 
 
17 
 
DASGUPTA, S; PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos. Porto Alegre: AMGH, 
2010. 
DOBRUSHKIN, V. A. Métodos para análise de algoritmos. Rio de Janeiro: LTC, 2012. 
MANZANO, J. A. M. G.; OLIVEIRA, J. F. Algoritmos: lógica para desenvolvimento de 
programas de computador. 22. ed. São Paulo: Érica, 2009. 
PEREIRA, S. L. Linguagem C. São Paulo: Érica, 2001. 
MANZANO, J. A. N. G. Algoritmos: lógica para desenvolvimento de programação de 
computadores. 28. ed. São Paulo: Érica, 2016. 
SZWARCFITER, J.L; MARKENZON, L. Estruturas de dados e seus algoritmos. 3. ed. Rio 
de Janeiro: LTC, 2015. 
SOFFNER, R. Algoritmos e programação em linguagem C. 1 ed. São Paulo: Saraiva, 
2013. 
BLOCO 3: COMANDOS DE REPETIÇÃO PORTUCÊ 
 
3.1 Comando condicional SE e operadores relacionais 
O comando SE é usado para fazer verificações e eventuais desvios de execução dentro 
do código, ou seja, dada uma certa condição, deve-se fazer uma coisa, caso contrário, 
deve-se fazer outra. 
Em nossas vidas cotidianas, usamos o tempo todo o comando condicional SE, por 
exemplo: 
 
“Se você comer, irá crescer” → Aqui vemos que a condição verificada é se essa pessoa 
come ou não, e que, caso esta condição seja satisfeita, a pessoa irá crescer. 
 
“Se o ônibus não passar logo, irei chegar atrasado (a)” → Percebemos aqui que, caso o 
ônibus não passe em breve, a pessoa chegará atrasada. 
 
 
 
 
18 
 
O comando SE não precisa ter apenas uma ação para os casos em que a verificação da 
condição seja verdadeira. Caso a verificação da condição seja falsa, é aí que entra o 
SENÃO. 
 
“Se você tomar o remédio, irá melhorar, senão irá morrer!” → Podemos perceber agora 
que SE a pessoa tomar o remédio, então ela irá melhorar, SENÃO ela irá morrer. 
 
Agora que você já entendeu para que serve o comando SE, vamos mostrar como 
representá-lo em pseudolinguagem a partir da frase a seguir: 
 
“Se a altura for maior que 2, então multiplique-a por 1,5, senão multiplique-a por 3”. 
 
O código resultante será o seguinte: 
 
Perceba que em vermelho temos o comando SE, e que, dentro dos parênteses desse 
comando, temos a condição de que a altura tem que ser maior do que 2. Perceba 
também que logo após o fim do bloco do comando do SE, temos o SENÃO. 
Note que, para cada situação, teremos que fazer um conjunto de instruções diferente: 
caso a altura seja maior do que 2, deveremos multiplicar a altura por 1,5, senão 
teremos que multiplicar a altura por 3. 
O comando SE pode ser usado sozinho ou em conjunto com o SENÃO quando 
queremos fazer alguma coisa no caso de a condição indicada não ser satisfeita. 
O comando SE pode ser usado em conjunto com vários operadores relacionais. Veja os 
exemplos a seguir: 
 
 
 
 
 
 
19 
 
Aqui a condição apenas será satisfeita caso a altura seja maior do que 2: 
 
 
Aqui a condição será satisfeita caso a altura seja maior do que 2 ou igual a 2: 
 
Aqui a condição apenas será satisfeita caso a altura seja menor do que 2: 
 
Aqui a condição será satisfeita caso a altura seja menor do que 2 ou igual a 2: 
 
Aqui a condição será satisfeita se a altura for exatamente igual a 2: 
 
 
 
Aqui a condição será satisfeita se a altura for diferente de 2: 
 
 
3.2 Estruturas de repetição 
Algumas vezes, precisamos repetir um comando até que alguma condição seja 
satisfeita. Outras vezes, precisamos repetir um comando uma certa quantidade de 
vezes e, em outras, precisamos executar o comando uma vez e verificar se é necessário 
 
 
 
20 
 
executá-lo novamente. Para isso, existem as estruturas de repetição, mais conhecidas 
como laços. 
Os comandos de repetição não foram representados até agora nos fluxogramas. Eles 
até têm um símbolo que os representa, no entanto, tais símbolos não são comumente 
usados. Para representarmos estruturas de repetição em fluxograma, representamos 
da seguinte forma: 
 
Note que, após o início do algoritmo, é pedido ao usuário que informe uma certa 
quantidade que é guardada na variável de mesmo nome. Em seguida, temos um bloco 
SE que verifica se a quantidade é menor do que zero, ou seja, negativa. Se o valor da 
quantidade for negativo, então a seta do SIM leva ao bloco que pergunta a 
quantidade, ou seja, este comando será repetido enquanto a quantidade for menor do 
que zero. Caso a quantidade seja maior ou igual a zero, a seta do NÃO será seguida e o 
algoritmo seguirá em frente. 
 
 
 
21 
 
Os laços nada mais são do que uma forma de repetir comandos de uma forma 
inteligente e elegante dentro do nosso código. A seguir, temos os tipos de laços 
disponíveis: 
 
Comando ENQUANTO 
Repete um comando enquanto alguma condição for verdadeira: 
 
 
Nesse caso, verificamos que temos uma variável cujo valor inicial é zero, e que 
enquanto o valor dessa variável for menor ou igual 100, se deve executar o comando 
escreva para em seguida adicionar 1 ao valor atual dessa variável. 
 
Comando FAÇA ENQUANTO 
Executa um comando uma vez para depois verificar se deve executá-lo novamente: 
 
 
Nesse caso, verificamos que temos uma variável cujo valor inicial é zero, e que já de 
primeira escrevemos a mensagem “Olá” na tela para, em seguida, adicionar 1 ao valor 
atual da variável. No entanto, verificamos se devemos continuar apenas depois da 
primeira vez em que as instruções foram executadas. 
 
 
 
 
22 
 
Comando PARA 
Executa o comando uma certa quantidade definida de vezes: 
 
O comando PARA é um pouco mais complicado de se escrever. Uma de suas principais 
diferenças é que dentro dele podemos definir claramente a quantidade de vezes que 
queremos fazer alguma coisa. O comando PARA também é muito usado para gerarmos 
sequências numéricas, pois, se você notar, definimos a variável que serámodificada 
dentro dele mesmo. 
Para entender um pouco melhor, perceba que a parte destacada em verde declara a 
variável que vamos usar e atribui um valor inicial a ela. A parte destacada em laranja é 
a condição para que o laço continue sendo executado. E a parte em vermelho é o que 
acontecerá com a variável, caso a condição seja verdadeira. Logicamente, tudo que 
está dentro do bloco definido para o comando PARA também será executado caso a 
condição seja verdadeira. 
A parte verde é executada apenas uma vez, a parte em laranja é executada todas as 
vezes, e a parte em vermelho é executada apenas a partir da segunda vez que o laço 
é executado. 
 
Comandos de entrada e saída 
Os comandos de entrada e saída são usados para interagir com o usuário. Algumas 
vezes, precisamos perguntar alguma coisa ao usuário como: sua data de nascimento, 
sua idade, sua altura, tipo sanguíneo etc. Para isso, usamos os comandos de entrada. 
Mais frequente ainda é a necessidade de informar dados ao usuário. Nesse caso, 
usamos os comandos de saída. A seguir, vai um exemplo de cada um deles: 
 
 
 
23 
 
 
Vemos aqui uma variável inteira sendo declarada sem nenhum valor inicial atribuído, 
logo em seguida usamos o comando LEIA que vai solicitar ao usuário que digite um 
valor seguido da tecla Enter. Após o usuário digitar o valor e teclar Enter, esse valor 
será guardado na variável que foi colocada dentro dos parênteses do comando LEIA. 
Percebemos que, em seguida, o comando ESCREVA é usado para exibir a mensagem 
“Olá usuário”. Em seguida, o mesmo comando também é usado juntamente com uma 
concatenação de uma sequência de caracteres com o valor da altura para mostrar uma 
mensagem dizendo ao usuário que a sua altura é a altura informada no comando LEIA. 
 
Referências 
AGUILAR, L. J. Fundamentos de programação: algoritmos, estruturas de dados e 
objetos. 3. ed. Porto Alegre: AMGH, 2011. 
AGUILAR, L. J. Programação em C++: algoritmos, estruturas de dados e objetos. 2. ed. 
Porto Alegre: AMGH, 2011. 
ALVES, W. P. Linguagem e lógica de programação. 1. ed. São Paulo: Érica, 2014. 
ASCENCIO, A. F. G.; VENERUCHI, E. A. Fundamentos da programação de 
computadores. São Paulo: Prentice Hall, 2007. 
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; STEIN, C. Algoritmos: teoria e prática. 
2. ed. Rio de Janeiro: Campus, 2002. 
DASGUPTA, S; PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos. Porto Alegre: AMGH, 
2010. 
DOBRUSHKIN, V. A. Métodos para análise de algoritmos. Rio de Janeiro: LTC, 2012. 
MANZANO, J. A. M. G.; OLIVEIRA, J. F. Algoritmos: lógica para desenvolvimento de 
programas de computador. 22. ed. São Paulo: Érica, 2009. 
 
 
 
24 
 
PEREIRA, S. L. Linguagem C. São Paulo: Érica, 2001. 
MANZANO, J. A. N. G. Algoritmos: lógica para desenvolvimento de programação de 
computadores. 28. ed. São Paulo: Érica, 2016. 
SZWARCFITER, J.L; MARKENZON, L. Estruturas de dados e seus algoritmos. 3. ed. Rio 
de Janeiro: LTC, 2015. 
SOFFNER, R. Algoritmos e programação em linguagem C. 1 ed. São Paulo: Saraiva, 
2013. 
BLOCO 4. CONSTRUÇÃO DE ALGORITMOS 
4.1 Fluxograma: formas de expressão de algoritmos 
Retomemos os símbolos: 
 
A este bloco, damos o nome de bloco de processo. Seu 
papel é descrever uma ação relativamente simples 
dentro do algoritmo, como, por exemplo, assar o bolo. 
Ações mais complexas e com mais passos serão 
representadas por outro bloco que poderemos ver mais 
à frente. 
 
 
Este bloco representa o início ou fim do algoritmo. Ele 
deve ser colocado em primeiro lugar no topo da página 
e por último na parte de baixo da página que 
representa sua lógica, indicando respectivamente o 
início e o fim do nosso algoritmo. 
 
 
Já este bloco indica entrada manual de dados, mas o 
que seria uma entrada manual? É quando é perguntado 
para o(a) usuário(a) uma informação que o sistema 
necessita para seguir em frente com o algoritmo, como, 
por exemplo, a quantidade de farinha. 
 
 
 
 
25 
 
 
Este é um dos blocos mais importantes para algoritmos, 
pois representa uma estrutura de decisão. É com ele 
que faremos estruturas de desvio e verificação. Um 
bom exemplo é: O bolo está 
pronto? Se sim, retire-o do forno; se não continue 
assando. 
 
 
Usamos este bloco quando queremos representar o 
que chamamos de sub-rotinas. Mas o que seria uma 
sub-rotina? Nada mais é do que 
uma série de comandos que realizam um certo 
algoritmo, ou seja, este bloco representa um algoritmo 
inteiro! 
 
 
Apesar de pouco usado, talvez seja necessário usar 
este bloco. Ele representa uma origem ou destino de 
dados, como, por exemplo, se você está com dúvida na 
receita do bolo e precisa de alguma informação 
da sua avó. 
 
 
 
O papel deste bloco é simplesmente exibir ao(à) 
usuário(a) do sistema os resultados finais ou 
intermediários do algoritmo. 
Neste caso, o resultado final do nosso algoritmo é o 
próprio bolo. 
 
 
 
 
 
 
 
 
 
 
26 
 
A seguir, veja exemplos de uso – Fazendo um bolo de chocolate ou laranja 
 
 
 
 
 
 
 
 
 
27 
 
 
 
 
 
28 
 
 
 
 
 
29 
 
Relembre agora o pseudocódigo 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30 
 
 
 
 
 
Pseudocódigo 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33 
 
 
 
Referências 
AGUILAR, L. J. Fundamentos de programação: algoritmos, estruturas de dados e 
objetos. 3. ed. Porto Alegre: AMGH, 2011. 
AGUILAR, L. J. Programação em C++: algoritmos, estruturas de dados e objetos. 2. ed. 
Porto Alegre: AMGH, 2011. 
ALVES, W. P. Linguagem e lógica de programação. 1. ed. São Paulo: Érica, 2014. 
ASCENCIO, A. F. G.; VENERUCHI, E. A. Fundamentos da programação de 
computadores. São Paulo: Prentice Hall, 2007. 
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; STEIN, C. Algoritmos: teoria e prática. 
2. ed. Rio de Janeiro: Campus, 2002. 
DASGUPTA, S; PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos. Porto Alegre: AMGH, 
2010. 
DOBRUSHKIN, V. A. Métodos para análise de algoritmos. Rio de Janeiro: LTC, 2012. 
MANZANO, J. A. M. G.; OLIVEIRA, J. F. Algoritmos: lógica para desenvolvimento de 
programas de computador. 22. ed. São Paulo: Érica, 2009. 
PEREIRA, S. L. Linguagem C. São Paulo: Érica, 2001. 
MANZANO, J. A. N. G. Algoritmos: lógica para desenvolvimento de programação de 
computadores. 28. ed. São Paulo: Érica, 2016. 
SZWARCFITER, J.L; MARKENZON, L. Estruturas de dados e seus algoritmos. 3. ed. Rio 
de Janeiro: LTC, 2015. 
SOFFNER, R. Algoritmos e programação em linguagem C. 1 ed. São Paulo: Saraiva, 
2013. 
BLOCO 5: Linguagem C 
Chegou o momento de programarmos usando uma linguagem real. Até aqui, usamos 
uma linguagem de programação imaginária (PortuCê) que nos permitiu treinar nossa 
lógica e entender as estruturas básicas da maioria das linguagens de programação. 
 
 
 
34 
 
Entenda que, após esta parte, você poderá programar na maioria das linguagens de 
programação existentes, pois elas compartilham todas as estruturas que já vimos 
anteriormente. Vamos começar comparando as estruturas do PortuCê com a 
linguagem C: 
 
Bloco de programa e comando condicional IF 
Em PortuCê Em linguagem C 
Bloco de 
programa 
 
Comando 
SE35 
 
Identificadores, separadores de comando 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36 
 
 
Comando de atribuição, comentários e comandos de leitura e escrita 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37 
 
 
 
Operadores aritméticos, lógicos e relacionais 
 
 
 
 
 
 
 
 
38 
 
Referências 
AGUILAR, L. J. Fundamentos de programação: algoritmos, estruturas de dados e 
objetos. 3. ed. Porto Alegre: AMGH, 2011. 
AGUILAR, L. J. Programação em C++: algoritmos, estruturas de dados e objetos. 2. ed. 
Porto Alegre: AMGH, 2011. 
ALVES, W. P. Linguagem e lógica de programação. 1. ed. São Paulo: Érica, 2014. 
ASCENCIO, A. F. G.; VENERUCHI, E. A. Fundamentos da programação de 
computadores. São Paulo: Prentice Hall, 2007. 
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; STEIN, C. Algoritmos: teoria e prática. 
2. ed. Rio de Janeiro: Campus, 2002. 
DASGUPTA, S; PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos. Porto Alegre: AMGH, 
2010. 
DOBRUSHKIN, V. A. Métodos para análise de algoritmos. Rio de Janeiro: LTC, 2012. 
MANZANO, J. A. M. G.; OLIVEIRA, J. F. Algoritmos: lógica para desenvolvimento de 
programas de computador. 22. ed. São Paulo: Érica, 2009. 
PEREIRA, S. L. Linguagem C. São Paulo: Érica, 2001. 
MANZANO, J. A. N. G. Algoritmos: lógica para desenvolvimento de programação de 
computadores. 28. ed. São Paulo: Érica, 2016. 
SZWARCFITER, J.L; MARKENZON, L. Estruturas de dados e seus algoritmos. 3. ed. Rio 
de Janeiro: LTC, 2015. 
SOFFNER, R. Algoritmos e programação em linguagem C. 1 ed. São Paulo: Saraiva, 
2013. 
 
 
 
 
 
 
 
 
 
 
 
 
39 
 
BLOCO 6: LAÇOS E IMPLEMENTAÇÃO DA LINGUAGEM C 
6.1 Switch 
Esse comando é usado geralmente quando se tem muitos comandos IF e precisamos 
de uma forma mais elegante de escrever. A forma de usá-lo é a seguinte: 
 
A minhaVariavel pode ser qualquer variável. É ela que será comparada com os valores 
em laranja. Esses valores podem ser 1, 2, 3, como no exemplo ou quaisquer outros. 
 
6.2 Laços 
Laços são usados para realizar um ou vários comandos repetidas vezes sem que para 
isso seja necessário escrever o comando várias vezes. Os laços disponíveis na 
linguagem C são os seguintes: 
 
For 
Usado quando é necessário gerar sequências numéricas crescentes ou decrescentes. 
Corresponde ao comando PARA do PortuCê. A forma de usá-lo é a seguinte: 
 
 
 
 
40 
 
 
Tanto na sequência crescente quanto na decrescente temos três partes básicas no 
laço: a parte laranja que cria uma variável e atribui um valor inicial a ela. 
A parte vermelha que verifica se o laço deve continuar ou não. 
A parte em verde que faz a sequência aumentar ou diminuir. 
 
While 
Usado quando é necessário executar um ou mais comandos enquanto uma condição 
for verdadeira. Corresponde ao comando ENQUANTO do PortuCê. A forma de usá-lo é 
a seguinte: 
 
A parte em verde corresponde a uma condição que deve ser verdadeira para que o 
laço continue. 
 
Do While 
Usado quando é necessário executar um ou mais comandos, para em seguida, verificar 
se devem ser repetidos caso uma condição seja verdadeira. Corresponde ao comando 
FAÇA ENQUANTO do PortuCê. A forma de usá-lo é a seguinte: 
 
 
 
 
41 
 
 
 
 
 
6.3 Funções úteis em C 
 
 
fopen 
Usada para gravar dados em arquivos. A forma de usá-la é: 
 
 
Funções matemáticas 
Todas as funções matemáticas a seguir necessitam que a biblioteca math.h seja 
incluída no programa. Uma biblioteca é uma coleção de funções pré-programadas 
prontas para usar. 
 
 
 
 
42 
 
 
Exemplos 
Para facilitar a sua prática e relembrar alguns conceitos a mais, faremos um pequeno 
exemplo de programa com sua representação em diagrama de fluxo, pseudocódigo e 
em linguagem C: 
O exemplo em questão é o da confecção de um bolo de chocolate ou de um bolo de 
laranja. Para fazermos tais bolos são necessários alguns ingredientes e algumas 
decisões que devem ser tomadas. Neste exemplo, você perceberá que usamos o 
conceito de função, inclusive no fluxograma para modularizar o nosso código. 
Modularizar nada mais é do que separar a nossa lógica em blocos menores. Dessa 
forma, garantimos a legibilidade do algoritmo e a facilidade de manutenção do nosso 
programa. Sem mais delongas, vamos ao fluxograma: 
 
 
 
 
 
 
 
 
43 
 
Fluxograma 
 
Perceba que nesse primeiro diagrama de fluxo temos a chamada de duas funções: 
“bolo de chocolate” e “bolo de laranja”. E essas duas funções serão mais detalhadas 
nos fluxogramas a seguir: 
 
 
 
 
 
 
44 
 
 
 
 
 
45 
 
Já nesse fluxograma temos uma fonte de dados representada pelo "armário". Um 
armário pode ser um banco de dados, um arquivo externo ou até mesmo (para 
efeito de exemplo) valores digitados no próprio código do programa. Perceba 
também que, na parte em que se pergunta se o bolo está assado, na verdade temos 
um laço que depois será traduzido para o comando enquanto do PortuCê, ou seja, essa 
parte será traduzida para: “enquanto o bolo não estiver assado, continue assando” 
 
 
 
 
46 
 
 
 
 
 
47 
 
Vale para o fluxograma sobre bolo de laranja o mesmo comentário do anterior. 
 
Pseudocódigo 
Agora devemos traduzir pedaço a pedaço do nosso fluxograma para pseudolinguagem 
de programação PortuCê. Tentamos reproduzir o mais fielmente possível a lógica do 
fluxograma. Ao ler o pseudocódigo, provavelmente você perceberá que quando o valor 
da variável massa for maior do que 3 ou 2,5 significará que o bolo está pronto. Esse foi 
apenas um valor escolhido a esmo para esse significado. Qualquer outro valor 
escolhido poderia ser válido, ou seja, geralmente fica a cargo do programador(a) 
definir o que cada coisa significa dentro de um programa. Sendo assim, sinta-se livre 
nos programas que você vai confeccionar para definir o que cada valor significa. 
 
 
 
 
 
 
 
 
48 
 
 
 
 
 
 
 
 
49 
 
 
 
 
6.4 Código em C 
Considerando que o PortuCê é uma pseudolinguagem de programação inspirada na 
linguagem C, o que devemos fazer agora é quase que uma tradução do português para 
 
 
 
50 
 
o inglês. É claro que a linguagem C tem muito mais tipos de variáveis disponíveis do 
que o PortuCê. Por isso, deveremos escolher com cuidado quais os tipos de nossas 
variáveis e, feito isso, deveremos testar o nosso programa de forma a verificar se ele 
funciona como o esperado. 
 
 
 
 
 
 
 
 
 
 
51 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52 
 
 
 
 
 
 
 
 
 
 
 
 
 
53 
 
 
Referências 
AGUILAR, L. J. Fundamentos de programação: algoritmos, estruturas de dados e 
objetos. 3. ed. Porto Alegre: AMGH, 2011. 
AGUILAR, L. J. Programação em C++: algoritmos, estruturas de dados e objetos. 2. ed. 
Porto Alegre: AMGH, 2011. 
ALVES, W. P. Linguagem e lógica de programação. 1. ed. São Paulo: Érica, 2014. 
ASCENCIO, A. F. G.; VENERUCHI, E. A. Fundamentos da programação de 
computadores. São Paulo: Prentice Hall, 2007. 
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; STEIN, C. Algoritmos: teoria e prática. 
2. ed. Rio de Janeiro: Campus, 2002. 
DASGUPTA, S; PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos. Porto Alegre: AMGH, 
2010. 
DOBRUSHKIN, V. A. Métodos para análise de algoritmos. Rio de Janeiro: LTC, 2012. 
MANZANO,J. A. M. G.; OLIVEIRA, J. F. Algoritmos: lógica para desenvolvimento de 
programas de computador. 22. ed. São Paulo: Érica, 2009. 
PEREIRA, S. L. Linguagem C. São Paulo: Érica, 2001. 
MANZANO, J. A. N. G. Algoritmos: lógica para desenvolvimento de programação de 
computadores. 28. ed. São Paulo: Érica, 2016. 
SZWARCFITER, J.L; MARKENZON, L. Estruturas de dados e seus algoritmos. 3. ed. Rio 
de Janeiro: LTC, 2015. 
SOFFNER, R. Algoritmos e programação em linguagem C. 1 ed. São Paulo: Saraiva, 
2013.

Continue navegando