Você está na página 1de 5

SÃO DICAS FUNDAMENTAIS PARA O DESENVOLVIMENTO DA LÓGICA PARA ALGORITMOS:

Não sou matemático, muito menos especialista em estatística, mas acredito que 7 em cada 10 pessoas apaixonadas por tecnologia, já tiveram vontade de desenvolver seu próprio software, ou melhorar um outro código em um software livre .

É pensando nisso que o Algoritmizando estréia hoje uma nova seção!

Toda terça-feira, iremos postar uma matéria ensinando esse fantástico mundo de programação. começando a partir de algoritmos, e dependendo da participação do pessoal, nos comentários, dúvidas, etc, poderemos ir bem mais longe, e quem sabe, realmente formar alguns bons programadores…

Como hoje é apenas uma introdução do que há por vim, estarei dando um breve conceito sobre o que é uma linguagem de programação.

Uma linguagem de programação é um método padronizado para expressar instruções para um computador.

Você pode programar para alcançar inúmeros objetivos, como por exemplo, desenvolver um software, para automatizar tarefas, quem sabe vende-lo e ficar rico! ou melhor ainda, já pensou em criar um jogo de computador? ficar famoso e…. rico! Você também pode programar para web, desenvolver aplicativos e… se fizer sucesso, hmm… pode ficar rico! rsrs

Sim, a área de tecnologia é um mercado em constante crescimento e com salários iniciais relativamente altos. Se você tem uma paixão em especial por computadores, por que não entender sua linguagem e se comunicar melhor com eles ^^

Na verdade, os computadores não são inteligentes, como todos pensam. Inteligente é o programador!

O computador entende apenas a linguagem binário, ou seja, 1 e 0, ligado ou desligado, tensão alta ou tensão baixa… Não tem meio termo…

Quer dizer que tenho que aprender a programar em 0 e 1?

Negativo. Hoje em dia, temos o que chamamos de compiladores e interpretadores. São eles que fazem essa tradução de nossa linguagem para linguagem de máquina.

Na linguagem interpretada, o código fonte é traduzido para linguagem de máquina no momento da interpretação (execução), e o código fica visível, enquanto na compilada, este é feito anteriormente, não sendo possível visualizar o código fonte.

Resumidamente, as linguagens de baixo nível, são aquelas que possuem contato direto com o hardware do computador, geralmente linguagens compiladas, como por exemplo C, C++, Assembly…

Enquanto as linguagens de alto nível o contato é com o software, exemplos são linguagens interpretadas como Python, PHP, JavaScript, Pascal…

Para maioria dos seres mortais, a base de tudo, está nos Algoritmos… Segundo a Wikipédia

Ok Bruno… Agora traduz!!!

O algoritmo, é uma instrução, ou uma ordem que você dará ao computador, para que ele realize determinada tarefa. Ao contrário do que a maioria das pessoas pensam, o computador não é inteligente, quem é inteligente, é o programador!

Simplificando…

Para que o computador entenda algo, é necessário que você o “ensine” passo-a-passo, como deve proceder. Como em uma receita de bolo.

Um exemplo:

Em nossa linguagem, se eu fosse criar um algoritmo explicando o que acontece quando acordo até o momento que entro no chuveiro, seria mais ou menos o seguinte:

Inicio Bruno Barbosa desperta abre os olhos senta na cama coloca o primeiro pé no chão põe o segundo fica de pé anda até a sala de estar chuta com o mindinho do pé a ponta do sofá diz algumas palavras de baixo calão devido ter machucado muito continua caminhando entra no banheiro fica nu (ui) entra em baixo do chuveiro liga o chuveiro toma banho FIM

Pode-se perceber então, que tudo é um algoritmo.

O sistema de buscas do Google, tem um algoritmo por trás dele, o msn que vocês tanto gostam, também tem um algoritmo, e assim sucessivamente.

Para aprendermos melhor sobre isto, antes de passar para qualquer tipo de linguagem de programação propriamente dita, iremos aprender a programar em uma pseudo-linguagem, conhecida como Portugol ou Português Estruturado.

O portugol, é uma pseudo-linguagem criada para facilitar o aprendizado de algoritmos e lógica de programação, ela possui suas particularidades como qualquer outra linguagem, e a partir do próximo post, iremos passar a “programar” nesta linguagem, utilizando a ajuda do software VisualG. Então não percam e nos acompanhem, que toda terça, um post novo para você aprender a programar!

Quando se trata de uma dúvida em um código já existente, feito pela própria pessoa, ajudo com grande prazer assim que posso. Entretanto, muitas vezes as mesmas pedem que eu resolva exercícios que, foram passados para a mesma fazer, com o argumento de que gostaria que eu resolvesse para que esta aprenda e possa fazer o restante.

