Você está na página 1de 38

Entenda o que é Algoritmo e qual

o papel dele na sua vida


Já parou para pensar em como seu feed de notícias do Facebook é formado? Ou em
como a Netflix sugere este ou aquele filme para você assistir? Isto tudo parte do
algoritmo!
Guardar
8
Partilhar

Um algoritmo é um conjunto finito de diretrizes que descrevem como


executar uma tarefa. Simples assim!

Isso significa que até mesmo algo tão inócuo quanto uma receita ou uma
lista de direções para a casa de um amigo pode ser entendido como um
algoritmo.

As coisas são um pouco mais complicadas no contexto da ciência da


computação, onde o termo geralmente aparece com muita frequência, mas
apenas levemente.

Em seu livro The Master Algorithm, Pedro Domingos oferece uma


definição magistralmente simples: “Um algoritmo é uma sequência de
instruções dizendo a um computador o que fazer.”

Como Domingos explica, os algoritmos são redutíveis a três operações: "e",


"ou" e "não".
Embora essas operações possam se encadear de maneiras
extraordinariamente complexas, os algoritmos centrais são construídos a
partir de associações racionais simples.

Porque parece que a
palavra algoritmo está ligada à
linguagens de computador?
A maioria das pessoas não tem uma clara compreensão de como
computadores (ou telefones, ou tablets ou quaisquer equipamentos que
utilziam dados) funcionam, mas tendem a ter pelo menos uma noção geral,
que certamente deve envolver um código - ou alguma coisa assim!

Esta vaga noção de que deve haver um código ou alguma coisa assim
norteando o que acontece na Internet deixa de ser tão vaga quando se
começa a entender o papel do algoritmo. 
De um modo geral, quando as pessoas falam sobre algoritmos nos dias de
hoje, elas estão falando sobre algo mais específico, como as operações que
alimentam nossos feeds de notícias nas mídias sociais, por exemplo, ou
que estabelecem o ranking do Google e nas demais SERPS.

De um modo ou de outro, a maioria desses sistemas são exemplos de uma


tecnologia chamada aprendizado de máquina.

Em vez de processar repetidamente um conjunto estável de instruções, os


sistemas baseados em aprendizado de máquina se reescrevem
enquanto trabalham.
É isso que assusta algumas pessoas, já que faz com que os algoritmos
pareçam vivos, possivelmente até sensíveis. Mas, que fique bem claro, eles
não são nenhum dos dois!

Em um artigo sobre de Domingos, David Auerbach, da Slate, observa que


“mesmo na ciência da computação, o aprendizado de máquina é
notavelmente opaco”.

Mas também é cada vez mais importante para as formas em que vivemos, o
que faz com que seja tão importante que se compreenda o que é e como
trabalham os algoritmos.

Parte da questão, no entanto, é que os algoritmos de aprendizado de


máquina estão efetivamente programando a si próprios, o que significa
que às vezes podem ser imprevisíveis, ou até um pouco estranhos.

Suas operações podem ser, por vezes, obscuras até para aqueles que
originalmente as criaram!

Portanto, embora o conceito de algoritmo possa ser aplicado a qualquer


receita ou padrão aplicáveis e finitos, tem-se a impressão de que está
associado às linguagens de programação e computação pois, atualmente,
seu uso é, basicamente, voltado para o desenvolvimento de tecnologias.
O que se pode fazer com algoritmos?
Muitas, muitas coisas!

Eles são usados hoje em dia para uma infinidade de finalidades, como,


por exemplo, a automação da negociação no mercado de ações ou a
veiculação de anúncios para visitantes do site, para citar dois usos bem
comuns. 

Uma das primeiras aplicações dessa tecnologia foi a chamada visão de


máquina, na qual os computadores tentam identificar os vários elementos
de uma imagem.

É o tipo de sistema que pode dizer (ou reivindicar) o quão quente você fica
em uma foto ou identificar as pinturas mais inventivas de todos os tempos,
por exemplo.

A propriedade mais promissora - e mais preocupante! - de alguns


algoritmos pode ser sua capacidade de decidir o que vemos e como o
vemos.

Quando você faz uma pergunta a um assistente digital,


como Siri ou Cortana, as operações algorítmicas informam tanto o sentido
do que você pediu quanto a informação que elas fornece em resposta.

O aprendizado de máquina também ajuda o Google Maps a determinar a


melhor rota de um local para outro.

E há um conjunto virtualmente ilimitado de outras funções que os algoritmos


podem atender: algumas das primeiras aplicações comerciais de algoritmos
envolveram tarefas de automação, como gerenciamento de folha de
pagamento, mas com o aumento do aprendizado de máquina
contemporâneo, elas são usadas para tarefas muito mais sofisticadas.
Algoritmos determinam quem deve receber benefícios do governo, contribuir
para o policiamento preditivo, ajudar a antecipar crises de saúde,
reprogramar voos de companhias aéreas e muito mais.

Contudo, ainda há muitas coisas que os algoritmos não podem fazer.

Por exemplo, embora os algoritmos sejam muito bons em reservar viagens,


as companhias aéreas descobriram que não podem dispensar agentes de
reserva humanos.

Embora os algoritmos sejam bons para garantir eficiência, eles não são


bons em simular compaixão e outras características humanas.

Um dos principais aspectos sobre o aprendizado de máquina e a forma


como os algoritmos funcionam baseia-se no erro. 

Afinal, a partir dos erros os algoritmos aprendem e evoluem. 

Esses erros podem ser tolos, como quando o Wolfram Alpha confunde um
bode bonitinho com um cachorro, mas eles também podem ser gritantes,
como quando, em 2015, deu-se o chocante erro do Google Photos, que
identificou erroneamente dois negros como gorilas.

Ninguém conscientemente ensinou o sistema a formar conclusões


racistas, mas os parâmetros que os programadores criaram podem tê-
lo preparado para chegar lá.

Confiar no aprendizado de máquina pode ser arriscado, porque são


sistemas que aprendem a acertar as coisas, fazendo-os errar
repetidamente.

Trabalhar com eles implica, portanto, aceitar erros e falhas quase


inevitáveis.

Exemplo prático do papel de um


algoritmo
O exemplo mais familiar de um algoritmo de aprendizado de máquina é
provavelmente o feed de notícias do Facebook.
De certo que a grande maioria dos usuários da rede já teve a experiência de
se reconectar com conhecidos há muito perdidos através das listas de
amigos sugeridas pelo Facebook.

Essa é uma operação algorítmica, uma que nos aproxima, em vez de nos


afastar.

O Facebook constantemente lida com a forma como seu feed de notícias


funciona: não está apenas monitorando quanto tempo você passa olhando
para cada postagem, como, principalmente, está avaliando
cuidadosamente todas as suas atividades, concentrando-se em seus
usuários e suas preferências, os dados que geram, e não apenas na
matemática subjacente.

Da mesma forma, serviços de música como o Pandora usam nossos hábitos


de audição para recomendar novas músicas e artistas que talvez não
tivéssemos descoberto de outra forma, às vezes nos tirando de nossas
zonas de conforto no processo.

Embora estas operações façam parte do cotidiano da maioria das pessoas


e sugiram conexões que possam realmente ajudar a se conectar com o
desconhecido, com o perdido ou com o esquecido, há críticas ferranhas
ao papel dos algoritmos presentes em nosso cotidiano.

Algoritmo
Origem: Wikipédia, a enciclopédia livre.
Saltar para a navegaçãoSaltar para a pesquisa
Uma animação do algoritmo de ordenação quicksort de uma matriz de valores ao acaso. As barras
vermelhas marcam o elemento pivô. No início da animação, estando o elemento para o lado direito,
é escolhido como o pivô.

