notas de aula - aspectos teóricos da computação e paradigmas
DESCRIPTION
Notas de aula do módulo 1 da disciplina, Aspectos Teóricos da computação.Prof. RevertonTRANSCRIPT
ATC – Aspectos Teóricos da Computação
Respeitar o professor é respeitar a si mesmo
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.
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.
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?
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?
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)
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
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
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
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
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
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)
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.
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.
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
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)
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
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
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
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}∈
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.
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.
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
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.
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.
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
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
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
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.
Prof. Reverton 30
ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores
Prof. Reverton 31
ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores
Prof. Reverton 32
ATC – Aspectos Teóricos da Computação MÓDULO 1: Programação de Computadores
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.