Notas de aula - Aspectos Teóricos da computação e Paradigmas

33
ATC – Aspectos Teóricos da Computação Respeitar o professor é respeitar a si mesmo

description

Notas de aula do módulo 1 da disciplina, Aspectos Teóricos da computação.Prof. Reverton

Transcript of Notas de aula - Aspectos Teóricos da computação e Paradigmas

Page 1: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

ATC – Aspectos Teóricos da Computação

Respeitar o professor é respeitar a si mesmo

Page 2: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 2

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

TEORIA DA COMPUTAÇÃO

A teoria da computação teve início nos primeiros anos do século XX, antes da invenção dos modernos computadores eletrônicos.

Naquela época, os matemáticos estavam tentando descobrir quais problemas matemáticos poderiam ser resolvidos por um método simples, e quais não poderiam.

O primeiro passo estava em definir o significado de um "método simples" para resolver o problema. Em outras palavras, eles precisavam de um modelo formal da computação.

Page 3: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 3

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

TEORIA DA COMPUTAÇÃO

Diversos modelos diferentes da computação foram propostos pelos primeiros pesquisadores.

Um modelo, conhecido como Máquina de Turing, propunha a construção de uma máquina universal, capaz de operar com uma sequência de instruções e dados entremeados em uma fita de comprimento infinito; a máquina poderia operar em um ponto da fita de cada vez utilizando um cabeçote de leitura e escrita, executando assim a programação que lhe for passada.

Page 4: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 4

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

TEORIA DA COMPUTAÇÃOPoder computacional

Qualquer computação que possa ser realizada com um modelo pode ser realizada com qualquer um dos outros modelos.

Qualquer computação que possa ser realizada com um modelo pode ser realizada com qualquer um dos outros modelos.

A teoria da computação estuda os modelos de computação genéricos, assim como os limites da computação:

● Quais problemas jamais poderão ser resolvidos por um computador, independente da sua velocidade ou memória?

● Quais problemas podem ser resolvidos por um computador, mas requerem um período tão extenso de tempo para completar a ponto de tornar a solucão impraticável?

Page 5: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 5

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

TEORIA DA COMPUTAÇÃOPoder computacional

Qualquer computação que possa ser realizada com um modelo pode ser realizada com qualquer um dos outros modelos.

Qualquer computação que possa ser realizada com um modelo pode ser realizada com qualquer um dos outros modelos.

A teoria da computação estuda os modelos de computação genéricos, assim como os limites da computação:

● Em que situações pode ser mais difícil resolver um problema do que verificar cada uma das soluções manualmente?

Page 6: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 6

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

TEORIA DA COMPUTAÇÃOTeoria da complexidade computacional

é a parte da teoria da computação que estuda os recursos necessários durante o cálculo para resolver um problema.

Os recursos comumente estudados são:

● O tempo (número de passos de execução de um algoritmo para resolver um problema)

● O espaço (quantidade de memória utilizada para resolver um problema)

Os recursos comumente estudados são:

● O tempo (número de passos de execução de um algoritmo para resolver um problema)

● O espaço (quantidade de memória utilizada para resolver um problema)

Page 7: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 7

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

TEORIA DA COMPUTAÇÃOTeoria da complexidade computacional

importância da complexidade

Pode ser observada no exemplo abaixo, que mostra 5 algoritmos A1 a A5 para resolver um mesmo problema, de complexidades diferentes.

Supomos que uma operação leva 1 milisegundo para ser efetuada. A tabela seguinte dá o tempo necessário por cada um dos algoritmos.

Tk(n) é a complexidade do algoritmo

Page 8: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 8

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

PARTE A – PROGRAMAÇÃO DE COMPUTADORES

MÓDULO 1 – PROGRAMAÇÃO DE COMPUTADORES E INDUÇÃO MATEMÁTICA

Introdução Procedimentos e algoritmos Programas e linguagens de programação Interação e Recursão

Page 9: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 9

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

PARTE A – PROGRAMAÇÃO DE COMPUTADORESMÓDULO 1 – PROGRAMAÇÃO DE COMPUTADORES E INDUÇÃO MATEMÁTICA

Introdução

Programação é o processo de escrita, teste e manutenção de um programa de computador.

algoritmo "idéia"var nome : caracterinicio escreva("Informe seu nome : ") leia(nome) escreva("Olá ",nome," tudo bem !")fimalgoritmo

algoritmo "idéia"var nome : caracterinicio escreva("Informe seu nome : ") leia(nome) escreva("Olá ",nome," tudo bem !")fimalgoritmo

Page 10: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 10

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