Em ciência da computação, um algoritmo é uma sequência finita de ações


executáveis que visam obter uma solução para um determinado tipo de
problema.[1][2] Segundo Dasgupta, Papadimitriou e Vazirani, "algoritmos são
procedimentos precisos, não ambíguos, mecânicos, eficientes e corretos". [3]
O conceito de algoritmo existe há séculos e o uso do conceito pode ser
atribuído a matemáticos gregos, por exemplo a Peneira de Eratóstenes e o
algoritmo de Euclides.
O conceito de algoritmo é frequentemente ilustrado pelo exemplo de uma
receita culinária, embora muitos algoritmos sejam mais complexos. Eles podem
repetir passos (fazer iterações) ou necessitar de decisões (tais como
comparações ou lógica) até que a tarefa seja completada. Um algoritmo
corretamente executado não irá resolver um problema se estiver implementado
incorretamente ou se não for apropriado ao problema. Jean Luc Chabert
Um algoritmo não representa, necessariamente, um programa de computador,
[4]
 e sim os passos necessários para realizar uma tarefa. Sua implementação
pode ser feita por um computador, por outro tipo de autômato ou mesmo por
um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando
um conjunto diferenciado de instruções em mais ou menos tempo, espaço ou
esforço do que outros. Tal diferença pode ser reflexo da complexidade
computacional aplicada, que depende de estruturas de dados adequadas ao
algoritmo. Por exemplo, um algoritmo para se vestir pode especificar que você
vista primeiro as meias e os sapatos antes de vestir a calça enquanto outro
algoritmo especifica que você deve primeiro vestir a calça e depois as meias e
os sapatos. Fica claro que o primeiro algoritmo é mais difícil de executar que o
segundo apesar de ambos levarem ao mesmo resultado. Algorithmics
O conceito de um algoritmo foi formalizado em 1936 pela Máquina de
Turing de Alan Turing e pelo cálculo lambda de Alonzo Church, que formaram
as primeiras fundações da Ciência da computação.

Índice

 1Etimologia
 2Formalismo
o 2.1Término do algoritmo
 3Exemplos
o 3.1Torre de Hanói
 3.1.1Solução em forma narrativa
 3.1.2Solução em forma gráfica
 4Análise de algoritmos
 5Classificação
o 5.1Classificação por implementação
o 5.2Classificação por paradigma
o 5.3Classificação por campo de estudo
o 5.4Classificação por complexidade
 6Implementação
 7Programa de Computador
 8Tradutor e Interpretador
o 8.1Tradutores
o 8.2Processo de Compilação
 8.2.1Passos da compilação
o 8.3Processo de Montagem
 8.3.1Por que usar uma Linguagem de Montagem?
 8.3.2Tarefas do montador
 8.3.3Montadores de dois passos
o 8.4Ligação e Carregamento
 8.4.1Ligação
 8.4.2Carregamento
o 8.5Interpretadores
 9Ver também
 10Referências
 11Bibliografia
 12Ligações externas

Etimologia[editar | editar código-fonte]
Os historiadores da palavra algoritmo encontraram a origem no sobrenome, Al-
Khwarizmi, do matemático persa do século IX Mohamed ben Musa,[5] cujas
obras foram traduzidas no ocidente cristão no século XII, tendo uma delas
recebido o nome Algorithmi de numero indorum, sobre os algoritmos usando o
sistema de numeração decimal (indiano). Outros autores, entretanto, defendem
a origem da palavra em Al-goreten (raiz - conceito que se pode aplicar aos
cálculos).[6] "Álgebra" e "algorismo" também formam formas corrompidas da
palavra, pois as pessoas esqueciam as derivações originais. O dicionário
"Vollständiges Mathematisches Lexicon" (Leipzig, 1747) refere a palavra
"Algorithmus"; nesta designação estão combinadas as noções de quatro
cálculos aritméticos, nomeadamente
a adição, multiplicação, subtração e divisão. A frase "algorithmus infinitesimalis"
foi na altura utilizada para significar; "maneiras de calcular com quantidades
infinitésimas" (pequenas), uma invenção de Leibnitz. Também é conhecido no
meio financeiro, como "algos".[7]

Formalismo[editar | editar código-fonte]
Fluxograma, um exemplo de algoritmo imperativo. O estado em vermelho indica a entrada do
algoritmo enquanto os estados em verde indicam as possíveis saídas.

Um programa de computador é essencialmente um algoritmo que diz


ao computador os passos específicos e em que ordem eles devem ser
executados, como por exemplo, os passos a serem tomados para calcular as
notas que serão impressas nos boletins dos alunos de uma escola. Logo, o
algoritmo pode ser considerado uma sequência de operações que podem ser
simuladas por uma máquina de Turing completa.
Quando os procedimentos de um algoritmo envolvem o processamento de
dados, a informação é lida de uma fonte de entrada, processada e retornada
sob novo valor após processamento, o que geralmente é realizado com o
auxílio de uma ou mais estrutura de dados.
Para qualquer processo computacional, o algoritmo precisa estar
rigorosamente definido, especificando a maneira que ele se comportará em
todas as circunstâncias. A corretividade do algoritmo pode ser provada
matematicamente, bem como a quantidade assintótica de tempo e espaço
(complexidade) necessários para a sua execução. Estes aspectos dos
algoritmos são alvo da análise de algoritmos.
A maneira mais simples de se pensar um algoritmo é por uma lista de
procedimentos bem definida, na qual as instruções são executadas passo a
passo a partir do começo da lista, uma ideia que pode ser facilmente
visualizada através de um fluxograma. Tal formalização adota as premissas
da programação imperativa, que é uma forma mecânica para visualizar e
desenvolver um algoritmo. Concepções alternativas para algoritmos variam
em programação funcional e programação lógica.
Término do algoritmo[editar | editar código-fonte]
Alguns autores restringem a definição de algoritmo para procedimentos que
eventualmente terminam. Marvin Minsky constatou que se o tamanho de um
procedimento não é conhecido de antemão, tentar descobri-lo é um problema
indecidível, já que o procedimento pode ser executado infinitamente, de forma
que nunca se terá a resposta. Alan Turing provou em 1936 que não existe
máquina de Turing para realizar tal análise para todos os casos, logo não há
algoritmo para realizar tal tarefa para todos os casos. Tal condição é conhecida
atualmente como problema da parada.
Para algoritmos intermináveis o sucesso não pode ser determinado pela
interpretação da resposta e sim por condições impostas pelo próprio
desenvolvedor do algoritmo durante sua execução.

Exemplos[editar | editar código-fonte]

Imagem da torre de Hanói (com três discos), mostrando como estariam as peças no início e no fim
da solução.

Alguns exemplos genéricos de algoritmos são: uma coreografia, um manual de


instruções, uma receita culinária, Técnicas para resolver problemas
matemáticos, uma pesquisa na internet, dentre outros.
Torre de Hanói[editar | editar código-fonte]
Um clássico problema que trabalha o desenvolvimento da lógica e do raciocínio
matemático é a torre de Hanói, inventado pelo matemático francês Édouard
Lucas em 1883.[8] O quebra-cabeça é composto por três hastes e vários discos
de tamanhos diferentes, que podem deslizar para qualquer haste. O quebra-
cabeça começa com os discos em uma pilha organizada em ordem crescente
de tamanho em uma haste, a menor no topo, fazendo assim uma forma cônica.
Neste exemplo, toma-se o seguinte problema: tem-se três hastes. Umas das
hastes serve de suporte para três discos. Deseja-se mover todos os discos
para outra haste, porém deve-se movimentar um disco de cada vez e um disco
maior nunca pode ser colocado sobre um disco de menor tamanho.
Solução em forma narrativa[editar | editar código-fonte]
Resolução da torre de Hanói (com três discos).

