Para podermos entender a lógica de programação é necessário a compreensão de determinados conceitos. Sendo assim, neste primeiro capítulo iremos revisar conteúdos que,embora básicos, nos ajudarão muito.
Começaremos com os conceitos de software e hardware que, juntos, formam o computador como conhecemos. O hardware é a parte física do computador, formado pela UCP, pela memória e por dispositivos de entrada e saída.
A UCP, unidade central de processamento, é responsável por executar os programas que estão armazenados na memória. Já a memória é responsável por armazenar as informações, programas e dados, que serão manipuladas pela máquina. Por fim, tem-se os dispositivos de entrada e saída, que são a forma como o computador se comunica com meio externo, como por exemplo o teclado, mouse e o monitor.
O software é a parte não física do computador, ou seja, o sistema operacional e os programas. O sistema operacional é o responsável por fazer a comunicação entre o hardware e os outros programas. Alguns exemplos de sistemas operacionais são: Mac OS, Windows, Linux e Android.
Na imagem abaixo nota-se a relação entre software e hardware:

O computador é um dispositivo que processa informações, das quais um bit é a menor parcela possível de ser processada. Na prática, o bit é um valor binário, ou seja, assume valores de 0 ou 1, normalmente entendidos como ligado ou desligado, de forma que vários bits juntos codificam informações, através do chamado código de máquina. De uma forma mais simples, o código de máquina é quando vemos em um filme alguém hackeando e aparecem várias zeros e uns na tela, como na imagem a seguir:

Para facilitar a leitura, aglomeramos os bits em grupos, de forma que cada conjunto de 8 bits é chamado de byte. Um kB (kilobyte) equivale a 1024 bytes, um MB (megabytes) a 1024kilobytes, um GB (gigabyte) a 1024 megabytes e assim por diante.
Foi citado anteriormente que bits são números binários, mas como funciona o sistema numérico binário? Cotidianamente, usamos o sistema decimal, que possui o número 10 como base, utilizando os 10 algarismos que vão de 0 a 9. Já o sistema binário utiliza apenas dois algarismos: o 0 e o 1. No sistema binário os números são escritos a partir de potencias de dois, como no exemplo abaixo:

Essa transformação é feita da seguinte forma:
1x(2^4)+1x(2^3)+0x(2^2)+1x(2^1)+1x(2^0) = 16 + 8 + 0 + 2 + 1 = 27
Por fim, temos também o sistema hexadecimal, que é composto por 16 algarismos que vão de 0 a F, sendo que A, B, C, D, E e F substituem, respectivamente, 10,11,12,13,14 e 15.
Podemos perceber na tabela abaixo a equivalência entre números binários, decimais e hexadecimais.
BINÁRIO | DECIMAL | HEXADECIMAL |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
10 | 2 | 2 |
11 | 3 | 3 |
100 | 4 | 4 |
101 | 5 | 5 |
110 | 6 | 6 |
111 | 7 | 7 |
1000 | 8 | 8 |
1001 | 9 | 9 |
1010 | 10 | A |
1011 | 11 | B |
1100 | 12 | C |
1101 | 13 | D |
1110 | 14 | E |
1111 | 15 | F |
Como já citado, uma linguagem de programação é a forma como nos comunicamos com o computador. Essas linguagens podem ser mais ou menos parecidas com a linguagem humana. As linguagens de alto nível são as mais parecidas e as de baixo nível, as menos.
As linguagens de alto nível são mais simples e fáceis de aprender, o que as torna mais baratas. Porém, por serem mais parecidas com a linguagem humana, são menos eficientes se forem analisadas em relação ao aproveitamento do hardware disponível. Alguns exemplos são: Python, JS (JavaScript), entre outras.
Já as linguagens de baixo nível são mais parecidas com a linguagem de máquina. Por serem mais complexas para o entendimento humano, elevam o custo da mão-de-obra e o tempo de solução de problemas. Contudo, aproveitam melhor o hardware disponível e, por isso, são muito utilizadas quando o hardware é limitado. O principal exemplo de linguagem de baixo nível é o Assembly.
Mas se o computador só entende linguagem de máquina e nós programamos em diversas outras linguagens, como o computador nos entende? O responsável por fazer essa tradução é o compilador ou o interpretador. Dessa forma, o compilador nada mais é do que um tradutor que, geralmente, traduz uma linguagem de alto nível em uma linguagem de baixo nível.
🔗 Para acessar todos os capítulos, visite a página: Livro de Lógica de Programação em Python.