| | | | |

2.1 Computador

Compre o e-book deste material aqui!

Um computador é um sistema computacional de elementos físicos (hardware) e elementos lógicos (software).

O hardware são suas partes mecânicas, elétricas e eletrônicas como: fonte de energia, teclado, mouse/painel tátil, monitor/tela, dispositivos de armazenagem de dados (HDD, hard disk drive; SSD, solid-state drive; RAM, random-access memory; etc.), dispositivos de processamento (CPU, central processing unit, GPU, graphics processing unit), conectores de dispositivos externos (microfone, caixa de som, fone de ouvido, USB, etc.), placa mãe, etc..

O software é toda a informação processada pelo computador, qualquer código executado e qualquer dado usado nas computações.

Refer to caption
Figura 2.1: Arquitetura de computador de von Neumann.

Os computadores que comumente utilizamos seguem a arquitetura de John von Neumann11endnote: 1John von Neumann, 1903 - 1957, matemático húngaro, naturalizado estadunidense. Fonte: Wikipédia: John von Neumann., que consiste em dispositivo(s) de entrada de dados, unidade(s) de processamento, unidade(s) de memória e dispositivo(s) de saída de dados (Figura 2.1).

  • Dispositivos de entrada e saída

    São elementos do computador que permitem a comunicação humana (usuária(o)) com a máquina.

    • Dispositivos de entrada

      São elementos que permitem o fluxo de informação da(o) usuária(o) para a máquina. Exemplos são: teclado, mouse/painel tátil, microfone, etc.

    • Dispositivos de saída

      São elementos que permitem o fluxo de informação da máquina para a(o) usuária(o). Exemplos são: monitor/tela, alto-falantes, luzes espia, etc.

  • Unidade central de processamento

    A CPU (do inglês, Central Processing Unit) é o elemento que processa as informações e é composta de unidade de controle, unidade lógica e aritmética e de memória cache.

    • Unidade de controle

      Coordena as execuções do processador: busca e decodifica instruções, lê e escreve no cache e controla o fluxo de dados.

    • Unidade lógica/aritmética

      Executa as instruções operações lógicas e aritméticas, por exemplo: executar a adição, multiplicação, testar se dois objetos são iguais, etc.

    • Memória cache

      Memória interna da CPU muito mais rápida que as memórias RAM e dispositivos e armazenamento HDD/SSD. É um dispositivo de memória de pequena capacidade e é utilizada como memória de curto prazo e diretamente acessada.

  • Unidades de memória

    As unidades de memória são elementos que permitem o armazenamento de dados/objetos. Como memória principal tem-se a ROM (do inglês, Read Only Memory) e a RAM (do inglês, Random Access Memory) e como memória de massa/secundária tem-se HDD, SSD, entre outras.

  • Memória ROM

    A memória ROM é utilizada para armazenamento de dados/objetos necessários para dar início ao funcionamento do computador. Por exemplo, é onde a BIOS (dos inglês, Basic Input/Output System, Sistema Básico de Entrada e Saída) é armazenada. Ao ligarmos o computador este programa é iniciado e é responsável por fazer o gerenciamento inicial dos diversos dispositivos do computador e carregar o sistema operacional (conjunto de programas cuja função é de gerenciar os recursos do computador e controlar a execução de programas).

  • Memória RAM

    Memória de acesso rápido utilizada para dados/objetos de uso frequente durante a execução de programas. É uma memória volátil, i.e. toda a informação guardada nela é perdida quando o computador é desligado.

  • Memória de massa/secundária

    Memória de massa ou secundária são usadas para armazenar dados/objetos por período longo. Normalmente, são dispositivos HDD ou SSD, os dados/objetos são guardados mesmo que o computador seja desligado e contém grande capacidade de armazenagem.

Os software são os elementos lógicos de um sistema computacional, são programas de computadores que contém as instruções que gerenciam o hardware para a execução de tarefas específicas, por exemplo, imprimir um texto, gravar áudio/vídeo, resolver um problema matemático, etc. Programar é o ato de criar programas de computadores.

2.1.1 Linguagem de Programação

As informações fluem no computador codificadas como registros de bits22endnote: 2Usualmente, de tamanho 64-bits. (sequência de zeros ou uns). Há registros de instrução e de dados. Programar diretamente por registros é uma tarefa muito difícil, o que levou ao surgimento de linguagens de programação. Uma linguagem de programação33endnote: 3Código de programação, código de máquina ou linguagem de máquina. é um método padronizado para escrever instruções para execução de tarefas no computador. As instruções escritas em uma linguagem são interpretadas e/ou compiladas por um software (interpretador ou compilador) da linguagem que decodifica as instruções em registros de instruções e dados, os quais são efetivamente executados na máquina.

