Você está na página 1de 53

Algoritmo e

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

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.

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.

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

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 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.

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 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.

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.

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.

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!

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ó.

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;

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.

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:

10
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.

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.

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:

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

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.

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.

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.

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.

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.

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”.

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:

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:

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

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.

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.

21
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:

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.

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.

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.

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.

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:

Bloco de programa e comando condicional IF


Em PortuCê Em linguagem C
Bloco de
programa

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

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.

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

Você também pode gostar