Acontece que geralmente não é apenas uma questão que me pedem, mas cinco ou mais exercícios.

Pensando nisso, resolvi disponibilizar à vocês uma lista de 40 exercícios de Algoritmos elaborados por Flaviano O. Silva , e as respostas dos exercícios feitas por mim, no formato .alg que podem ser abertos no VisualG, para que sirva como fonte de estudos e referência para que vocês possam resolver outros exercícios do tipo. E para você que acompanhou toda série Aprenda a Programar , está lançado o desafio! Você consegue resolver as 40 questões sem dar nenhuma “espiadinha” nas respostas? Os exercícios foram elaborados para a Faculdade FAJESU , entretanto entrei em contato com o autor do mesmo, Prof. Flaviano e este autorizou a publicação da lista na Internet. A seguir, uma preview de algumas questões da lista:

  • 25. Faça um algoritmo que leia dois números e identifique se são iguais ou diferentes. Caso

eles sejam iguais imprima uma mensagem dizendo que eles são iguais. Caso sejam

diferentes, informe qual número é o maior, e uma mensagem que são diferentes.

  • 31. Escrever um algoritmo que leia três valores inteiros distintos e os escreva em ordem

crescente

  • 33. Escrever um algoritmo que leia três valores inteiros e verifique se eles podem ser os

lados de um triângulo. Se forem, informar qual o tipo de triângulo que eles formam:

equilátero, isóscele ou escaleno. Propriedade: o comprimento de cada lado de um triângulo é menor do que a soma dos comprimentos dos outros dois lados.

Os algoritmos são sequências finitas (que tem fim) e ordenada de comandos/instruções que possibilitam a resolução de algum problema. Temos dois tipos de algoritmos: os computacionais e os não computacionais. Entre os não computacionais, temos os manuais de instrução, receitas de bolo, instruções de montagens de equipamento, etc. Veja um exemplo de um algoritmo não computacional abaixo, para fazer um sanduíche de presunto:

Exemplo – Algoritmo não computacional – Preparo de um Sanduíche 1.Pegar o pão 2.Pegar a faca 3.Cortar o pão com a faca, longitudinalmente 4.Pegar o presunto 5.Colocar o presunto dentro do corte feito no pão 6.Fechar o pão

Observe que, apesar de simples e rotineiro, esse é um algoritmo. Mas, os algoritmos que nos interessam são os computacionais. É nesse momento, que iremos falar sobre o Português Estruturado (ou simplesmente Portugol). O Portugol é uma simplificação extrema do Português, limitadas a poucas palavras e estruturas que tem um significado bem definido.

O Portugol é muito utilizado em PCA (Princípio

de

Construção

de

Algoritmos)

em

cursos de

programação. Por possuir uma sintaxe simples (forma de escrita do código) é a linguagem

ideal para se aprender a programar.

Lembro da alegria quando entrei na faculdade de computação alguns bons anos atrás, bem que a alegria durou poucas semanas, até as primeiras provas de cálculos e de algoritmos, em específico as de algoritmo, pois aquelas

questões de condições, “if”, “else”, “while”, “for” e recursão simplesmente não entravam na minha cabeça, ou melhor não entrava na cabeça da maioria dos alunos da turma, eram poucos que tinha uma noção ou base de programação.

Porém, o tempo foi passando e as coisas, ou melhor as condições, foram se encaixando e agora após formado a algum tempo, vejo o quanto eram fáceis aquelas provas.

Mas enfim, lembro que na época da faculdade eu li um texto falando sobre a questão de algoritmos e como um programa de computador deve funcionar, e como lembrei desse exemplo simples, nada mais justo que postar por aqui para quem é iniciante na “arte” de programa ou da criação de algoritmos possa entender um pouco melhor e claro “clarear” as idéias, afinal tudo que é novo acaba assustando um pouco no início.

O exemplo que vou citar é um exemplo extremamente simples, mas como citei anteriormente é bem interessante para iniciantes.

E para exemplificar, vamos usar os velhos telefones públicos de ficha, então vamos imaginar que você precisa fazer uma ligação de um orelhão.

Para isso você precisa:

  • 1 – Tirar o fone do gancho;

  • 2 – Ouvir se existe sinal de linha;

  • 3 – Colocar a ficha;

  • 4 – Discar o número desejado;

  • 5 – Aguardar ser atendido;

  • 6 – Conversar com quem atender;

  • 7 – Desligar(Colocar o fone no gancho);