Existem várias linguagens de programação disponíveis e elas são classificadas por diferentes características. Uma linguagem de baixo nível (por exemplo, Assembly) é aquela que se restringe às instruções executadas diretamente pelo processador, enquanto que uma linguagem de alto nível contém instruções mais complexas e abstratas. Estas contém sintaxe mais próxima da linguagem humana natural e permitem a manipulação de objetos mais abstratos. Exemplos de linguagens de alto nível são: Basic, Java, Javascript, MATLAB, PHP, R, C/C++, Python, etc.

Em geral, não existe uma melhor linguagem, cada uma tem suas características que podem ser mais ou menos adequadas conforme o programa que se deseja desenvolver. Por exemplo, para um site de internet, linguagens como Javascript e PHP são bastante úteis, mas não no desenvolvimento de modelagem matemática e computacional. Nestes casos, C/C++ é uma linguagem mais apropriada por conter várias estruturas de programação que facilitam a modelagem computacional de problemas científicos. Agora, R é uma linguagem de alto nível com diversos recursos dedicados às áreas de ciências de dados e estatística. Usualmente, utiliza-se mais de uma linguagem no desenvolvimento de programas mais avançados. A ideia é de explorar o melhor de cada linguagem na criação de programas eficientes na resolução dos problemas de interesse.

Nestas notas de aula, Python é a linguagem escolhida para estudarmos algoritmos e programação. Trata-se de uma linguagem de alto nível, interpretada, dinâmica e mutiparadigma. Foi lançada por Guido van Rossum44endnote: 4Guido van Rossum, 1956-, matemático e programador de computadores holandês. Fonte: Wikipédia: Guido van Rossum. em 1991 e, atualmente, é desenvolvida de forma comunitária, aberta e gerenciada pela ONG Python Software Foundation. A linguagem foi projetada para priorizar a legibilidade do código. Parte da filosofia da linguagem é descrita pelo poema The Zen of Python. Pode-se lê-lo pelo easter egg Python:

1>>> import this
  • Linguagem interpretada

    Python é uma linguagem interpretada. Isso significa que o código-fonte escrito em linguagem Python é interpretado por um programa (interpretador Python). Ao executar-se um código, o interpretador lê uma linha do código, decodifica-a como registros para o processador que os executa. Executada uma linha, o interpretador segue para a próxima até o código ter sido completadamente executado.

  • Linguagem compilada

    Em uma linguagem compilada, como C/C++, há um programa chamado de compilador (em inglês, compiler) e outro de ligador (em inglês, linker). O primeiro, cria um programa-objeto a partir do código e o segundo gerencia sua ligação com eventuais bibliotecas computacionais que ele possa depender. O programa-objeto (também chamado de executável) pode então ser executado pela máquina.

Em geral, a execução de um programa compilado é mais rápida que a de um código interpretado. De forma simples, isso se deve ao fato de que nesse a interpretação é feita toda de uma vez e não precisa ser refeita na execução de cada linha de código, como no segundo caso. Por outro lado, a compilação de códigos-fonte grandes pode ser bastante demorada fazendo mais sentido quando ele é compilado uma vez e o programa-objeto executado várias vezes. Além disso, linguagens interpretadas podem usar bibliotecas de programas pré-compiladas. Com isso, pode-se alcançar um bom balanceamento entre tempo de desenvolvimento e de execução do código.

O interpretador Python também pode ser usado para compilar o código para um arquivo bytecode, este é executado muito mais rápido do que o código-fonte em si, pois as interpretações necessárias já foram feitas. Mais adiante, vamos estudar isso de forma mais detalhada.

  • Linguagem de tipagem dinâmica

    Python é uma linguagem de tipagem dinâmica. Nela, os dados não precisam ser explicitamente tipificados no código-fonte e o interpretador os tipifica com base em regras da própria linguagem. Ao executar operações com os dados, o interpretador pode alterar seus tipos de forma dinâmica.

  • Linguagem de tipagem estática

    C/C++ é um exemplo de uma linguagem de tipagem estática. Em tais linguagens, os dados devem ser explicitamente tipificados no código-fonte com base nos tipos disponíveis. A retipificação pode ocorrer, mas precisa estar explicitamente definida no código.

Existem vários paradigmas de programação e a linguagem Python é multiparadigma, i.e. permite a utilização de mais de um no código-fonte. Exemplos de paradigmas de programação são: estruturada, orientada a objetos, orientada a eventos, etc.. Na maior parte destas notas de aulas, vamos estudar algoritmos para linguagens de programação estruturada. Mais ao final, vamos introduzir aspectos de linguagens orientada a objetos. Estes são paradigmas de programação fundamentais e suas estruturas são importantes na programação com demais paradigmas disponíveis em programação de computadores.

2.1.2 Instalação e Execução

Python é um software aberto55endnote: 5Consulte a licença de uso em https://docs.python.org/3/license.html. e está disponível para vários sistemas operacionais (Linux, macOS, Windows, etc.) no seu site oficial

