Programação Para
Não Programadores
Objectivos:
• Identificar o componente essencial de um
  computador na execução de tarefas.

• Distinguir o componente essencial de
  componentes periféricos.

• Compreender o que é um programa
  informático.

• Escrever um programa simples.
O que é o CPU?
Visão Caixa Negra
                            Unidade de Processamento
                                    Central




            E                        CPU                  S




Entrada de dados                                        Saída de dados
(sensores, interfaces, …)                         (dispositivos, armazenamento, …)
Arq. Von Neumann do CPU

          Memória Primária
                                         Dados




                             Controlo
  Dados




                                                   Entrada e
                                                     Saída




  ULA                        UC         Controlo
O Processador
Os Periféricos
• São a interface entre o mundo e o processador

• De entrada => fornecem dados ao CPU
  o Sensores
  o Interfaces para humanos (teclado, rato, etc…)


• De saída => permitem ver resultados ou
  controlar operações
  o   Monitores
  o   Discos de armazenamento
  o   Luzes
  o   Motores
Programas Informáticos
Programas e Algoritmos
• Um programa informático é uma sequência
  de instruções para o computador executar
  tarefas.

• Um algoritmo é uma sequência de
  instruções para executar uma só tarefa.

• Um programa é composto por um ou mais
  algoritmos.
Linguagens de Programação
• Instruções, ao nível do processador, são
  conjuntos de 1s e 0s,

• 1s e 0s realizados por sinais eléctricos

                                       (…)
                       01100110 01010011 00110101 01001010
          CPU          01110101 10101010 01001010 01011110
                       01111100 11111111 00001010 01010100
                                       (…)
Linguagens de Programação
• Padrão que expressa instruções para o
  computador.

• Contém regras sintácticas e semânticas.

• O documento escrito por um humano é
  traduzido para uma linguagem de
  máquina, com a representação correcta
  de 1s e 0s
Baixo Nível vs. Alto Nível
Baixo Nível                                 Alto Nível
     -           Facilidade na escrita         +
     -        Facilidade na interpretação      +
 (criptico)                                 (natural)
     +        Volume de código por tarefa      -



• A linguagem de alto nível é mais natural
  para o humano e os domínios de
  conhecimentos.
Baixo Nível vs. Alto Nível
(…)
                                                    (…)
lernum proc
push ax
                                                    valor = ler_numero_do_teclado();
mov ah, 09h
int 21h
                                                    (…)
pop ax
ret
lernum endp
(…)


                              (…)
              01100110 01010011 00110101 01001010
              01110101 10101010 01001010 01011110
              01111100 11111111 00001010 01010100
              01100110 01010011 00110101 01001010
              01110101 10101010 01001010 01011110
              01111100 11111111 00001010 01010100
              01100110 01010011 00110101 01001010
              01110101 10101010 01001010 01011110
              01111100 11111111 00001010 01010100
              01100110 01010011 00110101 01001010
              01110101 10101010 01001010 01011110
              01111100 11111111 00001010 01010100
                              (…)
Instruções
• Expressões que representam uma operações.

• Uma sequência de instruções permite realizar
  trabalho complexo

• Podemos agrupar instruções em estruturas
  chamadas de procedimentos, funções ou
  métodos.
                Soma (número , número)

               Nome     Lista de parâmetros
Experiência com
 Programação
Comando de Robô
           • Controlamos um robô que
             segue as instruções que
             programamos

           • Fabricante disponibiliza 3
             instruções:
             o Mover (F|R, distancia)   (F=frente; R=inverso)
>
             o Rodar (H|A, nº graus)    (H=Horário;
               A=Antihorário)
     fim
             o Buzinar()
Exemplo
                          Mapa:

             >


                                             fim




Objectivo:                        Operações Disponíveis:

• Programar o robô para              Mover (F|R, distancia)
  percorrer o caminho                      (F=frente; R=inverso)

  apresentado.                       Rodar (H|A, nº graus)
                                           (H=Horário; A=Antihorário)
                                     Buzinar()
• Buzinar à chegada.
Solução
               Mapa:

>


                                                fim




Solução:

Mover (F, 4)   //move 4 casas para a frente
Rodar (H,90)   //roda 90º no sentido horário
Mover (F, 2)   //mover 2 casas para a frente
Rodar (A,90)   //roda 90º no sentido anti-horário
Mover (F, 3)   //mover 3 casas para a frente
Buzinar()      //emite sinal sonoro
Exercício
Solução
               Mapa:

                          >



      fim


Solução:

Mover (F, 1)   //move 1 casas para a frente
Rodar (H,90)   //roda 90º no sentido horário
Mover (F, 2)   //mover 2 casas para a frente
Rodar (H,90)   //roda 90º no sentido horário
Mover (F, 4)   //mover 4 casas para a frente
Buzinar()      //emite sinal sonoro
Solução
                Mapa:




                                  fim
       >



Solução:

Mover (F, 2)    //move 2 casas para a frente
Rodar (H, 90)   //roda 90º no sentido horário
Mover (F, 4)    //mover 4 casas para a frente
Rodar (H, 90)   //roda 90º no sentido horário
Mover (F, 2)    //mover 2 casas para a frente
Buzinar()       //emite sinal sonoro
Concluíndo…
• A escrita de um programa envolve um processo de
  decomposição de uma tarefa.

• As instruções são as etapas elementares da tarefa.

• Quanto mais alto nível, mais simples é o nosso
  trabalho de descrever esse processo.

• Quanto mais baixo nível, mais elementar são as
  instruções, exigindo um maior número de passos.
