Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 1 Introdução à Computação Computadores: • Hardware: – Componentes físicos de um sistema de computação. • Software: – Sequência de instruções a serem seguidas e/ou executadas pelo hardware. Hardware: Memória Principal Unidades de Entrada CPU ULA Memória Secundária Unidades de Saída Hardware: Memória Principal Unidades de Entrada CPU ULA Memória Secundária Unidades de Saída Computadores – Arquitetura Básica • Unidade Central de Processamento (CPU): – É o centro de controle de todo o sistema, onde os cálculos são feitos e as decisões são tomadas. É esta parte que interpreta e executa todas as instruções do computador. • Memória Principal: – A CPU usa a memória do computador para guardar as informações com as quais trabalha. Quando o computador é reinicializado ou desligado, as informações podem ser perdidas. Computadores – Arquitetura Básica • Dispositivos de entrada e saída: – São todos os meios de comunicação entre o computador e os seus usuários (sejam pessoas ou outras máquinas). • Memória Secundária: – Função de guardar os dados que não estão sendo processados no momento. Mesmo desligando o computador, estas informações não se perdem. Computadores - Software • Software Básico ou Sistema Operacional: – É um programa ou um conjunto de programas que faz papel de intermediário entre o aplicativo (programa) e o hardware; – É um gerenciador de recursos, i.e., controla quais aplicações (processos) podem ser executadas, quando, que recursos (memória, disco, periféricos) podem ser utilizados. Linguagens de Programação • Cada linguagem de programação obedece à regras específicas. Essas regras de sintaxe definem como são expressadas as instruções a serem executadas; • Linguagem de Máquina: – Conjunto de códigos binários que são compreendidos pela CPU. • BAIXO NÍVEL: – Codificação baseada em mnemônicos. Dependente do tipo de máquina. • ALTO NÍVEL: – Mais similar à nossa linguagem natural. Linguagens de Programação (Evolução) • Linguagem de Máquina: – Conjunto de códigos binários que são compreendidos diretamente pela CPU. – Exemplo: 0011 001010 001111 Endereço do 2° operando Endereço do 1° operando Código da instrução Linguagens de Programação (Evolução) • BAIXO NÍVEL - Linguagem Assembly: – Codificação baseada em mnemônicos. – Dependente do tipo de máquina. – Precisa ser convertido em linguagem de máquina para poder ser compreendido pela CPU. – Exemplo: ADD A, B Endereço simbólico 2° operando Código da instrução Endereço simbólico 1° operando Linguagens de Programação (Evolução) • ALTO NÍVEL: – Mais similar à nossa linguagem natural. – Independente do tipo de máquina. – Precisa ser convertido em linguagem de máquina para poder ser compreendido pela CPU. – Exemplo: LIQUIDO = SALARIO + COMISSOES - IMPOSTOS Objetivos do curso Definição do problema a ser resolvido Solução do problema na forma de algoritmo Ser Humano Transcrição do algoritmo na forma de programa Compilação do programa Execução do programa Computador Etapas da resolução de problemas usando um computador. Lógica de programação • Algoritmo: – Um algoritmo é uma sequência não ambígua de instruções que é executada até que determinada condição se verifique. – Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos necessários para realizar uma tarefa. – Exemplo: Receita de bolo. Ex: Problema dos canibais e dos missionários • Problema: – Três canibais e três missionários estão viajando juntos e chegam à margem de um rio. Eles desejam atravessar para a outra margem para, desta forma, continuar a viagem. O único meio de transporte disponível é um barco que comporta no máximo duas pessoas. Há uma outra dificuldade: em nenhum momento o número de canibais pode ser superior ao número de missionários pois desta forma os missionários estariam em grande perigo de vida. Como administrar a travessia? Ex: Problema dos canibais e dos missionários • http://www.novelgames.com/flashgames/game.php?id=54