PARTE A – PROGRAMAÇÃO DE COMPUTADORESMÓDULO 1 – PROGRAMAÇÃO DE COMPUTADORES E INDUÇÃO MATEMÁTICA

Introdução

program idéia;uses Crt;varnome : string;begin write('Informe seu nome : '); readln(nome); write('Olá ',nome,' tudo bem !');end.

program idéia;uses Crt;varnome : string;begin write('Informe seu nome : '); readln(nome); write('Olá ',nome,' tudo bem !');end.

Linguagem Pascal

Page 11: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 11

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

PARTE A – PROGRAMAÇÃO DE COMPUTADORESMÓDULO 1 – PROGRAMAÇÃO DE COMPUTADORES E INDUÇÃO MATEMÁTICA

As linguagens de programação podem ser classificadas e sub-classificadas de várias formas

● Técnica de Programação Linear

Em matemática, problemas de Programação Linear são problemas de otimização nos quais a função objetivo e as restrições são todas lineares.

Início Fim

Entrada de dados | Processamento | Saída

Page 12: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 12

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

PARTE A – PROGRAMAÇÃO DE COMPUTADORESMÓDULO 1 – PROGRAMAÇÃO DE COMPUTADORES E INDUÇÃO MATEMÁTICA

As linguagens de programação podem ser classificadas e sub-classificadas de várias formas

● Técnica de Programação Modular

Programação modular é um paradigma de programação no qual o desenvolvimento das rotinas de programação é feito através de módulos, que são interligados entre si através de uma interface comum.

Cadastro

CalculaCPFCalcula

CNPJ

Function calcula_CPF(cpf)

Page 13: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 13

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

PARTE A – PROGRAMAÇÃO DE COMPUTADORESMÓDULO 1 – PROGRAMAÇÃO DE COMPUTADORES E INDUÇÃO MATEMÁTICA

As linguagens de programação podem ser classificadas e sub-classificadas de várias formas

● Técnica de Programação Estruturada

Programação estruturada é uma forma de programação de computadores que preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas: sequência, decisão e iteração.

Page 14: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 14

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

PARTE A – PROGRAMAÇÃO DE COMPUTADORESMÓDULO 1 – PROGRAMAÇÃO DE COMPUTADORES E INDUÇÃO MATEMÁTICA

As linguagens de programação podem ser classificadas e sub-classificadas de várias formas

● Técnica de Programação Orientada a Objeto

É um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos.

Page 15: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 15

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

PARTE A – PROGRAMAÇÃO DE COMPUTADORESMÓDULO 1 – PROGRAMAÇÃO DE COMPUTADORES E INDUÇÃO MATEMÁTICA

Procedimentos e algoritmos➔ Procedimento é uma seqüência finita de instruções que podem ser executadas por um agente computacional.

➔ Podem ser do tipo: Receita, Roteiro, Método

Page 16: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 16

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

PARTE A – PROGRAMAÇÃO DE COMPUTADORESMÓDULO 1 – PROGRAMAÇÃO DE COMPUTADORES E INDUÇÃO MATEMÁTICA

Algoritmo de Euclides

➔ Especifica como calcular o MDC (Máximo Divisor Comum) de dois números inteiros positivos m e n.

➔ P1: x,y (adotam) m,n➔ P2: r (resto da divisão) de x mod y➔ P3: x <- y e y <- r➔ P4: Se r = nulo então x (MDC procurado)

Page 17: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 17

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

Algoritmo de Euclides

algoritmo "MDC"var x,y,m,n,r : inteiroinicio leia(m) x <- m leia(n) y <- n repita r <- x mod y x <- y y <- r ate r = 0 escreva("MDC = ", x)fimalgoritmo

algoritmo "MDC"var x,y,m,n,r : inteiroinicio leia(m) x <- m leia(n) y <- n repita r <- x mod y x <- y y <- r ate r = 0 escreva("MDC = ", x)fimalgoritmo

Page 18: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 18

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

Algoritmo de Euclides

Private Sub Command1_Click()Dim m, n, r As Integerm = Int(num1.Text)n = Int(num2.Text)r = mdc.calcula(m, n)MsgBox r, vbInformation, "MDC de " & m & " e " & nEnd Sub

Private Sub Command1_Click()Dim m, n, r As Integerm = Int(num1.Text)n = Int(num2.Text)r = mdc.calcula(m, n)MsgBox r, vbInformation, "MDC de " & m & " e " & nEnd Sub

Page 19: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 19

Function calcula(ByVal x As Integer, ByVal y As Integer) As IntegerOn Error GoTo erroDim r As IntegerDo r = x Mod y x = y y = rLoop Until r = 0calcula = xExit Functionerro: MsgBox Err.Description Exit FunctionEnd Function