Nomeiam-se as hastes como A, B e C e os discos como Vermelho, Verde e


Azul. Considera-se que inicialmente os discos estão na haste A. Segue uma
sequência de passos para a resolução do quebra-cabeça:

1.move-se o disco Vermelho para a haste C.


2.move-se o disco Verde para a haste B.
3.move-se o disco Vermelho para a haste B.
4.move-se o disco Azul para a haste C.
5.move-se o disco Vermelho para a haste A.
6.move-se o disco Verde para a haste C.
7.move-se o disco Vermelho para a haste C.
Solução em forma gráfica[editar | editar código-fonte]
Podemos também representar a solução em forma gráfica, desenhando as
hastes e a posição dos discos a cada movimento (ou passo). Com 3 discos, o
quebra-cabeça pode ser resolvido em 7 movimentos. O número mínimo de
movimentos necessários para resolver um quebra-cabeça da Torre de Hanói
é , onde n é o número de discos.
Essa sequência, ou descrição, finita de passos ou tarefas é a quem chamamos
de algoritmos.

Análise de algoritmos[editar | editar código-fonte]


Ver artigo principal: Análise de algoritmos
A análise de algoritmos é um ramo da ciência da computação que estuda
as técnicas de projeto de algoritmos e os algoritmos de forma abstrata, sem
estarem implementados em uma linguagem de programação em particular ou
implementadas de algum outro modo. Ela preocupa-se com os recursos
necessários para a execução do algoritmo tais como o tempo de execução e o
espaço de armazenamento de dados. Deve-se perceber que para um dado
algoritmo pode-se ter diferentes quantidades de recursos alocados de acordo
com os parâmetros passados na entrada. Por exemplo, se definirmos que o
fatorial de um número natural é igual ao fatorial de seu antecessor multiplicado
pelo próprio número, fica claro que a execução de  fatorial(10)  consome
mais tempo que a execução de  fatorial(5) .
Um meio de exibir um algoritmo a fim de analisá-lo é através da implementação
por pseudocódigo em português estruturado, também conhecido no Brasil
como Portugol. Este código pode ser digitado dentro de algum editor de textos
como o Bloco de Notas, anotado num caderno ou ainda poder digitado
diretamente dentro de um programa interpretador de algoritmos, como é caso
do Visualg, que é um editor, interpretador e executor dos algoritmos.

Classificação[editar | editar código-fonte]
Classificação por implementação[editar | editar código-fonte]
Pode-se classificar algoritmos pela maneira pelo qual foram implementados.

 Recursivo ou iterativo - um algoritmo recursivo possui a característica


de invocar a si mesmo repetidamente até que certa condição seja satisfeita
e ele é terminado, que é um método comum em programação funcional.
Algoritmos iterativos usam estruturas de repetição tais como laços, ou ainda
estruturas de dados adicionais tais como pilhas, para resolver problemas.
Cada algoritmo recursivo possui um algoritmo iterativo equivalente e vice-
versa, mas que pode ter mais ou menos complexidade em sua construção.
 Lógico - um algoritmo pode ser visto como uma dedução lógica
controlada. O componente lógico expressa os axiomas usados na
computação e o componente de controle determina a maneira como a
dedução é aplicada aos axiomas. Tal conceito é base para a programação
lógica.
 Serial ou paralelo - algoritmos são geralmente assumidos por serem
executados instrução a instrução individualmente, como uma lista de
execução, o que constitui um algoritmo serial. Tal conceito é base para
a programação imperativa. Por outro lado existem algoritmos executados
paralelamente, que levam em conta as arquiteturas de computadores com
mais de um processador para executar mais de uma instrução ao mesmo
tempo. Tais algoritmos dividem os problemas em subproblemas e o
delegam a quantos processadores estiverem disponíveis, agrupando no
final o resultado dos subproblemas em um resultado final ao algoritmo. Tal
conceito é base para a programação paralela. De forma geral, algoritmos
iterativos são paralelizáveis; por outro lado existem algoritmos que não são
paralelizáveis, chamados então problemas inerentemente seriais.
 Determinístico ou não-determinístico - algoritmos determinísticos
resolvem o problema com uma decisão exata a cada passo enquanto
algoritmos não-determinísticos resolvem o problema ao deduzir os
melhores passos através de estimativas sob forma de heurísticas.
 Exato ou aproximado - enquanto alguns algoritmos encontram uma
resposta exata, algoritmos de aproximação procuram uma resposta próxima
a verdadeira solução, seja através de estratégia determinística ou aleatória.
Possuem aplicações práticas sobretudo para problemas muito complexos,
do qual uma resposta correta é inviável devido à sua complexidade
computacional.
Classificação por paradigma[editar | editar código-fonte]
Pode-se classificar algoritmos pela metodologia ou paradigma de seu
desenvolvimento, tais como:

 Divisão e conquista - algoritmos de divisão e conquista reduzem


repetidamente o problema em sub-problemas, geralmente de forma
recursiva, até que o sub-problema é pequeno o suficiente para ser
resolvido. Um exemplo prático é o algoritmo de ordenação merge sort. Uma
variante dessa metodologia é o decremento e conquista, que resolve um
sub-problema e utiliza a solução para resolver um problema maior. Um
exemplo prático é o algoritmo para pesquisa binária.
 Programação dinâmica - pode-se utilizar a programação dinâmica para
evitar o re-cálculo de soluções já resolvidas anteriormente.
 Algoritmo ganancioso - um algoritmo ganancioso é similar à
programação dinâmica, mas difere na medida em que as soluções dos sub-
problemas não precisam ser conhecidas a cada passo, uma escolha
gananciosa pode ser feita a cada momento com o que até então parece ser
mais adequado.
 Programação linear - A resolução de um problema através de
programação linear envolve a maximização / minimização das entradas de
um conjunto de desigualdades lineares.
 Redução - a redução resolve o problema ao transformá-lo em outro
problema. É chamado também transformação e conquista.
 Busca e enumeração - vários problemas podem ser modelados através
de grafos. Um algoritmo de exploração de grafo pode ser usado para
caminhar pela estrutura e retornam informações úteis para a resolução do
problema. Esta categoria inclui algoritmos de busca e backtracking.
 Paradigma heurístico e probabilístico - algoritmos probabilísticos
realizam escolhas aleatoriamente. Algoritmos genéticos tentam encontrar a
solução através de ciclos de mutações evolucionárias entre gerações de
passos, tendendo para a solução exata do problema. Algoritmos heurísticos
encontram uma solução aproximada para o problema.
Classificação por campo de estudo[editar | editar código-fonte]
Cada campo da ciência possui seus próprios problemas e respectivos
algoritmos adequados para resolvê-los. Exemplos clássicos são algoritmos
de busca, de ordenação, de análise numérica, de teoria de grafos, de
manipulação de cadeias de texto, de geometria computacional, de análise
combinatória, de aprendizagem de máquina, de criptografia, de compressão de
dados e de interpretação de texto.
Classificação por complexidade[editar | editar código-fonte]
Ver artigo principal: Complexidade computacional
Alguns algoritmos são executados em tempo linear, de acordo com a entrada,
enquanto outros são executados em tempo exponencial ou até mesmo nunca
terminam de serem executados. Alguns ditos problemas tem múltiplos
algoritmos enquanto outros não possuem algoritmos para resolução. Jesús Bisbal Riera

