Algoritmos, Programas e Máquinas


O que é Computação?


  • Computação não é sobre computadores, mas sobre processamento de informação
    • A Computação é a ciência de resolução de problemas
    • A ferramenta universal que usamos para resolver esses problemas é a máquina de processar informação, os computadores.


O que é Ciência da Computação


  • Estudo sistemático e teórico dos processos algorítmicos que descrevem e transformam a informação
    • Abrange a teoria da computação, o projeto e a arquitetura de sistemas de computação e o desenvolvimento de software e hardware.
  • Em termos simples:
    • É a arte e a ciência de resolver problemas através da criação de algoritmos (sequências lógicas de passos) e da programação de máquinas (computadores) para uma execução rápida e eficiente.


O que são Sistemas de Informação?


  • Sistemas de Informação (SI) são muito mais do que apenas softwares ou computadores
    • Representam um campo do conhecimento e um conjunto de componentes essenciais para o funcionamento e a estratégia de qualquer organização moderna.



  • Numa definição mais abrangente, um Sistema de Informação é um conjunto organizado de elementos inter-relacionados que trabalham juntos para coletar, processar, armazenar e distribuir dados e informações, apoiando as operações, a gestão e o processo de tomada de decisão dentro de uma organização.


Resumo


  • A chave para o processamento da informação reside em três conceitos interligados:
    • Algoritmo: A ideia de como resolver. (O "o quê" e "como").
    • Programa: A tradução dessa ideia para a máquina. (O "código").
    • Máquina: O executor da tradução. (O "hardware").


Foco Principal


  • Enquanto outros campos de TI (Tecnologia da Informação) podem focar em aspectos práticos (como sistemas de informação ou engenharia de hardware), a Ciência da Computação possui um forte embasamento teórico e matemático.


  • Seus principais focos incluem:
    • Teoria da Computação: Estudo dos limites e possibilidades da computação (o que pode ou não ser resolvido por um computador).
    • Algoritmos e Estruturas de Dados: O desenvolvimento de receitas eficientes para processar informações.
    • Linguagens de Programação: A criação e o estudo de linguagens que permitem a comunicação com o computador.
    • Arquitetura de Sistemas: Entendimento de como o hardware e o software se organizam para formar sistemas funcionais.


O Conceito Fundamental: O Algoritmo


  • O algoritmo é a base de tudo
    • É uma receita, um passo a passo finito e não ambíguo para resolver um problema.



  • Definição:
    • É uma sequência finita e ordenada de passos que resolve um problema específico.


  • Analogia:
    • Instrução
      • Cada passo do manual
        • Ex: "Prenda a peça 'A' na peça 'B' usando o parafuso '1'"
          • Uma instrução clara e não ambígua
    • Ordem
      • A ordem sequencial dos passos
        • Se você prender o puxador antes de montar a gaveta, o resultado será um erro
          • O algoritmo deve ser seguido na ordem exata para ser correto
    • Finitude
      • O manual tem um número limitado de passos
        • A montagem tem um fim
          • Um algoritmo não pode ser um processo infinito
    • Entrada (Input)
      • A caixa de peças, parafusos, porcas, etc
        • Os dados brutos que o algoritmo deve processar
          • Dados de entrada serão processados
    • Saída (Output)
      • O móvel montado e funcional
        • A solução correta e esperada do problema
          • O resultado final é o que se esperava no início.


Abstração


  • Algoritmos não precisam de computadores. Eles existiam na matemática (Euclides) muito antes da eletricidade. Eles são uma entidade abstrata e universal.



  • De Algoritmos a Programas
    • Se o algoritmo é uma receita, o programa é a receita escrita em uma linguagem que o cozinheiro (a máquina) entende.
  • Definição:
    • Um programa é a implementação formal de um ou mais algoritmos, escrita em uma linguagem de programação específica.
  • O Papel da Linguagem:
    • Pense em traduzir a receita de bolo do português para o "linguajar" da sua máquina (Python, Java, etc.). Cada linguagem tem suas regras (sintaxe).
  • Instruções e Dados:
    • O programa manipula dados (ingredientes) seguindo instruções (passos da receita).


A História das Máquinas de Processar Informação


  • Como a Máquina evoluiu para executar nossos Programas?





  • Níveis e Funções
  • Aplicação/Usuário
    • Resolver o problema final do usuário
      • Um aplicativo de streaming
        • Spotify, Netflix
  • Software de Sistema
    • Gerenciar recursos e fornecer serviços ao software de aplicação.
      • Sistema Operacional
        • Windows, Linux, iOS
  • Linguagens de Máquina
    • Conjunto de instruções binárias diretas (0s e 1s) que o processador entende
      • Código binário bruto
  • Hardware
    • Executar fisicamente as instruções binárias
      • CPU (Processador), Memória (RAM), Placa- Mãe.


  • O Loop Fechado:
    • Você usa um Programa (Aplicação)
    • O Sistema Operacional traduz as requisições em comandos
    • O Hardware (CPU) executa esses comandos como operações elétricas
    • O resultado, correto e eficiente, retorna ao usuário.


  • Ponto-chave:
    • Um bom cientista de computação entende que precisa de um bom algoritmo (ideia)
      • traduzido em um bom programa (código)
        • para ser executado em uma boa máquina (hardware/sistema operacional)
    • A falha em qualquer nível (corretude, confiabilidade ou eficiência) compromete a qualidade final.


  • Conclusão:
    • Computação é Engenharia de Abstração: Você aprende a transformar uma ideia abstrata (algoritmo) em uma solução concreta (programa) que é executada por física pura (máquina).


  • Questões: