Escolar Documentos
Profissional Documentos
Cultura Documentos
00.MA - Coc Algoritmo e Linguagem de Programacao Completo
00.MA - Coc Algoritmo e Linguagem de Programacao Completo
linguagem de
programação
Prof. André Furlan
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
2
BLOCO 1: INTRODUÇÃO A ALGORITMOS
3
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.
4
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 4 – Modelagem
Monte seu programa usando o método escolhido. Você pode usar diagramas de fluxo,
pseudolinguagem.
5
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.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.
6
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.
7
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ó.
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;
8
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.
9
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.
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:
10
Asse o bolo;
11
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.
12
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.
13
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.
14
2.5 Comando de atribuição e operadores aritméticos e lógicos
15
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.
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.
16
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.
“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.
17
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”.
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:
18
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:
19
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.
20
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.
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.
21
Comando PARA
Executa o comando uma certa quantidade definida de vezes:
22
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.
23
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.
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.
24
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.
25
A seguir, veja exemplos de uso – Fazendo um bolo de chocolate ou laranja
26
27
28
Relembre agora o pseudocódigo
29
Pseudocódigo
30
31
32
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.
33
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:
Comando
SE
34
Identificadores, separadores de comando
35
Comando de atribuição, comentários e comandos de leitura e escrita
36
Operadores aritméticos, lógicos e relacionais
37
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.
38
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:
39
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:
40
6.3 Funções úteis em C
fopen
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.
41
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:
42
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:
43
44
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”
45
46
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.
47
48
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
49
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.
50
51
52
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.
53