Fabrício Olivetti de França 02 de Fevereiro de...
Transcript of Fabrício Olivetti de França 02 de Fevereiro de...
![Page 1: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/1.jpg)
Processamento da Informação
Fabrício Olivetti de França
02 de Fevereiro de 2019
![Page 2: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/2.jpg)
Topics
1. Processamento da Informação
2. Conceitos de Programação
3. Funções e Programas de Computador
1
![Page 3: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/3.jpg)
Processamento da Informação
![Page 4: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/4.jpg)
Informação
Do latim, informatio onis, conceber ideias.
2
![Page 5: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/5.jpg)
Informação
Informar é transmitir conhecimento:
• Professor aos alunos• Médico ao paciente• Jornais aos leitores• Usuário ao computador
3
![Page 6: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/6.jpg)
Processamento da Informação
Organizar, transformar dados de acordo com uma sequência deinstruções.
4
![Page 7: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/7.jpg)
Processamento da Informação
Eu entrego uma informação ao computador e ele me retorna umanova informação!
5
![Page 8: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/8.jpg)
Processamento da Informação
Isso é feito com o auxílio de conceitos como algoritmos, funções eprogramas de computador.
6
![Page 9: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/9.jpg)
Computador ao nosso serviço
O computador é uma máquina de calcular avançada, temos que tirarproveito disso para nossas próprias tarefas!
Mas para isso precisamos nos comunicar…
7
![Page 10: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/10.jpg)
Programação de Computadores
Muitos países estão incorporando curso de programação decomputadores no ensino básico e médio.
8
![Page 11: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/11.jpg)
Importância da Computação
Relevante para diversas áreas:
• Carros automatizados• Detecção de plágio• Verificação de Fake News• Encontrar funções biológicas
9
![Page 12: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/12.jpg)
Objetivo do Curso
Ensinar o pensamento computacional para resolver problemas como auxílio do computador.
10
![Page 13: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/13.jpg)
Ferramentas
Para isso utilizaremos uma linguagem de programação escolhidapelo docente do curso para nos comunicarmos com o computador.
11
![Page 14: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/14.jpg)
Metodologia
3 horas de aulas teóricas + 2 horas de aulas práticas
12
![Page 15: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/15.jpg)
Site do Curso (teoria)
https://folivetti.github.io/teaching/2020-summer-teaching-1
13
![Page 16: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/16.jpg)
Empenho x Desempenho
Figura 1: FONTE: prof. Thiago Covões
14
![Page 17: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/17.jpg)
Conceitos de Programação
![Page 18: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/18.jpg)
Computação
Computação se refere a um cálculo, aritmético ou não, seguindo ummodelo bem definido para a solução de um problema.
Não necessariamente utilizando um computador…
15
![Page 19: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/19.jpg)
Algoritmo
Algoritmo é a descrição de uma solução de um problema computável.
Seu nome vem de al-Khwarizmi, um dos percursores da algebra.
16
![Page 20: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/20.jpg)
Máximo Divisor Comum
O primeiro algoritmo que se tem conhecimento é o Algoritmo deEuclides, utilizado para calcular o Máximo Divisor Comum.
17
![Page 21: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/21.jpg)
Máximo Divisor Comum
Dados a, b ∈ N:
mdc(a, 0) = amdc(0, b) = bmdc(a, b) = mdc(b, a%b)
Definição: a, b são argumentos ou entradas de nosso algoritmo.
18
![Page 22: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/22.jpg)
Exercício
Utilizando a definição do MDC, calcule:
mdc(15, 25)
mdc(78, 66)
mdc(132, 154)
19
![Page 23: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/23.jpg)
Propriedades de um Algoritmo
Todo algoritmo deve possuir quatro propriedades para ser definidocomo tal:
1. Finitude2. Desambiguidade3. Conjunto de entrada4. Conjunto de saída
20
![Page 24: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/24.jpg)
Finitude
Um algoritmo SEMPRE deve terminar em um período finito de tempo.
• Como o segundo argumento do algoritmo de Euclides semprediminui, e por serem definidos para números naturais,eventualmente esse chegará a zero e terminará.
21
![Page 25: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/25.jpg)
Desambiguidade
Não pode haver ambiguidade em nenhuma das instruções doalgoritmo.
• Vá até a loja e compre duas caixas de leite, e se tiver ovos,compre seis
• 1+ 2 ∗ 3 =??
22
![Page 26: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/26.jpg)
Entrada
O algoritmo recebe um conjunto de entradas (argumentos) que podeser vazio, finito ou infinito.
• No algoritmo de Euclides temos o conjunto de entradasa, b ∈ N2.
23
![Page 27: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/27.jpg)
Saída
O algoritmo deve produzir uma (ou mais) saída como resultado doprocessamento. Não faz sentido perguntarmos algo que não tenhauma resposta.
• No algoritmo de Euclides temos como resposta o máximodivisor comum m ∈ N.
24
![Page 28: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/28.jpg)
Funções e Programas deComputador
![Page 29: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/29.jpg)
Os dois lados do algoritmo
A definição de algoritmo não é formalizada na área de Ciência daComputação. Ele é apenas uma abstração do pensamentocomputacional.
25
![Page 30: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/30.jpg)
Os dois lados do algoritmo
Por outro lado, temos dois conceitos formais que podem definir umalgoritmo: funções e programas de computador.
26
![Page 31: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/31.jpg)
Funções
Uma função f : X → Y é um mapa de elementos do conjunto X paraelementos do conjunto Y.
mdc : N2 → N
dobra : N → N
27
![Page 32: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/32.jpg)
Tipos
Um tipo é um conjunto nomeado de valores que apresentam algumapropriedade comum.
Exemplos: N,Z,R, {F, V}, primos
28
![Page 33: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/33.jpg)
Tipos
Vamos definir o tipo denominado L que representa o estado de umalâmpada:
• L = {On, Off}
Figura 2: Lâmpadas On e Off
29
![Page 34: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/34.jpg)
Tipos
Imagine que em uma sala contendo uma lâmpada temos um botãoque executa uma função que pode alterar o estado da lâmpada.
Figura 3: Botão (f(lamp))
30
![Page 35: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/35.jpg)
Tipos
Podemos formalizar essa função como f : L → L.
Como você imagina essa função? Quantas possíveis definiçõesexistem?
31
![Page 36: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/36.jpg)
Tipos
1. f1(lamp) = On2. f2(lamp) = Off3. f3(lamp) = lamp
4. f4(lamp) =
On, lamp = Off
Off, lamp = On
32
![Page 37: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/37.jpg)
Tipos
Se pensarmos nos valores verdadeiro e falso substituindo os valoresOn/Off, o que cada função representa?
33
![Page 38: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/38.jpg)
Funções e Algoritmos
Podemos pensar em uma função como um algoritmo implementadona linguagem matemática.
O algoritmo mdc é uma função!
34
![Page 39: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/39.jpg)
Composição de Funções
Um conceito importante para a programação de computadores é acomposição de funções, que permite reutilização de definiçõesanteriores:
f(x) = 2 ∗ x, g(x) = x+ 1
f(g(x)) = 2 ∗ (x+ 1)
g(f(x)) = 2 ∗ x+ 1
35
![Page 40: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/40.jpg)
Exercício
Dadas as funções f(x) = 2 ∗ x, g(x) = x+ 1, qual o resultado de:
• f(g(2))• g(f(2))• f(g(5))• g(f(5))
36
![Page 41: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/41.jpg)
Programa de Computador
Um programa de computador é um conjunto de instruções demáquina que implementam um algoritmo.
Passo a passo de como o computador deve processar os dados.
37
![Page 42: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/42.jpg)
Programa de Computador
Internamente ele é definido por sequências de bits.
Cada sequência de bit é mapeada para uma instrução doprocessador.
38
![Page 43: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/43.jpg)
Programa de Computador
39
![Page 44: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/44.jpg)
Algoritmo MDC em Linguagem de Máquina
mov esi, 68 # m = 68mov ebx, 119 # n = 119jmp .L2 # vai para o passo 2
.L3: mov ebx, edx # n = r.L2: mov eax, ebx idiv esi # EAX = m / n (EAX), EDX = r mov esi, ebx # m = n test edx, edx # verifica se o resto é zero jne .L3 # se teste anterior não zero,
# vai para L340
![Page 45: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/45.jpg)
Linguagem de Máquina
• Difícil de ler, escrever e entender.• Requer uma lógica de programação imperativa.
41
![Page 46: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/46.jpg)
Linguagem de Alto Nível
Para resolver esses problemas, foram criadas linguagens deprogramação que serviriam como intermediários entre a linguagemde máquina e o programador.
42
![Page 47: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/47.jpg)
Linguagem de Alto Nível
• Possui um conjunto de instruções próximas da linguagemnatural.
• Minimiza o número de instruções para tarefas frequentes.• Não requer completo entendimento do funcionamento docomputador.
43
![Page 48: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/48.jpg)
Linguagem de Alto Nível
Um arquivo texto contendo as instruções escritas em uma linguagemde programação é chamado de código-fonte.
44
![Page 49: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/49.jpg)
Compilador x Interpretador
• Compilador: o código-fonte é traduzido para o código demáquina e escrito em forma de um arquivo executável.
• Interpretador: o código-fonte é traduzido para instruções demáquina durante a execução do programa.
45
![Page 50: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/50.jpg)
Linguagem Python
Nesse curso utilizaremos a linguagem de programação Python:
• Tem uma sintaxe simples.• Filosofia de códigos pequenos e legíveis.• Declarativo (ou quase).
46
![Page 51: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/51.jpg)
Funções no Python
A função dobra pode ser definida em Python como:
def dobra(x):return 2*x
47
![Page 52: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/52.jpg)
Funções no Python
A palavra-chave def :
def nome_da_funcao(argumentos):codigo
48
![Page 53: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/53.jpg)
Funções no Python
O nome de uma função e de seus argumentos devem seguir certasregras:
• Devem começar com uma letra ou um underscore (_).• Os caracteres restantes podem conter letras, números eunderscore (_).
• O Python diferencia entre letras minúsculas ou maiúsculas.
49
![Page 54: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/54.jpg)
Escolhendo nomes
Para seu programa de computador ser legível, é importante escolhernomes adequados para as funções e variáveis.
50
![Page 55: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/55.jpg)
Escolhendo nomes
• Os nomes de funções devem ser ações ou o nome de umalgoritmo conhecido:
dobra, ordena, mdc, newton
51
![Page 56: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/56.jpg)
Escolhendo nomes
• Os nomes de argumentos devem ser descritivos com suafunção:
vetor, somatorio, total_aprovados
52
![Page 57: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/57.jpg)
Escolhendo nomes
• Nomes compostos por múltiplas palavras devem ser separadaspor underscore:
alunos_aprovados, soma_salarios
53
![Page 58: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/58.jpg)
Escolhendo nomes
• Funções matemáticas podem utilizar variáveis com nomesx, y, n, sendo senso comum.
54
![Page 59: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/59.jpg)
Funções no Python (cont.)
Após a linha em que definimos um nome para a função, escrevemosas instruções, uma em cada linha, alinhados com 4 espaços a direitade def :
def f(x):instrucao1instrucao2instrucao3
55
![Page 60: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/60.jpg)
Funções no Python (cont.)
A instrução return indica a saída do algoritmo.
56
![Page 61: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/61.jpg)
Exercício
Crie as seguintes funções em Python:
• dobra• quadruplica• soma_dois_numeros
57
![Page 62: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/62.jpg)
Resposta
def dobra(x):return 2*x
def quadruplica(x): def quadruplica(x):return 4*x return dobra(dobra(x))
def soma_dois_numeros(x, y):return x+y
58
![Page 63: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/63.jpg)
Exercício
Crie as 4 possíveis definições da função botão para uma lâmpada.
59
![Page 64: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/64.jpg)
Resposta
def f1(lampada):return ”Off”
def f2(lampada):return ”On”
def f3(lampada):return lampada
def f4(lampada):if lampada==”On”:
return ”Off”if lampada==”Off”:
return ”On” 60
![Page 65: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/65.jpg)
Algoritmo MDC em Python
O algoritmo MDC em Python pode ser escrito como:
def mdc(x, y):if x==0:
return yif y==0:
return xreturn mdc(y, x%y)
Nas aulas seguintes aprenderemos mais detalhes de sintaxe.
61
![Page 66: Fabrício Olivetti de França 02 de Fevereiro de 2019folivetti.github.io/courses/ProcessamentoInformacao/PDF/Aula01.pdf · Saída O algoritmo deve produzir uma (ou mais) saída como](https://reader036.fdocumentos.com/reader036/viewer/2022070803/5f0325dd7e708231d407c695/html5/thumbnails/66.jpg)
Próxima aula
Aprenderemos um pouco mais sobre a sintaxe do Python, seus tipospadrões, uso de variáveis auxiliares e condicionais.
62