Acima como você pode ver que para realizar uma simples ligação partindo do pressuposto que estamos utilizando um telefone público e que obtivemos sucesso na liga, temos que percorrer esses

  • 7 passos.

Porém temos que analisar as condições desses casos.

1° Condição:

  • 1 – Tirar o fone do gancho;

  • 2 – Ouvir se existe sinal de linha;

  • 3 – Caso não tenha sinal devemos desligar(Colocar o fone no gancho);

2° Condição:

  • 1 – Tirar o fone do gancho;

  • 2 – Ouvir se existe sinal de linha;

  • 3 – Colocar a ficha;

  • 4 – Discar o número desejado;

  • 5 – Telefone ocupado, ou ninguém atendeu;

  • 7 – Desligar(Colocar o fone no gancho);

  • 8 – Retirar a ficha do orelhão visto que a mesma não foi utilizada;

Olha só que interessante as duas condições citadas acima, elas devem ser validadas caso você crie um sistema que simule um orelhão de ficha, e caso você esqueça de programar/tratar alguma condição e o usuária resolva realizar uma operação que o sistema acabe não validando o que ele irá receber como retorno são os famosos erros de memória ou então outra mensagem qualquer de erro.

Bem esse foi exemplo simples, mas espero que tenha ajudado de alguma forma aos iniciantes na arte de desenvolver sistemas.

Um algoritmo é um procedimento computacional definido que recebe um ou mais valores (entrada) e produz um ou mais valores (saída). O algoritmo é aquela fórmula matemática, aquele pedaço de código, que fica ali no meio da entrada e da saída para transformar o primeiro no segundo.

Vamos supôr por exemplo que temos a função:

Um algoritmo é um procedimento computacional definido que recebe um ou mais valores (entrada) e produz

A sua entrada é o x e a sua saída é o y (ou f(x), o valor que a função retorna).

O algoritmo aqui seria o seginte:

1.Entrada: Receber o valor X.

2.Elevar X ao quadrado e guardar o número resultante como Z. 3.Dividir Z por 3 e guardar o número resultante como Y.

4.Saída: Imprimir o valor Y.

O algoritmo, portanto, é a lógica do nosso problema matemático, ou, informático. É a seqüência de passos que eu faço na minha cabeça (ou, quando é complexo, no papel) antes de escrever, em C, a função f:

int f(int x) { int z, y; z = pow(x, 2); y = z/3; return y;}

Se formos pensar, veremos que tudo o que fazemos é um algoritmo, é um procedimento que recebe uma entrada e envia uma saída. Não só no computador, mas na vida. Quando eu falo com alguém, eu espero sua entrada (o que a pessoa fala pra mim), então penso e transformo essa entrada numa saída (a resposta que vou dar pra pessoa). E assim é com várias outras coisas. Podemos dizer também que acordar é um algoritmo, por exemplo:

1.Entrada: Meu cérebro disse que eu estou acordado!

2.Percebi que acordei, mas estou com sono. Espero um pouco.

3.Saída: Abrir os olhos. 4.Saída: Se espreguiçar. 5.Saída: Tirar a coberta. 6.Saída: Sentar na cama. 7.Saída: Sair da cama.

Podem existir vários algoritmos diferentes para resolver o mesmo problema. No caso de Acordar, cada um acorda de forma diferente, por exemplo. Foi até um exemplo meio estranho esse aí, mas outro algoritmo poderia dar outra saída, como por exemplo simplesmente abrir os olhos e cair da cama. Ou no caso acima da função matemática, poderíamos ter um algoritmo que fizesse a mesma coisa de maneira diferente também.

O algoritmo que usamos depende principalmente do tempo que ele demora pra ser executado e a memória que ele gasta no computador. Chamamos isso de custo. Quando começarmos a ver os algoritmos de ordenação de vetores (arrays), veremos que cada algoritmo faz uma coisa diferente, mas todos servem

para o mesmo propósito: ordenar o vetor. Para uma entrada pequena, um pode ser mais rápido

Para

... uma maior, outro. Portanto, o algoritmo que queremos usar (o tempo que ele vai demorar pra ser executado e a memória que ele vai gastar no computador) depende principalmente do tamanho da entrada (que chamamos de n e no exemplo da função seria lá em cima seria a variável x). Na maioria dos casos (e vai ser sempre assim aqui nos meus artigos), a entrada será o teclado (por exemplo, o usuário digita o X para a função) e a saída será a tela (por exemplo, o programa imprime o resultado da função, o Y, para a tela). Essas são a entrada e saída padrão (standard input output do C), que é usada nas olimpíadas e na maioria dos problemas que resolvemos no computador. Em resumo, portanto, um algoritmo é a lógica de um programa computacional.