https://www.python.org/

Também, está disponível (gratuitamente) na loja de aplicativos dos sistemas operacionais mais usados. Esta costuma ser a forma mais fácil de instalá-lo na sua máquina, consulte a loja de seus sistema operacional. Ainda, há plataformas e IDEs66endnote: 6IDE, do inglês, integrated development environment, ambiente de desenvolvimento integrado Python disponíveis, consulte, como por exemplo, Anaconda.

A execução de um código Python pode ser feita de várias formas.

  • Execução iterativa via terminal

    Em terminal Python pode-se executar instruções/comandos de forma iterativa. Por exemplo:

    1>>> print('Olá, mundo!')
    2Olá, mundo!
    3>>>

    O símbolo >>> denota o prompt de entrada, onde uma instrução Python pode ser digitada. Após digitar, o comando é executada teclando <ENTER>. Caso o comando tenha alguma saída de dados, como no caso acima, esta aparecerá, por padrão, no prompt de saída, logo abaixo a linha de comando executada. Um novo símbolo de prompt de entrada aparece ao término da execução anterior.

  • Execução de um script

    Para códigos com várias linhas de instruções é mais adequado utilizar um aquivo de script Python. Usando-se um editor de texto ou um IDE ditam-se as linhas de comando em um arquivo .py. Então, script pode ser executado em um terminal de seu sistema operacional utilizando-se o interpretador Python. Por exemplo, assumindo que o código for salvo do arquivo path_to_arq/arq.py, pode-se executá-lo em um terminal do sistema com

    1$ python3 path_to_arq/arq.py

    IDEs para Python fornecem uma ambiente integrado, contendo um campo para escrita do código e terminal Python integrado. Consulte, por exemplo, o IDE Spyder:

    https://www.spyder-ide.org/

  • Execução em um notebook

    Notebooks Python são uma boa alternativa para a execução de códigos em um ambiente colaborativo/educativo. Por exemplo, Jupyter é um notebook que roda em navegadores de internet. Sua estrutura e soluções também são encontradas em notebooks online (de uso gratuito limitado) como Google Colab e Kaggle.

2.1.3 Exercícios

E. 2.1.1.

Complete as lacunas.

  1. a)

    Hardware é um elemento físico de um computador.

  2. b)

    Software é um elemento lógico de um computador.

  3. c)

    Teclado e mouse são exemplos de dispositivos de entrada de dados em um computador.

  4. d)

    Monitor/tela e auto-falantes são exemplos de dispositivos de saída de dados em um computador.

  5. e)

    CPU é um dos elementos que processa as informações em um computador.

  6. f)

    As unidades de memória são elementos que permitem o armazenamento de dados/objetos.

Resposta.

a) Hardware; b) lógico; c) entrada; d) dispositivos de saída; e) CPU; f) unidades de memória.

E. 2.1.2.

Complete as lacunas.

  1. a)

    Uma linguagem de programação é um método para escrever instruções para a execução de tarefas no computador.

  2. b)

    Python é uma linguagem de alto nível, de tipagem dinâmica e multiparadigma.

Resposta.

a) tarefas; b) alto; dinâmica

E. 2.1.3.

Verifique qual a versão do sistema operacional que está utilizado em seu computador.

Resposta.

Dica: no seu sistema operacional, busque pelas informações do sistema.

E. 2.1.4.

Verifique os seguintes elementos de seu computador:

  1. a)

    CPUs

  2. b)

    Placa(s) gráfica(s)

  3. c)

    Memória RAM

  4. d)

    Armazenamento HDD/SSD.

Resposta.

Dica: no seu sistema, busque pelas informações do sistema.

E. 2.1.5.

Verifique como entrar na BIOS de seu computador. Atenção! Não faça e salve nenhuma alteração. Modificações na BIOS podem impedir que seu computador funcione normalmente, inclusive, impedir que você inicialize seu sistema operacional.

Resposta.

Dica: cada computador tem sua forma de acessar a BIOS. Verifique o manual ou busque na web pela marca e modelo de seu computador.

E. 2.1.6.

Instale Python no seu computador (caso ainda não tenha feito) e abra um terminal Python. Nele, escreva uma linha de comando que imprima no prompt de saída a frase “Olá, meu Python!”.

Resposta.
1>>> print('Olá, meu Python!')
2Olá, meu Python!
3>>>
E. 2.1.7.

Instale um IDE para Python no seu computador (caso ainda não tenha feito) e use-o para escrever o seguinte script

1import math as m
2print(f'Número pi = {m.pi}')
3print(f'Número de Euler e = {m.e}')

Também, execute o script diretamente em um terminal de seu sistema operacional.

Resposta.

Dica: instale o IDE Spyder, disponível em

https://www.spyder-ide.org/

E. 2.1.8.

Use um notebook Python para escrever e executar o código do exercício anterior.


Envie seu comentário

As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!