Function calcula(ByVal x As Integer, ByVal y As Integer) As IntegerOn Error GoTo erroDim r As IntegerDo r = x Mod y x = y y = rLoop Until r = 0calcula = xExit Functionerro: MsgBox Err.Description Exit FunctionEnd Function

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

Algoritmo de Euclides

Interface

Page 20: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 20

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

Procedimentos e algoritmosPropriedades de um Procedimento (algoritmo)(programa)(função)(método)

● A descrição da propriedade deve ser finita (início e fim). Utilizamos uma seqüência finita de palavras e simbolos para descrever o procedimento.

● Todo procedimento parte de um certo número de dados pertencentes a conjuntos específicos de objetos.

∈m,n {conjunto dos inteiros positivos}

r {conjunto dos dados de saída}∈

Page 21: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 21

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

Procedimentos e algoritmosPropriedades de um Procedimento (algoritmo)(programa)(função)(método)

● Supõe-se que exista um agente computacional responsável (humano, eletrônico, mecânico), que execute as instruções do procedimento. Este agente deverá ter uma maneira de guardar e recuperar as informações durante o procedimento.

● Cada instrução especificada deve estar bem definida, não deixando dúvidas quanto ao seu resultado.

x,y e z são inteiros positivos, e o agente computacional sabe calcular o resto da divisão de x por y.

Page 22: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 22

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

Procedimentos e algoritmosPropriedades de um Procedimento (algoritmo)(programa)(função)(método)

● As instruções devem ser efetivas, isto é, SIMPLES a tal ponto de uma pessoa com papel e lápis também poder executar.

Ex. No cálculo do MDC se os valores de x,y,z forem do tipo real, não há possibilidade de prosseguir o cálculo.

Page 23: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 23

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

CONJUNTO, RELAÇÕES E FUNÇÕESConceitos Básicos

um conjunto é qualquer coleção, dentro de um todo de objetos definidos e distinguíveis, chamados elementos, de nossa intuição ou pensamento.

1

É uma coleção de zero ou mais objetos distintos, denominados elementos do conjunto.

2

Page 24: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 24

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

CONJUNTO, RELAÇÕES E FUNÇÕESConceitos Básicos

Esta definição intuitiva de um conjunto foi dada primeiramente por Georg Cantor (1845|1918), que criou a teoria dos conjuntos em 1895.

Page 25: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 25

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

CONJUNTO, RELAÇÕES E FUNÇÕESConceitos Básicos

Exemplos:✔ O conjunto de todas as cadeiras na sala de aula de Teoria dos Conjuntos.✔ O conjunto de todos os estudantes desta universidade.✔ O conjunto das letras a, b, c e d.✔ O conjunto das regras de uso do laboratório de informática.✔ O conjunto de todos os núumeros racionais cujo quadrado é 2.✔ O conjunto de todos os números naturais.✔ O conjunto de todos os números reais entre 0 e 1.

Page 26: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 26

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

CONJUNTO, RELAÇÕES E FUNÇÕESConceitos Básicos

Video-aula sobre conjuntos...........

● Conceito.● Diagrama de Ven-Euler.● Operações

Page 27: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 27

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

EXERCÍCIOS PROPOSTOS

Depois de n dias de férias, um estudante observa que:a) choveu 7 vezes, de manhã ou à tarde;b) quando chove de manhã não chove à tarde;c) houve 5 tardes sem chuva;d) houve 6 manhãs sem chuva.

Podemos afirmar então que n é igual a:

a)7b)8c)9d)10e)11

Page 28: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 28

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

EXERCÍCIOS PROPOSTOS

Após um jantar, foram servidas as sobremesas X e Y. Sabe-se que das 10 pessoas presentes, 5 comeram a sobremesa X, 7 comeram a sobremesa Y e 3 comeram as duas. Quantas não comeram nenhuma ?

a) 1b) 2c) 3d) 4e) 0

Page 29: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 29

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

VAMOS RECAPITULAR – ALGORITMOS E ESTRUTURA DE DADOS.

Você vai precisar de:

- Visualg.- Pascalzim.

Page 30: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 30

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

Page 31: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 31

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

Page 32: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 32

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

Page 33: Notas de aula -  Aspectos Teóricos da computação e Paradigmas

Prof. Reverton 33

ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores

CONCEITOS FUNDAMENTAISLinguagem

Conceito

É um conceito fundamental no estudo da teoria da computação, pois trata-se de uma forma precisa de expressar problemas, permitindo um desenvolvimento formal adequado ao estudo da computabilidade.