Implementação[editar | editar código-fonte]
Algoritmos podem ser implementados em circuitos elétricos ou até mesmo em
dispositivos mecânicos (autômatos).Mania dos inventores do século XIX, os
autômatos eram máquinas totalmente mecânicas, construídas com a
capacidade de serem programadas para realizar um conjunto de atividades
autônomas. Em 2011, o filme A Invenção de Hugo Cabret(tradução brasileira)
do cineasta Martin Scorsese traz a história do ilusionista Georges Méliès
precursor do cinema e um colecionador de autômatos, sendo uma de suas
máquinas o fio condutor desta história. O autômato específico era capaz de
desenhar a cena emblemática do seu filme "Viagem à Lua".
Entretanto, a maioria dos algoritmos são desenvolvidos para programas de
computador, para isto, existe uma grande variedade de linguagens de
programação, cada uma com características específicas que podem facilitar a
implementação de determinados algoritmos ou atender a propósitos mais
gerais.

Programa de Computador[editar | editar código-fonte]


Ada Lovelace escreveu o primeiro algoritmo para ser processado por uma
máquina, a máquina analítica de Charles Babbage. Um programa de
computador é essencialmente um algoritmo que diz ao computador os passos
específicos e em que ordem eles devem ser executados.Usando  o
Pseudocódigo (uma linguagem simples, nativa a quem o escreve, de forma a
ser entendida por qualquer pessoa) que é uma forma genérica de escrever o
algoritmo, sem necessidade de conhecer a sintaxe de nenhuma linguagem de
programação. Um exemplo de pseudocódigo é o Portugol, que utiliza o
compilador VisuALG.[9] O VisuAlg é um programa que edita, interpreta e executa
algoritmos com uma linguagem próxima do português estruturado como um
programa normal de computador. É um programa de livre uso e distribuição,
empregado no ensino de programação em várias escolas e universidades no
Brasil e no exterior. Quando os procedimentos de um algoritmo envolvem o
processamento de dados, a informação é lida de uma fonte de entrada,
processada e retornada sob novo valor após processamento, o que geralmente
é realizado com o auxílio de um conjunto de instruções e estrutura de
dados.Um  exemplo, para ser feito nas escolas é fazer os passos a serem
tomados para calcular as notas que serão impressas nos boletins dos alunos
de uma escola, informando se o aluno foi aprovado ou reprovado.
Exemplo:   
// Seção de Declarações    
var
NOTA1, NOTA2, NOTA3, NOTA4, MEDIA
inicio
// Seção de Comandos
ESCREVA ("DIGITE A PRIMEIRA NOTA: ")
LEIA (NOTA1)
ESCREVA ("DIGITE A SEGUNDA NOTA: ")
LEIA (NOTA2)
ESCREVA ("DIGITE A TERCEIRA NOTA: ")
LEIA (NOTA3)
ESCREVA ("DIGITE A QUARTA NOTA: ")
LEIA (NOTA4)
MEDIA = (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4
SE MEDIA <=  6,9 ENTAO
   ESCREVA ("A MEDIA DO ALUNO FOI: ", MEDIA)
   ESCREVA (" - ALUNO REPROVADO ")
FIMSE
SE MEDIA >= 7 ENTAO
   ESCREVA ("A MEDIA DO ALUNO FOI: ", MEDIA)
   ESCREVA (" - ALUNO APROVADO ")
FIMSE
fimalgoritmo

Tradutor e Interpretador[editar | editar código-fonte]


Ao receber uma bicicleta no natal Carlinhos precisa ler o manual de instruções
e seguir passo a passo as tarefas descritas no documento para poder se
divertir com seu presente. Podemos dizer que Carlinhos é um interpretador dos
comandos fornecidos pelo manual de instruções. Entretanto seu pai encontrou
uma promoção na internet e comprou um produto fabricado na França e o
menino ao se deparar com o manual percebeu que o mesmo não poderia ser
“interpretado” já que não sabia ler em francês. Para resolver o problema seu
pai contratou um tradutor de francês para português, assim, este novo manual
pôde ser “interpretado” por Carlinhos e enfim sua bicicleta seria montada.
No computador, o problema de Carlinhos se repete diariamente, havendo a
necessidade de softwares básicos para traduzir e interpretar os diversos
programas dos usuários escritos em diversas linguagens existentes. Os
softwares que convertem um programa de usuário escrito em uma linguagem
para outra linguagem são chamados de tradutores. A linguagem na qual o
programa original está expresso é chamada de linguagem fonte e a linguagem
para a qual ela será convertida é conhecida como linguagem alvo. Tanto a
linguagem fonte quanto a linguagem alvo definem níveis de abstração
específicos.
Se existir um processador que possa executar diretamente programas escritos
na linguagem fonte, não há necessidade de se traduzir o programa fonte para
uma linguagem alvo.
O método de tradução é empregado quando há um processador (seja ele
implementado em hardware ou por interpretação) disponível para executar
programas expressos na linguagem alvo mas não na linguagem fonte. Se a
tradução tiver sido feita corretamente, a execução do programa traduzido vai
obter exatamente os mesmos resultados que a execução do programa fonte
obteria se houvesse um processador que o executasse diretamente.
É importante observar a diferença entre tradução e interpretação. Na tradução,
o programa original, expresso na linguagem fonte, não é executado
diretamente. Em vez da execução direta, esse programa precisa ser convertido
para um programa equivalente, conhecido como programa objeto ou programa
binário executável, que será executado após o término do processo de
tradução.
Logo, a tradução envolve dois passos distintos:

 Geração de um programa equivalente na linguagem alvo;


 Execução do programa obtido.
No processo de interpretação existe apenas um único passo: a execução do
programa original na linguagem fonte.
Tradutores[editar | editar código-fonte]
Os tradutores podem ser divididos em dois grupos, dependendo da relação
existente entre a linguagem fonte e a linguagem alvo. Quando a linguagem
fonte for essencialmente uma representação simbólica para uma linguagem de
máquina numérica, o tradutor é chamado de montador e a linguagem fonte é
chamada de linguagem de montagem. Quando a linguagem fonte for uma
linguagem de alto nível, como é o caso do Pascal ou do C, e a linguagem alvo
for uma linguagem de máquina numérica ou uma representação simbólica
desta linguagem (linguagem de montagem), o tradutor é chamado de
compilador.
Processo de Compilação[editar | editar código-fonte]
Diferente do processo de montagem de um programa em linguagem de
montagem para um programa em linguagem de máquina, que é bastante
simples, pois existe um mapeamento direto de um para um entre os comandos
em linguagem de montagem e os equivalentes em código binário, o processo
de compilação de linguagens é muito mais complexo.
Passos da compilação[editar | editar código-fonte]
Considere o comando simples abaixo:

A = B + 4;

O compilador tem que resolver um número grande de tarefas na conversão


deste comando em um ou mais comandos em linguagem de montagem:
1.Reduzir o texto do programa para símbolos básicos da linguagem, como
identificadores tais como A e B, demarcações como o valor constante 4 e
delimitadores do programa tais como = e +. Esta parte da compilação é
chamada de análise léxica.
2. Decodificar os símbolos para reconhecer a estrutura do programa. No
comando usado acima, por exemplo, um programa chamado parser deve
reconhecer o comando como sendo uma atribuição de valores da forma:

<Identificador> “=” <Expressão>

onde  <Expressão>  é decodificado na forma:

<Identificador> “+” <Constante>

Essa tarefa é chamada de análise sintática.


3. Análise de nomes: associar os nomes A e B com variáveis do programa, e
associá-los também a posições de memória específicas onde essas variáveis
serão armazenadas durante a execução.
4. Análise de tipos: determinar os tipos de todos os dados. No caso anterior, as
variáveis A e B e a constante 4 seriam reconhecidas como sendo do tipo int em
algumas linguagens. As análises de nome e tipo são também conhecidas como
análise semântica: determina o significado dos componentes do programa.
5. Mapeamento de ações e geração de código: associar comandos do
programa com uma sequência em linguagem de montagem apropriada. No
caso anterior, a sequência em linguagem de montagem poderia ser:
Comando de atribuição.

ld[B], %r0, %r1 // Carregue variável B em um registrador.


add %r1, 4, %r2 // Calcule o valor da expressão.
st %r2, %r0, [A] // Faça a atribuição na variável A.

6.Existem passos adicionais que o compilador deve tomar, tais como, alocar
variáveis a registradores, usar registradores e, quando o programador desejar,
otimizar o programa. O otimizador de código (independente de máquina) é um
módulo opcional (presente na grande maioria dos compiladores) que objetiva
melhorar o código intermediário de modo que o programa objeto produzido ao
fim da compilação seja menor (ocupe menos espaço de memória) e/ou mais
rápido (tenha tempo de execução menor). A saída do otimizador de código é
um novo código intermediário.
Processo de Montagem[editar | editar código-fonte]
O processo de traduzir um programa em linguagem de montagem para
programa em linguagem de máquina é chamado de processo de montagem.
Este processo é muito simples, uma vez que existe um mapeamento um para
um de comandos em linguagem de montagem para seus correspondentes em
linguagem de máquina. Isto é o contrário da compilação, onde um comando em
linguagem de alto nível pode ser traduzido em vários comandos em linguagem
de máquina.
Por que usar uma Linguagem de Montagem?[editar | editar código-fonte]
Programar em uma linguagem de montagem não é fácil. Além da dificuldade, o
desenvolvimento de um programa na linguagem de montagem consome mais
tempo do que seu desenvolvimento em uma linguagem de alto nível. A
depuração e manutenção dos programas em linguagem de montagem são
mais complicados.
Nessas condições, por que alguém escolheria programar em uma linguagem
de montagem?
Existem duas razões que justificam esta opção: performance e acesso aos
recursos da máquina. Um expert na linguagem de montagem pode produzir um
código menor e muito mais eficiente do que o gerado por um programador
usando linguagem de alto nível.
Em segundo lugar, certos procedimentos precisam ter acesso total ao
hardware. Por exemplo, se a máquina alvo tiver um bit para expressar o
overflow de operações aritméticas, um programa em linguagem de montagem
pode testar diretamente este bit, coisa que um programa em Java não pode
fazer. Além disso, um programa em linguagem de montagem pode executar
qualquer uma das instruções do conjunto de instruções da máquina alvo.
Tarefas do montador[editar | editar código-fonte]
Embora a montagem seja um processo simples, é tedioso e passível de erros
quando feito manualmente. Montadores comerciais têm ao menos as seguintes
características:

 Permitem ao programador especificar posição de valores de dados e


programas durante a execução;
 Permitem que o programador de início realize valores de dados na
memória antes da execução do programa;
 Implementam mnemônicos em linguagem de montagem para todas as
instruções da máquina e modos de endereçamento, e traduzem comandos
em linguagem de montagem válidos, nos seus equivalentes em linguagem
de máquina;
 Permitem o uso de rótulos simbólicos para representar endereços e
constantes;
 Incluem um mecanismo que permite que variáveis sejam definidas em
um programa em linguagem de montagem e usadas em outros programas
separadamente;
 Possibilitam a expansão de macros, ou seja, rotinas (semelhantes às
funções em linguagem de alto nível) que podem ser definidas uma vez e
então instanciadas quantas vezes necessário.
Montadores de dois passos[editar | editar código-fonte]
A maioria dos montadores leem textos do programa em linguagem de
montagem duas vezes, e são chamados de “montadores de dois passos”. O
primeiro passo serve para determinar o endereço de todos os itens de dados e
instruções de máquina, e selecionar quais instruções devem ser geradas para
cada instrução em linguagem de montagem (mais ainda não gerá-las).
Os endereços dos itens de dados e instruções são determinados por meio do
uso de um contador de programa para a montagem, chamado contador de
localização. O contador de localização gerencia o endereço da instrução
executada e dos itens de dados durante a montagem, que geralmente é
inicializada com  0  (zero). No início do primeiro passo, é incrementado de
acordo com o tamanho de cada instrução.
Durante este passo, o montador também efetua quaisquer operações
aritméticas em tempo de montagem, e insere as definições de todos os rótulos
de funções e variáveis e as constantes, em uma tabela chamada Tabela de
Símbolos.
A razão principal para exigir uma segunda passagem é permitir que símbolos
sejam usados no programa antes de serem definidos. Após a primeira
passagem, o montador terá identificado todos os símbolos e os colocado na
Tabela de Símbolos, já durante a segunda passagem, gerará código de
máquina, inserindo os identificadores dos símbolos que agora são conhecidos.
Ligação e Carregamento[editar | editar código-fonte]
A maioria dos programas é composto de mais de um procedimento. Os
compiladores e os montadores geralmente traduzem um procedimento de cada
vez, colocando a saída da tradução em disco. Antes que o programa possa
rodar, todos os seus procedimentos precisam ser localizados e ligados uns aos
outros de maneira a formarem um único código.
Ligação[editar | editar código-fonte]
A função do ligador é coletar procedimentos traduzidos separadamente e ligá-
los uns aos outros para que eles possam executar como uma unidade
chamada programa binário executável.
Se o compilador ou o montador lesse um conjunto de procedimentos fonte e
produzisse diretamente um programa em linguagem de máquina pronto para
ser executado, bastaria que um único comando fonte fosse alterado para que
todos os procedimentos fonte tivessem que ser novamente traduzidos.
Usando a técnica do módulo objeto separado, o único procedimento a ser
novamente traduzido seria aquele modificado. Havendo a necessidade de
realizar apenas a etapa de ligação dos módulos separados novamente, sendo
esta tarefa mais rápida que a tradução.
Carregamento[editar | editar código-fonte]
O carregador é um programa que coloca um módulo de carregamento na
memória principal. Conceitualmente, a tarefa do carregador não é difícil. Ele
deve carregar os vários segmentos de memória com seus valores corretos e
inicializar certos registradores, tais como o apontador para pilha do sistema,
responsável pelo escopo das rotinas que estarão em execução e o contador de
instruções contido no processador, com seus valores iniciais, indicando assim
onde o programa deve ser iniciado.
Em Sistemas Operacionais modernos, vários programas estão residentes na
memória a todo instante, e não há como o montador ou o ligador saber em
quais endereços os módulos de um programa irão residir. O carregador deve
relocar estes módulos durante o carregamento adicionando um deslocamento a
todos os endereços, permitindo desta forma acessar cada módulo
individualmente na memória.
Esse tipo de carregamento é chamado de carregamento com relocação. O
carregador simplesmente modifica endereços relocáveis dentro de um único
módulo de carregamento para que vários programas passem a residir na
memória simultaneamente.
Interpretadores[editar | editar código-fonte]
O software interpretador é um programa de computador que executa instruções
escritas em uma linguagem de programação. Por exemplo, as linguagens
Basic, Prolog, Python e Java, são frequentemente interpretados. Um
interpretador geralmente usa uma das seguintes estratégias para a execução
do programa: executar o código fonte diretamente ou traduzir o código fonte em
alguma eficiente representação intermediária e depois executar este código.
Para isso, certos tipos de tradutores transformam uma linguagem fonte em uma
linguagem simplificada, chamada de código intermediário, que pode ser
diretamente “executado” por um programa chamado interpretador. Nós
podemos imaginar o código intermediário como uma linguagem de máquina de
um computador abstrato projetado para executar o código fonte.
Interpretadores são, em geral, menores que compiladores e facilitam a
implementação de construções complexas em linguagens de programação.
Entretanto, o tempo de execução de um programa interpretado é geralmente
maior que o tempo de execução deste mesmo programa compilado, pois o
interpretador deve analisar cada declaração no programa a cada vez que é
executado e depois executar a ação desejada, enquanto que o código
compilado apenas executa a ação dentro de um contexto fixo, anteriormente
determinado pela compilação. Este tempo no processo de análise é conhecido
como "overhead interpretativa".

Ver também

lgoritmo de Redes Sociais: como


funcionam Instagram, Facebook,
LinkedIn e Twitter e como performar
melhor em cada um deles?

Por Thaís Costa

Jornalista.

Publicado em 4 de maio de 2018. | Atualizado em 14 de fevereiro de 2020


Redes Sociais são indispensáveis em uma estratégia de marketing digital e
isso você provavelmente já sabe. Mas como performar bem em cada uma
delas? Um dos primeiros passos é entender seu funcionamento! Confira
agora como funcionam o algoritmo para Instagram, Facebook, LinkedIn e
Twitter.

Como performar melhor nas redes sociais e conseguir resultados para


minha empresa?

Essa é a pergunta que muitos se fazem, seja no começo de sua


estratégia de marketing digital ou quando já tem uma tática bem
elaborada.

Um dos principais pontos de análise que qualquer um que deseja obter


resultados exponenciais e com custos reduzidos nas principais
plataformas da atualidade são os algoritmos.

Isso porque entendendo o algoritmo, é possível entender como funciona


cada rede e em que investir.

Baixe o nosso Kit gratuito de Marketing nas Redes Sociais

Aprenda tudo o que você precisa saber para marcar presença no


Facebook, Instagram, LinkedIn, Twitter e YouTube!

Nome

Email Corporativo

Telefone

Site da empresa
Número de funcionários

Clique para sele cionar

Sua empresa vende algum dos seguintes serviços? Web design,


marketing digital, SEO/SEM ou serviços publicitários

Selecione

Receber material

Pensando nisso, elaboramos esse guia sobre algoritmos das principais


redes sociais atualmente: Instagram, Facebook, LinkedIn e Twitter.

Acompanhe agora mesmo:

Algoritmo do Instagram
O Instagram começou como uma rede sem algoritmo — o feed era
organizado de forma cronológica, de forma que as postagens mais
recentes apareciam primeiro e bastava deslizar para ver as mais antigas.

Em 2016 isso mudou e, embora não se saiba exatamente como o


algoritmo funciona, existem 3 fatores chave que afetam como as
postagens aparecem:

1. Temporalidade: embora os posts não sejam mais cronológicos, o


Instagram ainda leva em consideração o quão recente uma
imagem é;
2. Engajamento: o engajamento total de um post, que é medido por
meio dos comentários e curtidas, especialmente em seus
momentos iniciais, faz com que um post seja priorizado ou não;
3. Relacionamento: a rede prioriza os posts das contas com as quais
o usuário mais engaja, seja por meio de comentários, curtidas,
mensagens diretas ou buscas.
Basicamente, o Instagram tenta entender os interesses do usuário e o
potencial de engajamento de cada postagem para mostrar conteúdo
relevante em primeiro lugar e conseguir maiores índices de engajamento
na rede.

Isso parece estar dando certo: atualmente o Instagram é a rede social


com maior engajamento dos usuários.

E é claro que esse fator vem atraindo forte investimento em anúncios, já


que as marcas procuram cada vez mais obter resultados por meio
dessas plataformas.

Essa lógica também vale para o Instagram Stories, o queridinho do


momento entre os usuários: mesmo seguindo uma ordem temporal, na
qual as histórias mais recentes tendem a aparecer primeiro, o algoritmo
privilegia as histórias das contas com as quais o usuário mais engaja.

Assim, o engajamento no Stories e nos posts do feed, juntamente com o


comportamento de busca do usuário, as pessoas com as quais conversa
e as contas que ele segue, afetam a ordem das postagens.

Como performar bem no Instagram?

Podemos perceber que o Instagram é uma rede que privilegia muito a


proximidade entre os usuários, tanto com outros usuários quanto com
contas de empresas.

Por isso, o grande segredo nessa rede é promover essa proximidade.


Como fazer isso? Destrinchamos algumas dicas para você:

 Descubra o melhor horário de postagem: faça testes e entenda em


que momento seus posts recebem mais engajamento. Você pode
começar esses testes seguindo as recomendações deste post,
mas veja o que funciona melhor para a realidade da sua marca.
 Crie um bom conteúdo visual: o Instagram é uma rede visual, na
qual as imagens e vídeos dominam claramente sobre os
elementos textuais. Assim, investir em uma produção de qualidade
e em uma identidade de marca é fundamental. Sair da obviedade
das fotos e investir em vídeos também pode ser um diferencial, já
que esse é um formato cada vez mais valorizado.
 Crie chamadas para a ação: convide as pessoas a comentar em
seus posts, marcar amigos, enviar mensagens diretas ou clicar no
link da bio. Isso aumenta o engajamento, o que é um bom sinal
para o algoritmo.
 Use hashtags: usar hashtags estratégicas (você pode aprender
como fazer isso neste post sobre o assunto) aumenta o alcance
das postagens, facilita que usuários de encontrem e, se a sua
postagem tiver altos índices de engajamento, ainda pode aparecer
em destaque na categoria da hashtag.
 Responda os comentários e menções: se uma pessoa menciona
sua marca (seja em uma postagem do feed ou do Stories) ou faz
um comentário em sua postagem, não deixe de responder e
engajar. Isso porque o Instagram também analisa o seu
engajamento para avaliar a relevância da sua conta e de suas
postagens.
 Invista no Stories: o formato dos Stories, inaugurado pelo
Snapchat, é sem dúvidas um dos mais promissores para o futuro
das redes sociais. Cada vez mais as pessoas consomem esse tipo
de conteúdo, portanto é essencial que as marcas invistam nisso.
Além de ser um bom sinal para o algoritmo que você está
constantemente produzindo conteúdo, estar sempre no Stories
deixa a marca da sua empresa gravada na mente das pessoas.

Quer descobrir mais dicas? Separei quatro conteúdos que vão ajudá-lo a
ter uma perfomance incrível no Instagram:

APRENDA AINDA MAIS SOBRE O INSTAGRAM


– Leia este post completo sobre o algoritmo do Instagram com tudo
sobre o assunto!
–Aprenda a fazer Marketing no Instagram e obtenha resultados
exponenciais
–Confira este ebook e aprenda a obter resultados orgânicos no
Instagram (sem anúncios!)
– Você já tem uma estratégia consistente no Instagram Stories?
Descubra agora mesmo como usar esse recurso para alavancar seus
resultados!

Algoritmo do Facebook
O Facebook inaugurou o algoritmo nas redes sociais, já que foi a primeira
rede a pensar em algo para categorizar os posts. Isso porque o grande
volume de postagens era demais para os usuários e fazia com que os
posts se perdessem rapidamente pelo feed.
Pensando nos padrões de comportamento do usuário, nas páginas mais
relevantes e no engajamento, o Facebook começou a desenvolver
algoritmos com o propósito — pelo menos em teoria — de deixar o
conteúdo mais relevante para cada indivíduo.

Até hoje ninguém desvendou o algoritmo da rede — o que seria bastante


pretensioso, já que ele leva em conta centenas de milhares de fatores.
Mas alguns pontos cruciais em que o algoritmo do Facebook se baseia
são:

 a gama de postagens disponíveis para serem mostradas;


 quem postou o conteúdo e o nível de relacionamento do usuário
com aquela pessoa (ou marca);
 o engajamento da rede de amigos do usuário com aquela
postagem;
 o potencial de engajamento daquela postagem para o usuário, o
que leva em conta o engajamento e comportamento prévio dele.
Assim, por exemplo, se o algoritmo entendeu que você prefere
assistir vídeos do que ler textos, cada vez mais vídeos aparecerão
em seu feed. Isso acontece também com a temática e diversos
outros elementos.

Além disso, o Facebook criou uma espécie de sistema de pontuação de


relevância da postagem, que é baseado em diversos fatores, que são:

 nível de informação da postagem: notícias e pautas quentes


recebem prioridade;
 autenticidade da postagem: postagens nativas são consideradas
mais relevantes;
 potencial de receber cliques: postagens com conteúdo visual
(imagens e vídeos) têm preferência;
 potencial de engajamento: quanto mais reações, comentários e
compartilhamentos, mais aquela postagem é mostrada, pois há
mais chances do usuário engajar;
 por quanto tempo o usuário vai se relacionar com aquela
postagem: um dos comportamentos mais comuns atualmente é
deslizar o feed incansavelmente. Assim, quando você interrompe
esse comportamento para consumir realmente uma postagem, o
Facebook entende que ela é mais relevante.
No entanto, desde sua criação, o algoritmo da rede já sofreu várias
alterações, passando por diversas alterações.

No início deste ano, Mark Zuckerberg, fundador da rede, anunciou que o


Facebook passará a priorizar cada vez mais as postagens feitas por
amigos e familiares e em grupos que o usuário participa.

Logo, esse é um novo fator que influencia na ordem em que o post


aparecerá.

Atualmente, podemos perceber que o feed do Facebook é, em sua


maioria, dominado por postagens de grupos, de pessoas com as quais
interagimos e das páginas que estamos mais engajados.

Todos esse fatores, é claro, têm várias implicações para as marcas que
fazem marketing no Facebook. Por isso, vamos ao que interessa:

Como performar bem no Facebook?

Embora nem sempre as pessoas percebam as mudanças no algoritmo


da rede de forma clara, as marcas entendem muito bem como cada
pequena alteração impacta fortemente o alcance.

Com a nova proposta do Facebook de aproximar as pessoas, isso ficou


ainda mais evidente. Agora o feed é praticamente dominado por
postagens de amigos, familiares e grupos. Assim, o potencial de
resultados orgânicos da marca reduziu drasticamente.

Isso, é claro, não é livre de intenções. O Facebook (e sua rede de


aplicativos) é a principal plataforma de anúncios de redes sociais da
atualidade. Investir em Facebook Ads hoje é inevitável para marcas que
queiram ampliar o alcance, impactar mais pessoas e, claro, gerar
negócios.

Essa é a primeira dica para quem quer performar bem no Facebook e


recomendo fortemente que você aplique-a, pois isso realmente tem o
potencial de alavancar os resultados. Aprenda tudo sobre Facebook Ads:
Além disso, algumas dicas para aplicar em sua estratégia na rede são na
rede são:

 convide as pessoas que te seguem a marcar sua página como “ver


primeiro”, assim suas postagens sempre aparecerão para elas;
 incentive o usuário a marcar outras pessoas nos comentários das
postagens, ampliando o alcance e fazendo com que mais pessoas
engajem;
 considere criar um bot para Messenger, oferecendo maiores
pontos de interação e conversão para o usuário. (Você pode
aprender tudo sobre chatbots neste ebook completo.)

Entenda mais a fundo o algoritmo do Facebook e entenda como


performar bem nesta rede social com esses materiais:

DOMINE SUA ESTRATÉGIA NO FACEBOOK


– Marketing no Facebook: um guia completo para ter sucesso na rede
– Entenda como funciona o algoritmo neste post completo
– Confira aqui 5 hacks para desvendar o algoritmo da rede

Algoritmo do LinkedIn
O LinkedIn é a maior rede social profissional do mundo e traz
oportunidades incríveis para as pessoas se posicionarem como
autoridade no mercado. É também um espaço promissor para as marcas
manterem uma postura mais voltada para negócios.

Mas vamos ao que interessa: como o algoritmo do LinkedIn funciona?


Bom, você já deve estar acostumado a ver as “postagens clássicas do
LinkedIn” se usa a rede sempre, mas vamos entender como isso
acontece?
Uma postagem no LinkedIn passa por quatro estágios do algoritmo que
definem sua relevância:

1. Avaliação do conteúdo: quando um conteúdo é postado no


LinkedIn, o algoritmo aplica um filtro para categorizá-lo entre três
categorias: spam, baixa qualidade ou bom. Não preciso nem dizer
que postagens da categoria “bom” são privilegiadas, certo?
2. Testes para mensurar engajamento: o conteúdo postado (que
estejam na categoria “bom” ou, no mínimo, “baixa qualidade”) são
mostrados no feed e o algoritmo analisa o engajamento inicial da
postagem. Postagens com bons índices de engajamento são
consideradas positivas para o algoritmo.
3. Checagem de postagens virais: ok, vamos supor que sua
postagem passou pelos dois estágios anteriores e conseguiu
muitos likes e comentários. Nesse estágio, ela passará por uma
checagem de autenticidade para conferir se sua conta (ou as
contas que engajaram) não são falsas e estão criando um
engajamento ilusório. O algoritmo faz isso por meio da checagem
do seu perfil, conexões e informações disponibilizadas.
4. Revisão “manual” do conteúdo: essa é a fase que mais se destaca
no algoritmo do Linkedin  — a rede tem funcionários para analisar
individualmente as postagens que já passaram pelos estágios
anteriores e conseguiram sucesso. Isso é parte dos esforços da
rede para conseguir entender o que sua audiência realmente gosta
e também oferecer esse conteúdo de forma destacada. Nesse
estágio, os conteúdos bem avaliados têm seu “tempo de vida”
estendido, recebendo maior prioridade mesmo com o passar dos
dias.
Além desse processo, o LinkedIn leva em conta alguns fatores de
engajamento e uso para organizar o feed. Os principais são:


 o nível do perfil: perfis mais completos têm mais chances de
ter o conteúdo bem avaliado;
 atividade do usuário na rede: postagens de usuários mais
engajados e que oferecem conteúdo com frequência têm
mais chance de performar bem;
 conexões: atividades de suas conexões são priorizadas no
feed, tanto na forma de postagens quanto de comentários;
 área de atuação e local de trabalho: o algoritmo leva em
conta a área e empresa de quem fez a postagem para
mostrar conteúdos relevantes para sua atuação profissional.

DOMINE SUA ESTRATÉGIA NO LINKEDIN


– Curso de Marketing Pessoal no LinkedIn da Universidade Rock Content
– Marketing de Conteúdo para LinkedIn: como fazer e o que postar
– Conheça 15 ferramentas do LinkedIn fundamentais para sua estratégia
de Marketing Digital

Como performar bem no LinkedIn?

Conseguir engajar no LinkedIn é fundamental. Para pessoas, significa a


oportunidade de crescer profissionalmente e alavancar sua carreira. Para
empresas, é essencial para se posicionar como autoridade de mercado,
criar uma audiência altamente segmentada no âmbito profissional e
conseguir oportunidades de negócio B2B.

Confira algumas dicas para que sua marca se destaque na rede:



 crie conteúdo nativo: se você acessar o LinkedIn
agora, vai perceber que a maioria das postagens são
textos, vídeos e imagens postadas diretamente na
plataforma. Isso não significa que você não possa
repostar conteúdos do seu blog ou site, e sim que
você deve considerar usar conteúdos nativos para
aparecer no feed e engajar sua audiência.
 assuma uma linguagem profissional: você não precisa
abrir mão de ser leve e se comunicar de forma natural
com sua audiência para assumir uma linguagem
profissional, que faz toda a diferença no LinkedIn.
Prestar atenção em como sua marca se comunica é
essencial em todas as redes sociais, mas no LinkedIn
essa postura voltada para temáticas de mercado exige
um posicionamento mais sóbrio. Além disso, a rede
parece priorizar um tipo de linguagem e estrutura
específicas, o que nos leva ao próximo tópico:
 preze pela escaneabilidade: já reparou que alguns
textos do LinkedIn parecem até um poema?
Parágrafos curtos, frases impactantes. Essa fórmula
funciona bem na rede para engajar o usuário, mas não
exagere! Prezar pela escaneabilidade é fundamental,
mas o exagero deixará seus posts pedantes — o que é
inglês é chamado de “broem”, ou seja, uma
embromação.
 posicione-se como autoridade: faça vídeos explicando
um assunto relevante, poste cases de sucesso e
entrevistas. O LinkedIn é o espaço para mostrar
provas sociais de que sua empresa tem soluções
relevantes para o mercado;
 poste conteúdo inspirador: conteúdos que incentivam,
inspiram e motivam são um tipo de postagem que
engaja muito no LinkedIn. Portanto, considere elaborar
postagens com essa temática, sempre prezando pelo
bom senso e sem exageros.
 torne-se um influenciador na rede: criar uma
audiência no LinkedIn é o segredo de vários
influenciadores. A rede, inclusive, seleciona
influenciadores que tornam-se “Top Voices” do
LinkedIn, o que engaja ainda mais os usuários.
 considere usar o Pulse: o Pulse é a plataforma de
publicação de conteúdo do LinkedIn e elaborar uma
estratégia de produção e repostagem de conteúdos
mostra engajamento por parte da marca com a rede e
aumenta a audiência.

Se você quer entender mais sobre como fazer Marketing no


LinkedIn, confira este ebook completo com tudo sobre o assunto.
Algoritmo do Twitter
Embora o Twitter performe testes constantes em seu algoritmo, ele tem
uma particularidade em relação às outras redes já citadas aqui: o feed do
Twitter não é totalmente coordenado pelo algoritmo.

Isso faz total sentido, tendo em vista que a rede não pode perder seu
caráter cronológico, tendo em vista que ela está ali para que os usuários
reportem os últimos acontecimentos.

Apesar disso, o Twitter tem sim um algoritmo que é baseado,


principalmente, no comportamento prévio do usuário.

O algoritmo analisa as temáticas, formato de conteúdo e seu


relacionamento com a conta que postou o tweet. Além disso, é levado
em conta o engajamento daquele tweet em si.

Essa análise é feita para todos os tweets e influencia nas três categorias
criadas pela rede e que veremos a seguir:



 Tweets rankeados: ao abrir o Twitter, o usuário é
apresentado à alguns tweets selecionados pela
própria rede antes de qualquer outra coisa. Os fatores
analisados para rankear esses tweets são, como
mencionamos, tanto o comportamento do usuário
quanto tweets que tiveram algum destaque e foram
engajantes para a rede de seguidores do usuário.
Independente do critério, os tweets rankeados são
selecionados com base no interesse da rede em gerar
mais engajamento.
 Caso você tenha perdido: essa seção traz tweets mais
antigos que, como o nome indica, podem ter sido
perdidos pelo usuário em seu momento original de
postagem. São tweets considerados relevantes, como
notícias e tweets com muito engajamento.
 Timeline do Twitter: essa seção todos conhecem. É
nela que aparecem todos os tweets em ordem
cronológica reversa. Mas, além deles, alguns tweets
também aparecem nessa parte, como curtidos ou
respondidos por amigos, anúncios e contas sugeridas.

Grupo de Algoritmos e Protocolos para Redes (Algorithms and


Protocols for Networking, AlProNet)
 

DESCRIÇÃO

O grupo de Algoritmos e Protocolos pare Redes tem por objetivo desenvolver e/ou avaliar o
desempenho de soluções computacionais para redes de computadores, com ênfase em
protocolos e algoritmos para redes sem fio.

LINHAS DE PESQUISA  

 *Projeto/espeficicação/implementação de protocolos para redes de computadores 

    -Protocolo de Roteamento: métricas, algoritmos, procedimentos de descoberta de


topologia, etc 

    -Protocolo Acesso ao meio: estudo de parâmetros

    -Gerenciamento de espectro em redes sem fio, redes de rádio cognitivo

    -Implementação/extensão de protocolos de código aberto para Linux, android, ios,


Windows, etc

 *Projeto e/ou aplicação de algoritmos e técnicas para solução de problemas EM redes de


computadores: 

   -Algoritmos incrementais

   -Algoritmos em grafos (Exemplos: caminhos mínimos, mitigação de interferência via


coloração, etc)
   -Implementação/extensão de algoritmos de código aberto 

 *Avaliação de desempenho: analítica, simulação ou experimentação

     - Avaliação analítica aspectos envolvendo redes de computadores (cálculo de vazão,


capacidade, etc)

     - Análise de complexidade média de algoritmo para redes de computadores

     - Avaliação de desempenho de serviços e aplicações em redes de computadores (e.g.


qualidade de serviço multimidia) 

     - Algoritmos e técnicas para simulação de sistemas de comunicação e protocolos

     - Implementação de protocolos e algoritmos de redes em simulador

     - Especificação formal de protocolos de comunicação (com possibilidade de parceria ex.:


prof. Dr. Gleifer Vaz)

     - Caracterização estatística de tráfego ou parâmetros de rede

INFORMAÇÕES IMPORTANTES PARA QUEM BUSCA ORIENTAÇÃO NO ALPRONET

0. Se você realmente quiser ser orientado por mim, tenha em mente apresentar o seguinte
perfil:

- Interesse em trabalhar com algum tema na área do professor

- Ser auto-didata

- Alunos que tenham interesse em fazer do seu trabalho uma experiência de iniciação à
pesquisa científica.

- Alunos que tenham interesse em aprender a desenvolver sua capacidade pró-ativa, sendo
capazes de formular e argumentar em favor de suas próprias hipóteses.

- Alunos que tenham interesse em aprender a desenvolver o modo de escrita científico com
interesse em publicar os resultados de seu trabalhos em conferências, simpósios, workshops,
periódicos e/ou órgãos de publicação de patentes.

- Alunos que tenham interesse em aprender a trabalhar em ambiente shell/Linux.

1. Qual a responsabilidde do professor?

  Guiar o aluno através de caminhos que lhe darão possibilidade de definir sua própria
proposta (e.g. discutir ideias trazidas pelo aluno, sugerir temas, definir atividades/conteúdo
a serem estudados para verificar viabilidade da proposta, etc);. Em alguns casos o professor
também poderá sugerir uma proposta ao aluno, o qual deverá apresentar os requisitos
básicos por ela exigidos.

 
 

2. O que é uma proposta?

 Especificação coerente e consistente de um problema com base em referências sólidas e


acompanhado de uma hipótese/abordagem de solução. A hipótese/abordagem de solucão
deverá ser igualmente convincente para poder ser aceita como trabalho. Neste sentido o
aluno deverá indicar um conjunto de referências e de ferramentas de apoio e como elas o
ajudarão a implementar e testar suas hipóteses. Veja um exemplo resumido e hipotético de
uma proposta no anexo A.   

3. Fluxograma de ilustração do processo de orientação

imagens: 

Você também pode gostar