Resumo
• O CPU é a componente central de um
  computador na execução de instruções.

• Os elementos periféricos permite interacção
  do mundo com o CPU na realização de
  trabalho.

• Um programa é uma sequência de
  instruções para a realização de uma tarefa.

Programacão para não programadores

  • 1.
  • 2.
    Objectivos: • Identificar ocomponente essencial de um computador na execução de tarefas. • Distinguir o componente essencial de componentes periféricos. • Compreender o que é um programa informático. • Escrever um programa simples.
  • 3.
    O que éo CPU?
  • 4.
    Visão Caixa Negra Unidade de Processamento Central E CPU S Entrada de dados Saída de dados (sensores, interfaces, …) (dispositivos, armazenamento, …)
  • 5.
    Arq. Von Neumanndo CPU Memória Primária Dados Controlo Dados Entrada e Saída ULA UC Controlo
  • 6.
  • 7.
    Os Periféricos • Sãoa interface entre o mundo e o processador • De entrada => fornecem dados ao CPU o Sensores o Interfaces para humanos (teclado, rato, etc…) • De saída => permitem ver resultados ou controlar operações o Monitores o Discos de armazenamento o Luzes o Motores
  • 8.
  • 9.
    Programas e Algoritmos •Um programa informático é uma sequência de instruções para o computador executar tarefas. • Um algoritmo é uma sequência de instruções para executar uma só tarefa. • Um programa é composto por um ou mais algoritmos.
  • 10.
    Linguagens de Programação •Instruções, ao nível do processador, são conjuntos de 1s e 0s, • 1s e 0s realizados por sinais eléctricos (…) 01100110 01010011 00110101 01001010 CPU 01110101 10101010 01001010 01011110 01111100 11111111 00001010 01010100 (…)
  • 11.
    Linguagens de Programação •Padrão que expressa instruções para o computador. • Contém regras sintácticas e semânticas. • O documento escrito por um humano é traduzido para uma linguagem de máquina, com a representação correcta de 1s e 0s
  • 12.
    Baixo Nível vs.Alto Nível Baixo Nível Alto Nível - Facilidade na escrita + - Facilidade na interpretação + (criptico) (natural) + Volume de código por tarefa - • A linguagem de alto nível é mais natural para o humano e os domínios de conhecimentos.
  • 13.
    Baixo Nível vs.Alto Nível (…) (…) lernum proc push ax valor = ler_numero_do_teclado(); mov ah, 09h int 21h (…) pop ax ret lernum endp (…) (…) 01100110 01010011 00110101 01001010 01110101 10101010 01001010 01011110 01111100 11111111 00001010 01010100 01100110 01010011 00110101 01001010 01110101 10101010 01001010 01011110 01111100 11111111 00001010 01010100 01100110 01010011 00110101 01001010 01110101 10101010 01001010 01011110 01111100 11111111 00001010 01010100 01100110 01010011 00110101 01001010 01110101 10101010 01001010 01011110 01111100 11111111 00001010 01010100 (…)
  • 14.
    Instruções • Expressões querepresentam uma operações. • Uma sequência de instruções permite realizar trabalho complexo • Podemos agrupar instruções em estruturas chamadas de procedimentos, funções ou métodos. Soma (número , número) Nome Lista de parâmetros
  • 15.
  • 16.
    Comando de Robô • Controlamos um robô que segue as instruções que programamos • Fabricante disponibiliza 3 instruções: o Mover (F|R, distancia) (F=frente; R=inverso) > o Rodar (H|A, nº graus) (H=Horário; A=Antihorário) fim o Buzinar()
  • 17.
    Exemplo Mapa: > fim Objectivo: Operações Disponíveis: • Programar o robô para Mover (F|R, distancia) percorrer o caminho (F=frente; R=inverso) apresentado. Rodar (H|A, nº graus) (H=Horário; A=Antihorário) Buzinar() • Buzinar à chegada.
  • 18.
    Solução Mapa: > fim Solução: Mover (F, 4) //move 4 casas para a frente Rodar (H,90) //roda 90º no sentido horário Mover (F, 2) //mover 2 casas para a frente Rodar (A,90) //roda 90º no sentido anti-horário Mover (F, 3) //mover 3 casas para a frente Buzinar() //emite sinal sonoro
  • 19.
  • 20.
    Solução Mapa: > fim Solução: Mover (F, 1) //move 1 casas para a frente Rodar (H,90) //roda 90º no sentido horário Mover (F, 2) //mover 2 casas para a frente Rodar (H,90) //roda 90º no sentido horário Mover (F, 4) //mover 4 casas para a frente Buzinar() //emite sinal sonoro
  • 21.
    Solução Mapa: fim > Solução: Mover (F, 2) //move 2 casas para a frente Rodar (H, 90) //roda 90º no sentido horário Mover (F, 4) //mover 4 casas para a frente Rodar (H, 90) //roda 90º no sentido horário Mover (F, 2) //mover 2 casas para a frente Buzinar() //emite sinal sonoro
  • 22.
    Concluíndo… • A escritade um programa envolve um processo de decomposição de uma tarefa. • As instruções são as etapas elementares da tarefa. • Quanto mais alto nível, mais simples é o nosso trabalho de descrever esse processo. • Quanto mais baixo nível, mais elementar são as instruções, exigindo um maior número de passos.
  • 23.
    Resumo • O CPUé a componente central de um computador na execução de instruções. • Os elementos periféricos permite interacção do mundo com o CPU na realização de trabalho. • Um programa é uma sequência de instruções para a realização de uma tarefa.