![]() |
Ferramenta online LucidChart para criação de fluxogramas |
Introdução a algoritmos
Todo curso de graduação da área de TI oferece uma disciplina de Algoritmos e Lógica de Programação que é a porta de entrada do estudante na área de desenvolvimento.
Algoritmo é um conjunto mínimo de instruções ou operações agrupadas de maneira sequencial e organizada com o objetivo de realizar uma tarefa ou resolver um problema. As operações realizadas para o preparo de um macarrão instantâneo tipo Miojo poderia ser um bom exemplo de um algoritmo:
Algoritmo para preparo de um Miojo |
Nesse exemplo fica claro que você não pode alterar a ordem das instruções. Se eu colocar a água por último vou queimar a massa ao invés de cozinhá-la. No entanto, nada impede que sejam acrescentadas instruções como, por exemplo, acrescentar azeite e orégano depois de pronto. Essas são as instruções mínimas para se ter um miojo genérico finalizado. Por isso podemos chama-la de algoritmo.
Onde usamos algoritmos e fluxogramas
Na área de desenvolvimento, os algoritmos são utilizados para esboçar a solução que antecede a criação de programas e aplicativos com base em um raciocínio matemático conhecido como lógica de programação.
Podemos, portanto, definir os programas ou aplicativos como um conjunto de instruções que realizam uma tarefa através de um dispositivo computacional. Após a criação do algoritmo, o programador é capaz de escrever um código com as instruções que um programa deverá ter, em uma etapa do desenvolvimento que chamamos de codificação.
O algoritmo pode ser feito de forma escrita, descrevendo o passo a passo das operações ou através de uma representação gráfica, desenhando o processo a ser seguido. A essa forma escrita chamamos de Pseudocódigo e a forma gráfica de Fluxograma.
Linguagens de Programação: Conceito e Tipos
As instruções dos programas são codificadas ou escritas em um dialeto que chamamos de linguagem de programação que pode ou não ser parecida com a linguagem humana. Existem inúmeras linguagens de programação no mercado e são escolhidas de acordo com o tipo de tarefa a ser realizada.
No entanto, as instruções dos programas precisam ser fornecidas para a máquina que realizará a tarefa , de uma forma que o equipamento compreenda. Por isso os códigos da linguagem de programação precisam ser transformados em outro dialeto conhecido como linguagem de máquina.
Linguagem de Alto e Baixo nível
Quando uma linguagem é facilmente legível para a compreensão humana, a etapa de codificação do desenvolvimento de programas geralmente é mais rápida e dizemos que se trata de uma linguagem de alto nível. Um exemplo desse tipo de linguagem é o Python.
Basta uma linha de código em Python para se escrever Hello World |
Já quando uma linguagem de programação é capaz de intervir diretamente no equipamento, falando muito próximo da linguagem de máquina, dizemos que se trata de uma linguagem de baixo nível. Um exemplo desse tipo de linguagem é o Assembly.
O mesmo programa Hello World agora escrito em Assembly |
Linguagens de baixo nível são executadas mais rapidamente que as linguagens de alto nível porque geram programas menores, ocupam menos espaço em memória, portanto são mais interessantes para equipamentos limitados da área de sistemas embarcados. Porem são mais difíceis de aprender e a etapa de codificação do desenvolvimento geralmente é mais demorada.
Existe também linguagens de nível intermediário como o C e C++ que agregam o melhor dos dois mundos: a fácil compreensão das linguagens de alto nível e a intervenção no hardware da linguagem de baixo nível.
O mesmo Hello World agora escrito em C |
Linguagem Interpretada vs Compilada
As instruções dadas pelos programas geralmente passam por várias camadas antes de chegar aos elementos que processam a informação em um equipamento. Uma dessas camadas é o Sistema Operacional, que é o responsável por passar para o equipamento as instruções dos programas.
Às vezes um programa não é capaz de passar diretamente para o Sistema Operacional as instruções necessárias e precisa de uma camada intermediária para fazer a interpretação de suas instruções.
Quando uma linguagem cria programas com essas características, dizemos que é uma linguagem interpretada. Um exemplo desse tipo de linguagem é o Python. Já outras linguagens permitem a criação de programas executáveis diretamente pelo Sistema Operacional sem intermediários, bastando uma etapa adicional após a escrita do código que chamamos de compilação. Por isso essas linguagens são chamadas de linguagens compiladas. Exemplo: C e C++.
Paradigmas de Programação
Para resolução de problemas podemos utilizar diferentes raciocínios ou lógicas. Dependendo da lógica de programação adotada na criação de um aplicativo podemos ter diferentes padrões ou estruturas de programas. Assim temos diferentes Paradigmas de Programação.
Na maioria dos cursos de programação o estudante geralmente aprende a programar utilizando o paradigma da Programação Estruturada, onde as instruções seguem uma sequência lógica e ordenada de comandos de fácil entendimento.
Essa sequência de instruções também podem ser chamadas de rotinas e muitas vezes são subdivididas em sub-rotinas para uma melhor organização do código. Na área de Sistemas Embarcados esse paradigma de programação é muito eficiente para a resolução de problemas simples em dispositivos limitados.
No entanto, para problemas mais complexos, onde provavelmente o trabalho será dividido em equipes ou passará por manutenção ou onde se deseja soluções escalonáveis que passarão por uma expansão, é adotado o paradigma da Programação Orientada a Objetos, que não veremos por enquanto.
Em tempo: As linguagens de programação são classificadas de acordo com o paradigma de programação que utilizam, podendo ser de programação estruturada como a linguagem C ou de programação orientada a objetos como o C# ou ainda multiparadigma quando aceitam um ou mais paradigmas com o C++.
A estrutura desse curso
Para facilitar o estudo de algoritmos de programação estruturada, desenvolveu-se no Brasil na década de 80 um pseudocódigo conhecido como Portugol ou Português Estruturado, onde os termos em inglês das linguagens de programação, eram substituídos por palavras no nosso idioma para facilitar o entendimento da lógica de programação.
Algumas escolas utilizam o software VisuAlg para o ensino de algoritmos, no entanto, utilizaremos o Portugol Studio, uma vez que sua sintaxe (escrita) é muito semelhante à linguagem C que é básica para o estudante de embarcados.
Nas aulas seguintes aprofundaremos o assunto, mas seremos sucintos na parte de fluxogramas, uma vez que futuramente teremos nesse site um curso de UML, uma linguagem para modelagem de sistemas onde retomaremos o tema de forma mais abrangente.
Deixo claro que não nos estenderemos demais com muitos exemplos no Portugol. Abordaremos apenas os conceitos básicos: Variáveis, Tipos de dados, Estruturas de controle de fluxo (condicionais e laços), Vetores e Matrizes, Funções e Procedimentos, além do conceito de Biblioteca.
A ideia é deixar esses conceitos básicos claros no Portugol para futuramente poder aprofundar nos detalhes nos cursos das linguagens de programação mais utilizadas em embarcados: C, C++ e Python. Fase em que tentaremos rechear de exemplos.
Referências
MANZANO, J. A. N. G. Portugol Studio: Programação de Computadores em Português. São Paulo: Propes Vivens, 2017. 86p
NOSCHANG, LUIZ et all. Portugol Studio: Uma IDE para Iniciantes em Programação. In: XXXIV Congresso da Sociedade Brasileira de Computação - CSBC, 34º, 2014, Brasília, Anais Eletrônicos do Congresso da Sociedade Brasileira de Computação, Brasília, 2014. p. 1287 - 1296. Disponível em: <https://sol.sbc.org.br/index.php/wei/article/view/10954/10824>. Acesso em: 4 ago. 2024.
PORTUGOL WEBSTUDIO. Ajuda. Disponível em: <https://portugol.dev/> Acesso em 05 ago. 2024.
PORTUGOL WEBSTUDIO. Dúvidas e Perguntas. Disponível em: <https://portugol.dev/> Acesso em 05 ago. 2024.