Escolar Documentos
Profissional Documentos
Cultura Documentos
Publicado em 29/03/2022
Escrevendo um algoritmo
Nós já sabemos o que é um algoritmo. Ele é um texto com diversas
instruções.
Normalmente, podemos imaginar que um algoritmo será
executado por um certo
robozinho. Esse robô é o processador que
irá executar as instruções do algoritmo,
então é fundamental que só
demos a ele ordens bem básicas, que ele seja capaz de
cumprir.
Estruturas de controle
Vamos listar as estruturas de controle mais comumente utilizadas ao
escrever um
algoritmo:
Combinando estruturas
O que torna os algoritmos particularmente ricos é a possibilidade de
combinar as
diversas estruturas de controle. Por exemplo, podemos
executar um laço dentro do
conjunto de ações de uma estrutura
condicional. Mais do que isso, podemos
executar um laço dentro do
conjunto de ações de outro laço. Nesse último exemplo,
chamamos o
primeiro de laço interno e o segundo de laço externo. E assim por
diante!
Já deve dar para perceber que os algoritmos podem ficar cada vez mais
diversos e
mas ricos — e, algumas vezes, mais complexos! Cada
algoritmo pode ser mais ou
menos complicado. Isso vai depender do
problema que queremos resolver.
3 A 10 4 8 6
trocar
A 3 10 4 8 6
A 3 10 4 8 6
trocar
A 3 4 10 8 6
A 3 4 10 8 6
trocar
A 3 4 8 10 6
A 3 4 8 10 6
trocar
A 3 4 8 6 10
A 3 4 8 6 10
trocar
A 3 4 6 8 10
A 3 4 6 8 10
Desenhando um algoritmo
Ao invés de escrever um algoritmo, também podemos representá-los
utilizando
desenhos. Há diversas maneiras de desenhá-los, mas talvez a
maneira mais comum
é criar o que chamamos de “diagrama de fluxo”, ou
em inglês, “flowchart”.
tome nota do
número zero
aponte para o
primeiro item da lista
some o valor
do item apontado
ao número anotado
laço
o item
devolva o apontado está aponte para o
número anotado sim no final da não próximo item da lista
lista?
fim
Sub-rotinas
Algumas vezes, os algoritmos podem ficar mais e mais complicados.
Assim nossos
algoritmo ou diagramas de fluxo podem ficar cada vez
maiores. Vamos ver um
exemplo de como isso pode acontecer.
É claro que há algoritmos mais simples para essa tarefa, mas podemos
fazer
diversas observações do algoritmo que escrevemos acima.
Primeiro, o texto do
algoritmo ficou muito maior. Mais importante do
que isso, é muito mais difícil
entender o que está fazendo esse
algoritmo. Tente desenhar o diagrama de fluxo
correspondente.
Além disso, observamos que há dois trechos do algoritmo que são muito
parecidos e
tudo que muda é o tipo de alimento. Podemos então tentar
escrever esse trecho de
código apenas uma vez. No lugar do tipo de
alimento, utilizamos um parâmetro X
que pode ser substituído pelo
tipo de alimento desejado. Esse trecho de algoritmo é
chamado de
sub-rotina ou procedimento.
Compare esse novo algoritmo com o algoritmo anterior. Ele não ficou
muito mais
simples? É importante observar que agora utilizamos uma
instrução que antes não
era permitida, que é
SOMAR ITENS DA CATEGORIA . Esta não é uma instrução
elementar do
nosso computador original, mas utilizamos como se fosse. O que
estamos
fazendo é análogo a ensinar o nosso robozinho a realizar uma nova
atividade, de forma que não precisamos explicar de novo como fazê-la.
Dizemos que
estamos criando uma nova abstração, escondendo os
detalhes de implementação.
Tipos
Os vários dados aparecem nos mais diversos sabores ou, mais
precisamente, nos
mais diversos tipos. Os tipos mais comuns
utilizados nos computadores são os
números, que podem ter diversos
subtipos como números inteiros ou números reais,
e strings, que
representam palavras ou textos nos mais diversos alfabetos.
valor da variável
nome da variável
Como nosso objetivo é escrever um texto de tamanho fixo, mas que possa
ser
executado com listas de qualquer tamanho, precisamos de uma
maneira de nos
referir a esses elementos de maneira uniforme. Para
isso, vamos utilizar o que
chamamos de vetor. Dependendo do
contexto, eles também serão chamadoas de
listas ou arranjos
unidimensionais.
3 1 10 4 8 6
cartas
(1.1) X ← 1;
(1.2.3) X ← X + 1.
Linguagens de programação
Pensar apenas em termos de algoritmos é útil para as diversas
atividades
cotidianas, seja cozinhar, procurar um número telefônico,
agendar um compromisso,
fazer compras. Mas queremos escrever
algoritmos principalmente para utilizar um
computador. Por isso,
precisamos também entender como fazer com que o algoritmo
saia do
papel e passe a ser executado pelo computador.
LOOP: MOV A, 3
INC A
JMP LOOP
Sintaxe
Uma linguagem de programação normalmente tem uma sintaxe rígida,
que é o
conjunto de regras que determina quais combinações de símbolos
e palavras-
chaves podem ser utilizadas. Por exemplo, se em uma
linguagem a palavra-chave
para ler um número e guardá-lo na variável X
for input X, escrever read X iria
resultar em um erro de
sintaxe. Por mais que uma pessoa entenderia qual o objetivo
da
programadora ao escrever a instrução errada, um computador não
entenderia. A
razão para escolher uma palavra input em inglês é
para facilitar a leitura do
programa, mas uma palavra-chave poderia
ser qualquer sequência de símbolos.
input N ;
X := 0 ;
for Y from 1 to N do
X := X + Y
end ;
output X
input N ;
X := 0 ;
for Y to N from 1 do
X := X + Y
end ;
output X
N = int(input())
X = 0
X = X + Y
print(X)
Semântica
Além da sintaxe, uma linguagem de programação deve definir uma
semântica
inambígua, isso é, a linguagem de programação deve
definir o que significa cada
uma das frases permitidas. Se a sintaxe
não tivesse acompanhada de semântica,
então o segmento
for Y from 1 to N do
Mais do que isso, a semântica deve ser precisa e completa. Mesmo que
as palavras-
chaves tenham o significado usual em inglês, pode haver
instruções que são
ambíguas ou indefinidas. Por exemplo, se N é um
número inteiro positivo 10, então é
razoável presumir que a iteração
do for acima irá executar 10 vezes, com valores
de Y = 1, 2, …,
10. Mas se N for -314.1592, qual seria o comportamento esperado?
Talvez o corpo do laço não deveria ser executado nenhuma vez, ou será
que ele
deveria ser executado para valores 1, 0, −1, −2, …, -313 e
-314?
for Y from 1 to N do
{ corpo do laço }
end
Programas de Aplicação
Compiladores
Sistema operacional
Hardware
Do problema à execução
Desde o conhecimento do problema até a execução do programa no
computador
para obter uma solução, existe um processo que passa por
diversas etapas. Por
isso, é importante entender bem esse processo e
realizar bem cada uma das etapas,
sem tentar pular passos. Faça
sempre o seguinte:
Finalmente, pode ser que não haja erros de sintaxe e nem ocorram
erros
de tempo de execução, mas, mesmo assim, os resultados
obtidos pelo seu
programa não estejam corretos. Quando isso
acontece, dizemos que há
erros de lógica no seu programa.
Eles pode ocorrer porque você
escreveu um código-fonte que não
corresponde ao seu algoritmo, ou
porque seu algoritmo está
incorreto. Se for esse o caso, então será preciso
voltar ao passo
3.