Baixe o app para aproveitar ainda mais
Prévia do material em texto
Juliana Mascarenhas Tech Education Specialist / Sócia (Content Creator) @SimplificandoRedes Me Modelagem Computacional / Cientista de dados @in/juliana-mascarenhas-ds/ Primeiros passos para começar a programar Curso base para iniciante [1] [2] Juliana Mascarenhas Tech Education Specialist Sócia no @SimplificandoRedes Cientista de dados Desenvolvedora Java/Python Me Modelagem Computacional - LNCChttps://github.com /julianazanelatto Sobre Mim [3] 2009 – 2011 Técnica de Telecomunicações - CEFET/RJ 2011 - 2015 Engenharia da computação - UCP 2017 - 2019 Mestre em modelagem computacional – LNCC 2023 Ingressar no Doutorado LNCC (objetivo) Sobre Mim Sobre Mim [5] 2009 Redes de computadores 2012 Programação 2014 Gerenciamento de Projetos 2017 Ciencia de dados Cursos [6] Você será capaz de entender o que significa pensar computacionalmente. Pensamento aplicável à qualquer área do conhecimento. Dessa forma, será capaz de resolver qualquer problema de uma maneria mais objetiva e eficiente. Objetivo Geral [7] Percurso Aula 1 Pensamento Computacional Aula 2 Introdução à lógica da programação [8] Aula 3 Fundamentos de Algoritmos Percurso Aula 4 Aula 5 Linguagens de programação Primeiro contato com a programação [9] // Primeiros passos para começar a programar [10] Aula 1: Pensamento Computacional Apresentar os conceitos que caracterizam o pensamento com putacional, permitindo que o Dev entenda o que significa pensar computacionalmente. Objetivo Geral [11] Percurso Etapa 1 Introdução ao pensamento computacional Etapa 2 Habilidade complementares Etapa 3 Pilares: Decomposição [12] Percurso Etapa 4 Pilares: Padrões Etapa 5 Pilares: Abstração Etapa 6 Pilares: Algoritmos [13] Percurso Etapa 7 Estudo de caso conceitual: perdido Etapa 8 Estudo de caso aplicado: Soma de um intervalo Etapa 9 Estudo de caso aplicado: Adivinhe um número [14] // Primeiros passos para programar/Pensamento Computacional Etapa 1 Introdução ao pensamento computacional [15] Pensamento computacional? Processo de pensamento envolvido na expressão de soluções em passos computacionais ou algoritmos que podem ser implementados no computador. (Aho, 2011; Lee, 2016) Overview [16] Pensamento computacional? Overview [17] Formulação e resolução de problemas Sistemático e eficiente Pensamento computacional? Overview [18] Formulação e resolução de problemas Sistemático e eficiente Humanos & máquinas Sejam capazes de resolver Pensamento computacional? Overview [19] Disciplina acadêmica Habilidade generalista Pensamento computacional? Overview [20] Disciplina acadêmica Habilidade generalista Matemática Leitura Escrita Baseado em 4 pilares Overview [21] Decomposição Reconhecimento de padrões Abstração Design de algoritmos Dividir um problema complexo em subproblemas Baseado em 4 pilares Overview [22] Decomposição Reconhecimento de padrões Abstração Design de algoritmos Dividir um problema complexo em subproblemas Baseado em 4 pilares Overview [23] Decomposição Reconhecimento de padrões Abstração Design de algoritmos Identificar padrões ou tendências Baseado em 4 pilares Overview [24] Decomposição Reconhecimento de padrões Abstração Design de algoritmos Identificar padrões ou tendências PADRÃO COMPORTAMENTAL Similaridades e diferenças entre os problemas Baseado em 4 pilares Overview [25] Decomposição Reconhecimento de padrões Abstração Design de algoritmos Extrapolar o conceito do problema para um forma generalista Baseado em 4 pilares Overview [26] Decomposição Reconhecimento de padrões Abstração Design de algoritmos Extrapolar o conceito do problema para um forma generalista C = 2.π.r Design POO Classes Métodos Herança Polimorfismo Baseado em 4 pilares Overview [27] Decomposição Reconhecimento de padrões Abstração Design de algoritmos Automatizar Definir passo a passo a solução do problema. Baseado em 4 pilares Overview [28] Decomposição Reconhecimento de padrões Abstração Design de algoritmos Automatizar Definir passo a passo a solução do problema. Input OutputOperator Processo Contínuo • Definir uma solução • Testar a solução • Aperfeiçoamento da solução encontrada Overview [29] Teste Análise Refinamento Overview [30] Execução da solução e avaliação (refinamento) Expressão de solução Resolução de problemas Abstração Automatização Análise Overview [31] Raciocínio Lógico Decomposição Padrões Abstração Algoritmos Refinamento Overview [32] CS Math Sci/Eng 1 2 3 4 Desenvolvimento e abstração; Reconhecimento de padrões ... 1.CS + Math Análise de dados e design de soluções; Definição e uso de abstrações; Teste e refinamento de algoritmos ... 2.CS + Sci/Eng Modelagem; Definição de problemas; Definição e uso de abstrações; Reconhecimento de padrões ... 3.CS + Sci/Eng + Math Desenvolvimento e abstração; Reconhecimento de padrões ... 4.Math +Sci/Eng Exemplos Química • Aperfeiçoamento de reações químicas pela utilização de al goritmos, através da identificação de quimícos Engenharia • Simulações de aeronavas executadas via software em detrimento do tunel de vento Overview [33] Exemplos Biologia • Modelagem e mapeamento do genoma humano Computação • Simulação de problemas de alta ordem em supercomputadores Overview [34] Competências • Pensamento sistemático • Colaboração dentro da equipe • Criatividade e design • Facilitador Overview [35] // Primeiros passos para começar a programar/Pensamento Computacional Etapa 2 Habilidades complementares [36] Percurso Etapa 1 Introdução ao pensamento computacional Etapa 2 Habilidade complementares Etapa 3 Pilares: Decomposição [37] Percurso Etapa 4 Pilares: Padrões Etapa 5 Pilares: Abstração Etapa 6 Pilares: Algoritmos [38] Percurso Etapa 7 Estudo de caso conceitual: perdido Etapa 8 Estudo de caso aplicado: Soma de um intervalo Etapa 9 Estudo de caso aplicado: Adivinhe um número [39] Habilidades [40] Raciocínio Lógico Aperfeiçoamento Raciocínio lógico é uma forma de pensamento estruturado, ou raciocínio, que permite encontrar a conclusão ou determinar a resolução de um problema. Raciocínio Lógico [41] Raciocínio lógico é uma forma de pensamento estruturado, ou raciocínio, que permite encontrar a conclusão ou determinar a resolução de um problema. Raciocínio Lógico [42] Habilidade de treinamento Classificação Raciocínio Lógico [43] Indução Dedução Abdução Classificação Raciocínio Lógico [44] Indução Dedução Abdução Leis e teorias Fenômeno observado Classificação Raciocínio Lógico [45] Indução Dedução Abdução Leis e teorias Fenômeno observado Ciências experimentais Classificação Raciocínio Lógico [46] Indução Dedução Abdução Leis e teorias Previsões e explicações Classificação Raciocínio Lógico [47] Indução Dedução Abdução Leis e teorias Previsões e explicações Ciências exatas Classificação Raciocínio Lógico [48] Indução Dedução Abdução Conclusão Premissa Ex: A grama está molhada, logo deve ter chovido Classificação Raciocínio Lógico [49] Indução Dedução Abdução Conclusão Premissa Ex: A grama está molhada, logo deve ter chovido Diagnósticos Processo investigativo Raciocínio Lógico [50] Inferência Sintética Abdução Indução Dedução Analítica Raciocínio Lógico [51] Um pai, mãe e seu casal de filhos estão sentados em uma mesa. Os homens se chamam Roberto e Sérgio, as mulheres Teresa e Fernanda. Sabe-se que o pai está à frente de Fernanda e o filho e esquerda; e que a mãe está do lado direito de Sérgio. Mesa Raciocínio Lógico [52] Um pai, mãe e seu casal de filhos estão sentados em uma mesa. Os homens se chamam Roberto e Sérgio, as mulheres Teresa e Fernanda. Sabe-se que o pai está à frente de Fernanda e o filho e esquerda;e que a mãe está do lado direito de Sérgio. Mesa Pai Fernanda Filho Raciocínio Lógico [53] Um pai, mãe e seu casal de filhos estão sentados em uma mesa. Os homens se chamam Roberto e Sérgio, as mulheres Teresa e Fernanda. Sabe-se que o pai está à frente de Fernanda e o filho e esquerda; e que a mãe está do lado direito de Sérgio. Mesa Pai Fernanda Filho Mãe Sérgio Raciocínio Lógico [54] Um pai, mãe e seu casal de filhos estão sentados em uma mesa. Os homens se chamam Roberto e Sérgio, as mulheres Teresa e Fernanda. Sabe-se que o pai está à frente de Fernanda e o filho e esquerda; e que a mãe está do lado direito de Sérgio. R: Sérgio é o pai Teresa é a mãe Fernanda a filha e Roberto é o filho. Mesa Aperfeiçoamento [55] Melhoramento Aprimoramento Ato de aperfeiçoar Refinamento Aperfeiçoamento [56] Melhoramento Aprimoramento Ato de aperfeiçoar Refinamento A partir de uma solução, determinar pontos de melhora e refinamento Aperfeiçoamento [57] • Encontrar solução eficiente • Otimizar processos • Simplificar linhas de códigos • Funções bem definidas Ato de aperfeiçoar Melhorar códigos e algoritmos Melhor uso de recursos // Primeiros passos para começar a programar/ Pensamento Computacional/ [58] Pilares: Decomposição Etapa 3 Percurso Etapa 1 Introdução ao pensamento computacional Etapa 2 Habilidade complementares Etapa 3 Pilares: Decomposição [59] Percurso Etapa 4 Pilares: Padrões Etapa 5 Pilares: Abstração Etapa 6 Pilares: Algoritmos [60] Percurso Etapa 7 Estudo de caso conceitual: perdido Etapa 8 Estudo de caso aplicado: Soma de um intervalo Etapa 9 Estudo de caso aplicado: Adivinhe um número [61] É preciso coompreender como executar cada etapa de um pensamento computacional. Dessa forma, as aulas subsequêntes são dedicadas à compreensão individual de cada pilar desse processo de pensamento. Objetivo Geral [62] "If you can't solve a problem, then there is an easier problem that you can solve: find it" George Polya – professor e matemático Decomposição [63] Primeiro passo da resolução de problemas dentro do conceito de pensamento computacional "Dado um problema complexo, devemos quebra-lo em problemas menores. Portanto, problemas mais fáceis e gerenciáveis." Decomposição [64] Estratégia Processo de quebrar e determinar partes menores e gerenciáveis Decomposição [65] Análise Estratégia Processo de quebrar e determinar partes menores e gerenciáveis Decomposição [66] Análise "realizar exame detalhado" Estudar, explorar Decompor em elementos constituíntes Estratégia Combinar os elementos recompondo o problema original Decomposição [67] Síntese Estratégia Combinar os elementos recompondo o problema original Decomposição [68] Síntese Fundir os elementos de maneira coerente Processo de reconstrução Consiste em reunir elementos distintos em um único elemento Estratégia Ordem de execução de tarefas menores Decomposição [69] Sequêncial Paralelo Estratégia Ordem de execução de tarefas menores Decomposição [70] Sequêncial Dependência entre tarefas. Executadas em "fila" Estratégia Ordem de execução de tarefas menores Decomposição [71] Paralelo Tarefas podem ser executadas concomitantemente. Eficiência Tempo Decomposição [72] Variáveis Pequenos problemas Segmentação Decomposição [73] Variáveis Pequenos problemas Segmentação• Não basta aplicar • Desenvolver a decomposição "by yourself" Maneiras distintas de decompor o mesmo problema Decomposição [74] Como decompor? Identificar ou coletar dados Agregar os dados Funcionalidade Decomposição Decomposição [75] Exemplos Decomposição [76] Ex do cotidiano: cozinhar • Identificar os ingredientes • Determinar as etapas (sequêncial ou paralelo) • Executar cada etapa • Agregar os ingredientes para finalizar (Recompor com coerência) Decomposição [77] Ex do cotidiano: funcionamento de uma bike • Identificar os componentes • Papel de cada componente • Interdependência das peças Funcionamento do sistema Decomposição [78] Exemplo: criar um app • Finalidade • Interface • Funcinalidades • Pré-requisitos Definição de componentes e etapas Desenvolvimento mais eficiente Decomposição [79] Exemplo: criar um app • Finalidade • Interface • Funcinalidades • Pré-requisitos Definição de componentes e etapas Desenvolvimento mais eficiente Decomposição [80] Exemplo: Artigo • O que será abordado? • Estrutura • Conteúdo de cada tópico • Textos de conexão Definição de componentes e etapas Sequêncial ou paralelo Em ordem ou não Decomposição [81] Ações Padrão Virar Direita Esquerda Mover Cima Baixo Movimento Andar Correr Mover perna Impulsionar Sentar Levantar Exemplo: movimentos de um avatar // Primeiros passos para começar a programar/ Pensamento Computacional/ [82] Pilares: Padrões Etapa 4 Padrões [83] Reconhecimento de Padrões • Modelo base • Estrutura invariante • Repetição Padrões [84] Reconhecimento de Padrões • Modelo base • Estrutura invariante • Repetição Similaridades e diferença Padrões [85] Ex: fotos de redes sociais Compressão Salvar no servidor de dados ... Padrões [86] Ex: fotos de redes sociais Compressão Salvar no servidor de dados ... Padrões [87] Ex: Compressão de dados Compressão por reconhecimento de padrões 3 2 1 2 1 Padrões [88] Seres vivos x padrões Padrões [89] Seres vivos x padrões Padrões [90] Reconhecimento de Padrões • Por que determinar padrões? Padrões [91] Reconhecimento de Padrões • Por que determinar padrões? Generelizar, com objetivo de obter resolução para problemas diferentes Padrões [92] Reconhecimento de Padrões • Por que determinar padrões? Categorias Classes Padrões [93] Reconhecimento de Padrões • Por que determinar padrões? Categorias Classes Dependem do domínio Tipo de media Padrões [94] Como o computador reconhece padrões? • Grau de similaridade • Grupos conhecidos x objeto desconhecido Pelo ser humano Padrões [95] Como o computador reconhece padrões? • Grau de similaridade • Grupos conhecidos x objeto desconhecido Pelo ser humano COMPARAÇÃO Padrões [96] Como simular esse comportamento? Representação de atributos Aprendizado – conceito associado ao objeto Padrões [97] Como simular esse comportamento? Representação de atributos Aprendizado – conceito associado ao objeto Armazenar dados Padrões [98] Como simular esse comportamento? Representação de atributos Aprendizado – conceito associado ao objeto Armazenar dados Regras de decisão Padrões [99] Em resumo ... Padrões [100] Abordagem Extração de características Classificação de dados Métodos Aplicações DIFERENTES Padrões [101] Aplicações • Classificação de dados • Reconhecimento de imagem • Reconhecimento de fala • Análise de cenas • Classificação de documentos Padrões [102] Aplicações • Classificação de dados • Reconhecimento de imagem • Reconhecimento de fala • Análise de cenas • Classificação de documentos Machine Learning Redes Neurais Inteligência Artificial Ciência de dados // Primeiros passos para começar a programar/ Pensamento Computacional/ [103] Pilares: Abstração Etapa 5 Abstração [104] Generalização / Abstração ABSTRAIR Observar, um ou mais elementos, avaliando características e propriedades em separado Abstração [105] Generalização / Abstração ABSTRAIR Observar, um ou mais elementos, avaliando características e propriedades em separado ABSTRAÇÃO Processo intelectual de isolamento de um objeto da realidade Abstração [106] Generalização / Abstração ABSTRAIR Observar, um ou mais elementos, avaliando características e propriedades em separado ABSTRAÇÃO Processo intelectual de isolamento de um objeto da realidade Generalizar Tornar-se geral, mais amplo, extensão Abstração [107] Generalização, na lógica, éa operação intelectual que consiste em reunir numa cl asse geral, um conjunto de seres ou fenômenos similares. Generalização / Abstração https://pt.wikipedia.org/wiki/L%C3%B3gica Abstração [108] Como classificar os dados? • Características • Pontos essenciais • Generalizar x detalhar Abstração [109] REPRESENTAÇÃO Abstração [110] Estudantes Representação de dados Abstração [111] Estudantes Representação de dados CARACTERÍSTICAS Abstração [112] Estudantes Representação de dados CARACTERÍSTICAS • Nome completo • Matrícula • Endereço • Campus • Curso • Telefone • Email • ... • Trabalho • Tem filhos • Programa preferido • Livro preferido • Tamanho do calçado • ... Abstração [113] Estudantes Representação de dados CARACTERÍSTICAS • Nome completo • Matrícula • Endereço • Campus • Curso • Telefone • Email • ... • Trabalho • Tem filhos • Programa preferido • Livro preferido • Tamanho do calçado • ... Pontos essenciais Abstração [114] Conceitos baseados em abstrações Input OutputOperator Abstração [115] Conceitos baseados em abstrações Input OutputOperator Abstração [116] Conceitos baseados em abstrações Input OutputOperator Abstração [117] Conceitos baseados em abstrações Input OutputOperator Abstração [118] Conceitos baseados em abstrações Input OutputOperator Abstração [120] Conceitos baseados em abstrações Conceitos baseados em abstrações a b c a b c D A D O S P R O C E S S A D O Abstração [121] Conceitos baseados em abstrações Conceitos baseados em abstrações Cliente Servidor Layer 3 Layer 2 Layer 1 Abstração [122] Conceitos baseados em abstrações Conceitos baseados em abstrações Cliente Servidor Layer 3 Layer 2 Layer 1 a b c a b c D A D O S P R O C E S S A D O Abstração [123] Conceitos baseados em abstrações Conceitos baseados em abstrações Exemplos Abstração [124] Por onde começar a limpar o terreno? Abstração [125] Por onde começar a limpar o terreno? Classificar? Abstração [126] Por onde começar a limpar o terreno? Classificar? Abstração [127] Por onde começar a limpar o terreno? Distâncias Abstração [128] Por onde começar a limpar o terreno? Distâncias Abstração [129] Por onde começar a limpar o terreno? // Primeiros passos para começar a programar/ Pensamento Computacional/ [130] Pilares: Algortimos Etapa 6 Algoritmos [131] • Energia • Trabalhador • Eficiência • Rapidez Algoritmos [132] • Energia • Trabalhador • Eficiência • Rapidez Algoritmos [133] • Energia • Trabalhador • Eficiência • Rapidez Algoritmos [134] PROCESSAMENTO DE DADOS O computador recebe, manipula e armazena dados. Algoritmos [135] PROCESSAMENTO DE DADOS O computador recebe, manipula e armazena dados. Algoritmos [136] Processo de resolução de problemas "step by setp" utilizando instruções Instruções O que precisa ser feito? Qual a ordem de execução? Algoritmos [137] Processo de resolução de problemas "step by setp" utilizando instruções Instruções O que precisa ser feito? Qual a ordem de execução? Algoritmos [138] Desenvolvimento do Programa • Análise Estudo e definição dos dados de entrada e saída • Algoritmo • Codificação Algoritmos [139] Desenvolvimento do Programa • Análise • Algoritmo • Descreve o problema por meio de • ferramentas narrativas, fluxograma, • ou pseudocódigo • Codificação Algoritmos [140] Desenvolvimento do Programa • Análise • Algoritmo • Codificação O algoritmo é codificado de acordo com a linguagem de programação escolhida Algoritmos [141] Sequência de passos com objetivo definido Execução de tarefas específicas Conjunto de operações que resultam em uma sucessão finita de ações Algoritmos [142] Algoritmos [143] Instruções executadas passo a passo para concluir a tarefa Algoritmos [144] Como construir um algoritmo? • Compreenção do problema • Definição dados de entrada • Definir processamento • Definir dados de saída • Utilizar um método de construção • Teste e diagnóstico Pontos mais importantes Algoritmos [145] Como construir um algoritmo? • Compreenção do problema • Definição dados de entrada • Definir processamento • Definir dados de saída • Utilizar um método de construção • Teste e diagnóstico Dados fornecidos e Cenário Algoritmos [146] Como construir um algoritmo? • Compreenção do problema • Definição dados de entrada • Definir processamento • Definir dados de saída • Utilizar um método de construção • Teste e diagnóstico Cálculos e Restrições Algoritmos [147] Como construir um algoritmo? • Compreenção do problema • Definição dados de entrada • Definir processamento • Definir dados de saída • Utilizar um método de construção • Teste e diagnóstico Após processamento Algoritmos [148] Como construir um algoritmo? • Compreenção do problema • Definição dados de entrada • Definir processamento • Definir dados de saída • Utilizar um método de construção • Teste e diagnóstico Construção e refinamento do algoritmo Algoritmos [149] Construção de algoritmos Narrativa Fluxograma Pseudocódigo Algoritmos [150] Construção de algoritmos Narrativa Fluxograma Pseudocódigo Utilização da linguagem natural Sem conceitos novos Diversas interpretações possíveis Algoritmos [151] Construção de algoritmos Narrativa Fluxograma Pseudocódigo Utilização de símbolos pré-definidos Simples entendimento Conhecimento prévio da estrutura e símbolos Algoritmos [152] Construção de algoritmos Narrativa Fluxograma Pseudocódigo Portugol Regras definidas Passos a serem seguidos Algoritmos [153] Multiplicação de dois números: Passo 1 – recebe os valores Passo 2 – Multiplica Passo 3 – Imprime resultado Algoritmos [154] Média de alunos: Passo 1 – recebe os valores Passo 3 – Imprime resultado Passo 4 – Regra de aprovação Passo 5 – Imprima o resultado // Primeiros passos para começar a programar/ Pensamento Computacional/ [155] Estudo de caso conceitual: perdido Etapa 7 Perdido [156] Perdido [157] Como resolver o problema utilizando o pensamento computacional? Perdido [158] Como resolver o problema utilizando o pensamento computacional? • Identificar mecanismos • Recursos comuns • Detalhes mais importantes Perdido [159] Sobrevivência Água Comida Abrigo Perdido [160] Sobrevivência Água Comida Abrigo Perdido [161] Sobrevivência Água Chuva Nascente Comida Coletar Caçar Abrigo Loclização Proteção Quente e seco Perdido [162] Sobrevivência Água Chuva Nascente Fogo Comida Coletar Caçar Fogo Abrigo Localização Mapa Proteção Fogo Lança Quente e seco Fogo Perdido [163] Sobrevivência Água Chuva Nascente Fogo Comida Coletar Caçar Fogo Abrigo Localização Mapa Proteção Fogo Lança Quente e seco Fogo REPETIÇÃO Perdido [164] Sobrevivência Água Chuva Nascente Fogo Comida Coletar Caçar Fogo Abrigo Localização Mapa Proteção Fogo Lança Quente e seco Fogo Procurar água Procurar comida Onde construir o abrigo? Danger zones Perdido [165] Sobrevivência Água Chuva Nascente Fogo Comida Coletar Caçar Fogo Abrigo Localização Mapa Proteção Fogo Lança Quente e seco Fogo Perdido [166] Sobrevivência Água Chuva Nascente Fogo Comida Coletar Caçar Fogo Abrigo Localização Mapa Proteção Fogo Lança Quente e seco Fogo FOCO: Nos aspectos principais, não precisa de detalhamento. Perdido [167] So far so good … • Decomposição • Reconhecimento de padrões • Abstração Próximo passo ... Perdido [168] So far so good … • Decomposição • Reconhecimento de padrões • Abstração Próximo passo ... Determinar instruções passo a passo para cozinhar Perdido [169] Preparando a comida • Pegar o peixe • Colocar água na panela • Fever a água • Limpar o peixe • Fazer o cozido • Assar o filé Perdido [170] Preparando a comida • Pegar o peixe • Colocar água na panela • Fevera água • Limpar o peixe • Fazer o cozido • Assar o filé Limpar o peixe Colocar água na panela Ferver a água Fazer o cozido Comer Pescar Assar o filé Perdido [171] Mesmo processo para • Encontrar água • Construir abrigo • Máximizar chances de resgate • ... // Primeiros passos para começar a programar/ Pensamento Computacional/ [172] Estudo de caso aplicado: soma de um intervalo Etapa 8 Soma de intervalo [173] Ex: soma de n° entre 1 e 200 1+2 1+3 1+4 1+5 ... Soma de intervalo [174] Ex: soma de n° entre 1 e 200 1+2 1+3 1+4 1+5 ... Solução ineficiente! Soma de intervalo [175] Ex: soma de n° entre 1 e 200 200 + 1 199 + 2 198 + 3 197 + 4 ... Outra forma de expressar a solução Soma de intervalo [176] Ex: soma de n° entre 1 e 200 200 + 1 199 + 2 198 + 3 197 + 4 ... Decomposição Padrão 200 + 1 = 201 199 + 2 = 201 198 + 3 = 201 197 + 4 = 201 ... Soma de intervalo [177] Ex: soma de n° entre 1 e 200 200 + 1 199 + 2 198 + 3 197 + 4 ... Decomposição Padrão 200 + 1 = 201 199 + 2 = 201 198 + 3 = 201 197 + 4 = 201 ... Soma de intervalo [178] Ex: soma de n° entre 1 e 200 200 + 1 = 201 199 + 2 = 201 198 + 3 = 201 197 + 4 = 201 ... Valor se repete Quantas vezes? 200/2 = 100 201 x 100 = 20.100 Resultado Soma de intervalo [179] Ex: soma de n° entre 1 e 200 200 + 1 = 201 199 + 2 = 201 198 + 3 = 201 197 + 4 = 201 ... Valor se repete Quantas vezes? 200/2 = 100 201 x 100 = 20.100 Resultado Expressar em variáveis Soma de intervalo [180] Expressar em variáveis Ex: soma de n° entre x e y [x, y] -> intervalo 1 e 200 Soma de intervalo [181] Expressar em variáveis Ex: soma de n° entre x e y [x, y] -> intervalo y+x = resultado parcial (y-1) + (x+1) = resultado_parcial … 1 e 200 200 + 1 = 201 199 + 2 = 201 Soma de intervalo [182] Expressar em variáveis Ex: soma de n° entre x e y [x, y] -> intervalo y+x = resultado parcial (y-1) + (x+1) = resultado_parcial … y/2 = total total x resultado parcial = resultado 200/2 = 100 100 x 201 = 20.100 Soma de intervalo [183] Passo 1 – Recebe os valores (x e y) Passo 2 – Resolva: y/2 = total Passo 3 – Resolva: y+x = resultado_parcial Passo 4 – Ache o total Final = total x resultado_parcial Passo 5 – Imprima o resultado Algoritmo // Primeiros passos para começar a programar/ Pensamento Computacional/ [184] Estudo de caso aplicado: adivinhe o número Etapa 9 Adivinhe o número [185] Ex: adivinhe o número O problema consiste em determinar o número escolhido por uma pessoa dentro de um intervalo. Perguntas com respostas de sim e não. Adivinhe o número [186] Ex: adivinhe o número O número é 1? O número é 2? O número é 3? ... Possível solução Adivinhe o número [187] Ex: adivinhe o número O número é 1? O número é 2? O número é 3? ... Possível solução Ineficiente Desperdício de tempo Adivinhe o número [188] Ex: adivinhe o número P: O número é maior que 50? R: Não. P: O número é menor que 20? R: Sim. … até encontrar o número Possível solução Adivinhe o número [189] Método de busca Ex: Busca binária Mais eficiente que busca por varredura Adivinhe o número [190] Método de busca Ex: Busca binária Passo 1 – Ordenar o vetor Passo 2 – Módulo de L/2 Passo 3 – Acessar estrutura Passo 4 – Comparar valores Passo 5 – Repita até encontrar o número Passo 6 – Imprima "Busca bem sucedida" Mais eficiente que busca por varredura Habilidade [191] Como aprimorar essa habilidade? Permitindo que seus alunos expliquem suas decisões e seu processo de desenvolvimento ... (Brennan & Renesck) Para um problema proposto // Primeiros passos para começar a programar [192] Aula 2: Introdução à Lógica de programação Objetivo Geral [193] Esta aula foca em apresentar o conceito de lógica aplicada à programação, como um processo de pensamento atrelado ao conceito de algoritmos e resolução de problemas. Percurso Etapa 1 O que é Lógica? Etapa 2 Técnicas de lógica da programação Etapa 3 Breve história da computação [194] // Primeiros passos para começar a programar/ Introdução à Lógica de Programação [195] O que é Lógica? Etapa 1 Lógica [196] Problema Proposta duvidosa Numerosas soluções Questão Objeto de discussão Lógica [197] Definição formal "Problema é uma questão que foge a uma determinada regra, ou melhor é um desvio de percurso, o qual impede de atingir um objetivo com eficiencia e eficácia." Lógica [198] Lógica Lógica [199] Definição formal de lógica "Parte da filosofia que trata das formas do pensamento em geral (dedução, indução, hipótese, inferência etc.) e das operações intelectuais que visam à determinação do que é verdadeiro ou não." Lógica [200] Lógica Organização coesa Forma de raciocínio Forma como desencadeiam acontecimentos Ordenação que segue convenções Lógica [201] Lógica "Organização e planejamento das instruções, assertivas em um algoritmo, a fim de viabilizar a implantação de um programa." Lógica [202] Percebe que essa definição se aplica no seu cotidiano? Lógica [203] Percebe que essa definição se aplica no seu cotidiano? Sequência de instruções Lógica [204] Percebe que essa definição se aplica no seu cotidiano? Sequência de instruções Ações Ações Ações Lógica [205] Percebe que essa definição se aplica no seu cotidiano? Sequência de instruções Ação Ações Ações Ações Lógica [206] Percebe que essa definição se aplica no seu cotidiano? Sequência de instruções Ação Ações Ações Ações Lógica [207] Seres humanos podem prever comportamentos, computadores não. Falta de costume Lógica [208] Seres humanos podem prever comportamentos, computadores não. Falta de costume Instruções detalhadas Lógica [209] "Everybody in this country should learn how to program a computer because it teaches you how to think." Steve Jobs Por que entender a lógica em programação? // Primeiros passos para começar a programar/ Introdução à Lógica de Programação [210] Técnicas de Lógica de Programação Etapa 2 Técnicas [211] Planta baixa Técnicas [212] Planta baixa Projeto Técnicas [213] Planta baixa Projeto Planejamento Técnicas [214] Planta baixa Projeto Planejamento Seguem a lógica e determinam as instruções Técnica Linear [215] • Modelo tradicional • Não tem vínculo • Estrutura hierárquica • Programação de computadores Modelos de desenvolvimento e resolução Técnica Linear [216] • Modelo tradicional • Não tem vínculo • Estrutura hierárquica • Programação de computadores Modelos de desenvolvimento e resolução fonte: editoraconstruir.com.br Técnica Linear [217] Modelos de desenvolvimento e resolução fonte: editoraconstruir.com.br Ordenação de elementos por uma única propriedade. Única dimensãoRecursos limitados Execução sequenciada Técnica Linear [218] Técnica Linear [219] Acordar Técnica Linear [220] Acordar Fazer o café Técnica Linear [221] Acordar Fazer o café Tomar o café Técnica Estruturada [222] Modelos de desenvolvimento e resolução Organização, disposição e ordem dos elementos essenciais que compõem um corpo (concreto ou abstrato) Estrutura Técnica Estruturada [223] Modelos de desenvolvimento e resolução Objetivo Processamento de dados Entendimento Validação Escrita Manutenção Facilitar Programas Técnica Estruturada [224] Modelos de desenvolvimento e resolução Acordar Técnica Modular [225] Módulo 1 Módulo 3 Módulo 2 Módulo 4 Partes independentes Controlada por um conjunto de regras Modelos de desenvolvimento e resolução Técnica Modular [226] Modelo padrão Técnica Modular [227] Módulo 1 Módulo 3 Módulo 2 Módulo 4 Modelos de desenvolvimento e resolução • Simplicação • Decompor o problema • Verificação do módulo M et as Técnica Modular [228] Modelos de desenvolvimento e resolução Módulo preparar acordar Módulo preparar bebida Módulo tomar café da manhã Regras // Primeirospassos para começar a programar [229] Aula 3: Fundamentos de algoritmos Objetivo [230] Nesta aula serão apresentados os conceitos básicos para o correto entendimento de algoritmos. Esses conceitos como, variáveis, tipos de dados, instruções, condições, entre outros temas relacionados. Percurso Etapa 1 Tipologia e variáveis Etapa 2 Instruções primitivas [231] Etapa 3 Estruturas condicionais e operadores Percurso Etapa 4 Estruturas de repetição Etapa 5 Vetores e matrizes [232] Etapa 6 O que são funções? Percurso Etapa 7 Instruções de entrada/saída [233] // Primeiros passos para começar a programar/ Fundamentos de algoritmos [234] Tipologias e variáveis Etapa 1 Variáveis [235] Qual a função do computador? Variáveis [236] Qual a função do computador? Informação Dados Instruções Tipos de dados [237] Informação Dados Instruções Tratadas e processadas Tipos de dados [238] Informação Dados Instruções Tratadas e processadas Numéricos Caractéres Lógicos Tipos - Numérico [239] 0, 1, 5, 50, 60 , 800, … -58, -50, -49, 32, -10, -5Numéricos Inteiros Reais 5.95, 9.54, -8.8, -0.555 ... 0, 1, 5, 50, 60 , 800, … -58, -50, -49, 32, -10, -5 [240] Tipo - Caracteres "Programação" "PROGRAMAÇÃO" "KU*&NH53g" "Fone:(25)99865-5741" "Rua alameda, n°45" Caractere A C k p e [241] Tipo - Lógico Booleano Lógico Verdadeiro - 1 Falso - 0 [242] Tipo - Lógico Booleano Lógico Verdadeiro - 1 Falso - 0 .Verdadeiro .V ou .S .Falso .F ou .N Português estruturado [243] VariávelO que é uma variável? Mutável Possui variações Incerto Instável Inconstante [244] VariávelO que é uma variável? Variável - pode assumir qualquer um dos valores de um determinado conjunto de valores a + b = ca - b = d [245] VariávelO que é uma variável? Variável - pode assumir qualquer um dos valores de um determinado conjunto de valores a + b = ca - b = d [246] Variável Variável [247] Variável Variável Identificar [248] Variável Regras • Atribuição de um ou mais caracteres • Primeira letra - não número • Sem espaços em branco • Vedado • Utilização de palavras reservadas • Caracteres e números Nome da variável [249] Variável Regras • Atribuição de um ou mais caracteres • Primeira letra - não número • Sem espaços em branco • Vedado • Utilização de palavras reservadas • Caracteres e números Nome da variável Nome_usuario telefone user12 x2 Z4 [250] Variável Modificação de estado Papéis de uma variável Viagiada, controle Ação Controle [251] VariávelO que é uma variável? Definição Tudo aquilo que é fixo ou estável. Inalterável O que não muda Invariável [252] VariávelO que é uma variável? Definição Tudo aquilo que é fixo ou estável. Inalterável O que não muda Invariável [253] Variável Constante? Definição Tudo aquilo que é fixo ou estável. Inalterável O que não muda Invariável phi = 1,618 pi = 3,14 resulta = recebido * 0.10 Objetivo [254] Tratadas e processadas OperaçõesInformação Dados Instruções // Primeiros passos para começar a programar/ Fundamentos de algoritmos [255] Instruções primitivas Etapa 2 Instruções Primitivas [256] Operadores Cálculo matemáticos Variáveis Constantes Instruções Primitivas [257] Operadores Cálculo matemáticos Variáveis Constantes Binário Unário Instruções Primitivas [258] Operadores fonte: livro de referência Instruções Primitivas [259] Operadores Area = pi*raio² fonte: livro de referência Instruções Primitivas [260] Definição formal Instruções são linguagem de palavras-chave (vocabulário) de uma determinada de programação que tem por finalidade comandar um computador que irá tratar os dados O que são instruções? Instruções Primitivas [261] Linguagens de programação Janela Window Ventana Notação Operações Outros conceitos Entrada, processamento e saída Dados [262] Outros conceitos Entrada, processamento e saída Dados [263] Exemplo [264] Média escolar Início programa: Nota1 = 5 Nota = 8 Resultado = 0 Resultado = (Nota1 + Nota2)/2 Escreva resultado Fim programa Saída: 6.5 Exemplo [265] Média escolar Início programa: Nota1 = 5 Nota = 8 Resultado = 0 Resultado = (Nota1 + Nota2)/2 Escreva resultado Fim programa Saída: 6.5 Variável Constante Exemplo [266] Média escolar Início programa: Nota1 = 5 Nota = 8 Resultado = 0 Resultado = (Nota1 + Nota2)/2 Escreva resultado Fim programa Saída: 6.5 Variável Constante Exemplo [267] Média escolar Início programa: Nota1 = 5 Nota = 8 Resultado = 0 Resultado = (Nota1 + Nota2)/2 Escreva resultado Fim programa Saída: 6.5 Variável Constante E se quisermos verificar se foi aprovado ou não? // Primeiros passos para começar a programar/ Fundamentos de algoritmos [268] Estruturas condicionais e operadores Etapa 3 Exemplo [269] Média escolar Início programa: Nota1 = 5 Nota = 8 Resultado = 0 Resultado = (Nota1 + Nota2)/2 Escreva resultado Fim programa Saída: 6.5 Variável Constante E se quisermos verificar se foi aprovado ou não? Estrutura Condicional [270] Condicional Estado de uma pessoa ou coisa Condição Que expressão uma condição ou suposição Contem ou implica uma suposição ou hipótese Estrutura Condicional [271] Qual a ideia? Condição Operação Estrutura Condicional [272] Qual a ideia? Condição Operação Satisfeita Exceção Inverdade Estrutura Condicional [273 Simples Composta Condição Operação Condição Operação Exceção Encadeada Condição Operação Condição Operação Exceção Estrutura Condicional [274 Operadores Relacionais Estrutura Condicional [275 Condicional Simples Fonte: livro de referência Condição Operação Estrutura Condicional [276 Condicional Simples Fonte: livro de referência Se (<codição>) então <instruções para condição verdadeira> fim_se Estrutura Condicional [277 Fonte: livro de referência Início programa: A = 0 B = 0 X = 0 leia A leia B X = A + B se (X > 10) escreva X Fim se Fim programa Estrutura Condicional [278 Condicional Composta Fonte: livro de referência Condição Operação Exceção Estrutura Condicional [279 Condicional Composta Fonte: livro de referência Se (<codição>) então <instruções para condição verdadeira> fim_se Estrutura Condicional [280 Fonte: livro de referência Inicio programa: A = 0 B = 0 X = 0 leia A leia B X = A + B se (X > 10) escreva X Fim se Fim programa Estrutura Condicional [281] Condicional Composta Condição Operação Exceção Fonte: livro de referência Estrutura Condicional [282] Condicional Composta Fonte: livro de referência Se (<codição>) então <instruções para condição verdadeira> Senão <instruções para condição falsa> fim_se Estrutura Condicional [283] Fonte: livro de referência Inicio programa: A = 0 B = 0 X = 0 leia A leia B X = A + B se (X >= 10) X = X-7 Senão X = X+5 Fim se Fim programa Exemplo [284] Média escolar Início programa: Nota1 = 5 Nota = 8 Resultado = 0 Resultado = (Nota1 + Nota2)/2 Escreva resultado Fim programa Saída: 6.5 Estrutura Condicional [285] Condicional Encadeado Condições sucessivas Condição Operação Condição Operação Exceção Fonte: livro de referência Estrutura Condicional [286] Fonte: livro de referência Se (<codição 1>) então <instruções para condição verdadeira> Senão Se (<condição 2>) então <instruções para: condição 2 verdadeira e condição 1 falsa> Senão <instruções para condição 1 e 2 falsas> fim_se Condicional Encadeado Estrutura Condicional [287] Fonte: livro de referência Início programa: A = 0 B = 0 X = 0 leia A leia B X = A + B se (X >= 10) X = X-7 Senão X = X+5 Fim se Fim programa Estrutura Condicional [288] Operadores Lógicos Fonte: biblioo.info Estrutura Condicional [289] Quando utilizar? • Verificação de V ou F • Substituição • encadeamento de condições Operadores lógicos? Estrutura Condicional[290] Fonte: biblioo.info Quando utilizar? • Verificação de V ou F • Substituição • encadeamento de condições Estrutura Condicional [291] AND – operador Lógico Condição verdadeira • Todas devem ser satisfeitas Fonte: l ivro de referência Fonte: dot.li.com Estrutura Condicional [292] AND – operador Lógico Ex: Curso de inglês se (gramatica .e .conversacao) então escreva "aprovado" senão escreva "Reprovado" Fonte: livro de referência Fonte: dot.li.com Estrutura Condicional [293] OR – operador Lógico Condição verdadeira • Apenas uma das condições Deve ser verdadeira Fonte: livro de referência Fonte: dot.li.com Estrutura Condicional [294] AND – operador Lógico Ex: se (choveu .ou. grama_molhada) então escreva "Plantas regadas" senão escreva "Regar plantas" Fonte: livro de referência Fonte: dot.li.com Estrutura Condicional [295] NOT – operador Lógico • Operador de negação • Inversão do resultado lógico Fonte: livro de referência Estrutura Condicional [296] NOT – operador Lógico • Operador de negação • Inversão do resultado lógico Ex: • Not B - > tudo que não está em B // Primeiros passos para começar a programar/ Fundamentos de algoritmos [297] Estruturas de repetição Etapa 4 Estruturas de Repetição [298] Laços Malhas de repetição Repetição Loop Controle de fluxo Trecho de um programa Estruturas de Repetição [299] Trecho de um programa Condições de parada Estruturas de Repetição [300] Trecho de um programa Condições de parada • Número de repetições pré-fixada • Condição a ser satisfeita Estruturas de Repetição [301] Trecho de um programa Mas não é só repetir o código? Estruturas de Repetição [302] Trecho de um programa Mas não é só repetir o código? Redução de linhas Compreensão facilitada Redução de erro Qual a vantagem? Estruturas de Repetição [303] Tem mais de tipo de estrutura de repetição? Enquanto ... faça Repita ... até Para ... de … até … faça Estruturas de Repetição [304] Enquanto Teste lógico • Início Número de repetições • indefinidas Fonte: pt.vecteezy.com Grama alta Estruturas de Repetição [305] Enquanto Teste lógico • Início Número de repetições • indefinidas Fonte: pt.vecteezy.com Grama alta Aparar grama Estruturas de Repetição [306] Enquanto Teste lógico • Início Número de repetições • indefinidas Fonte: pt.vecteezy.com Grama alta Aparar grama Analisar grama Estruturas de Repetição [307] Enquanto Teste lógico • Início Número de repetições • indefinidas grama = Falso Enquanto (grama == falso) faça <instrução de cortar grama> <atualiza grama> fim enquanto [308] Repita Teste lógico • final Número de repetições • indefinidas Procurar artigo Estruturas de Repetição Virar página Analisar conteúdo Estruturas de Repetição [309] Para … de … até Teste • Início Número de repetições • Definidas somatorio = 0 para inicio = 1 até 10 somatorio = somatorio + inicio Escreva somatorio fim para Estruturas de Repetição [310] Trecho de um programa Consigo mesclar as estruturas? Uma dentro da outra? Estruturas de Repetição [311] Trecho de um programa Consigo mesclar as estruturas? Uma dentro da outra? Enquanto (<condição>) Se (<condição2>) <instruções> fimse ... fim enquanto // Primeiros passos para começar a programar/ Fundamentos de algoritmos [312] Vetores e matrizes Etapa 5 Vetores e Matrizes [313] 0, 1, 5, 50, 60 , 800, … -58, -50, -49, 32, -10, -5Numéricos Inteiros Reais 5.95, 9.54, -8.8, -0.555 ... 0, 1, 5, 50, 60 , 800, … -58, -50, -49, 32, -10, -5 Vetores e Matrizes [314] Definição formal "Um vetores é caracterizado por uma variavel dimensionada com tamanho pré-fixado." Container Matriz unidimensional Vetores e Matrizes [315] Definição formal "Matriz é uma tabela organizada em linhas e colunas no form ato m x n, onde m representa o número de linhas (horizontal) e n o número de colunas (vertical)" Container Vetores e Matrizes [316] Matrizes Coleção de variáveis Contiguas em memória Índices Vetores e Matrizes [317] nota11 = 10 nota21 = 5 nota12 = 7 nota22 = 8 ------------------------------------------ notas_aluno1 = [10,5] notas_aluno2 = [7,8] Média escolar Vetores e Matrizes [318] nota11 = 10 nota21 = 5 nota12 = 7 nota22 = 8 ------------------------------------------ notas_aluno1 = [10,5] notas_aluno2 = [7,8] Média escolar notas_alunos = [10,5,7,8] ------------------------------------------ A cada duas posições um novo aluno Vetores e Matrizes [319] vetor conjunto [1..8]<inteiro> vetor[15] Vetor = [] Operações Definição Atribuição Leitura Vetores e Matrizes [320] D a d o s d e a lu n o s Vetores e Matrizes [321] D a d o s d e a lu n o s Vetores e Matrizes [322] Média escolar matriz_alunos[6][6] escreva "ID aluno" escreva matriz_alunos[0][0] escreva "Média" escreva matriz_alunos[0][6] ------------------------------------------ Menor quantidade de linhas // Primeiros passos para começar a programar/ Fundamentos de algoritmos [323] O que são funções? Etapa 6 Funções [324] Função Sub-rotinaMétodo Bloco Subprograma Subalgoritmo Funções [325] Similar ao conceito de função matemática blog.professorferretto.com.br Funções [326] Definição formal As funções, ou sub-rotinas são blocos de instruções que realizam tarefas específicas Decomposição do algoritmo Funções [327] Definição formal As funções, ou sub-rotinas são blocos de instruções que realizam tarefas específicas Decomposição do algoritmo Funções [328] Função? Não é mais fácil fazer tudo junto? Modularização do programa Código mais claro e conciso Reutilização de instruções Funções [329] Função? Não é mais fácil fazer tudo junto? Definição formal "São blocos de instruções (código), identificados por nomes e parâmetros" Assinatura Funções [330] Definição formal "São blocos de instruções (código), identificados por nomes e parâmetros" Nome Invocação Definição Variável local Funções [331] Definição formal "São blocos de instruções (código), identificados por nomes e parâmetros" São destruídas ao encerrar a função Nome Invocação Definição Variável local Funções [332] Resultado Função Dados Funções [333] Resultado Função Dados Alterar estado do programa Funções [334] Exemplo Agora vamos determinar a média escolar através de uma função. Qual o ganho que teremos ao fazer essa modificação? Funções [335] Agora vamos determinar a média escolar através de uma função. Qual o ganho que teremos ao fazer essa modificação? Exemplo Reutilização de código Funções [336] Média escolar funcao mediaescolar(nota1,nota2) resultado = 0 resultado = (Nota1 + Nota2)/2 retorne resultado fim funcao ------------------------------------------ aluno1 = mediaescolar(nota11,nota21) aluno2 = mediaescolar(nota12,nota22) aluno13 = mediaescolar(nota13,nota23) // Primeiros passos para começar a programar/ Fundamentos de algoritmos [337] Instruções de entrada/saída Etapa 7 Instruções de entrada/saída [338] Resultado Dados Processamento Instruções de entrada/saída [339] Resultado Dados Processamento Quais os tipos e como inserir os dados? Como exibir meu resultado? Instruções de entrada/saída [340] Definição formal Consiste na inserção e recebimento de dados do mundo real por meio de ação de alguma interface, seja teclado, mouse, arquivos, entre outros. Instruções de entrada Instruções de entrada/saída [341] Metadados Inserção de dadosArquivos Instruções de entrada/saída [342] Definição formal Consiste na impressão dos dados do mundo abstrato, digital por meio de ação de alguma interface. Os formatos podem variar desde simples arquivos binários até complexas querys de banco de dados. Instruções de saída Instruções de entrada/saída [343] Dispositivos de saída Arquivos Log do sistema Arquivos de acesso ao usuárioHíbridos Instruções de entrada/saída [344] Existem dois tipos de saídas dentro de um programa (algoritmo) Saída programada Saída por interrupção Definida pelos periféricos Instruções de entrada/saída [345] Existem dois tipos de saídas dentro de um programa (algoritmo) Saída programada Saída por interrupção Condicinal Incondicional Instruções de entrada/saída [346] Existem dois tipos de saídas dentro de um programa (algoritmo) Saída programada Saída por interrupção Condicinal Incondicional Aguarda o dispositivo Instruções de entrada/saída [347] Casos • Bem sucedida • Erro de sintaxe ou outro • Erros de programação • Problemas com a interface Saída na programação código // Primeiros passos para começar a programar [348] Aula 4: Linguagens de programação Objetivo [349] O objetivo desta aula é apresentar os paradigmas de programação existentes, incluindo o conceito em si. As linguagens de programação são baseadas em um ou mais paradigmas, sendo o último caso conhecido como linguagem multiparadigma. Percurso Etapa 1 Introdução à linguagem de programação Etapa 2 Como um computador entende o programa? [350] Etapa 3 Características de um programa Percurso Etapa 4 Análises e código Etapa 5 Paradigmas de programação [351] // Primeiros passos para começar a programar/ Linguagens de programação [352] Introdução à linguagem de programação Etapa 1 Introdução [353] • Compreender as dificuldades enfrentadas; • Fundamentos da computação; • O processo de pensamento. Por que falar de história da computação? Introdução [354] • Compreender as dificuldades enfrentadas; • Fundamentos da computação; • O processo de pensamento. Por que falar de história da computação? Novos paradigmas Base em pesquisas anteriores Introdução [355] • Compreender as dificuldades enfrentadas; • Fundamentos da computação; • O processo de pensamento. Por que falar de história da computação? Novos paradigmas Base em pesquisas anteriores Hardware Software Introdução [356] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1920 Conceito de software Charles Babbage 1937 Alan Turing na escola de cifra e códigos 9 matemáticos 1940 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 Fonte: estalmat.org - ábaco romano Introdução [357] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1920 Conceito de software Charles Babbage 1937 Alan Turing na escola de cifra e códigos 9 matemáticos 1940 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 2° guerra mundial: 1939 - 1945 Introdução [358] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1820 Conceito de software Charles Babbage 1937 Alan Turing na escola de cifra e códigos 9 matemáticos 1940 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 fonte: http://www.arithmometre.org/ Introdução [359] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1820 Conceito de software Charles Babbage 1837 Alan Turing na escola de cifra e códigos 9 matemáticos 1840 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 Introdução [360] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1820 Conceito de software Charles Babbage 1837 Alan Turing na escola de cifra e códigos 9 matemáticos 1840 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 Introdução [361] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1820 Conceito de software Charles Babbage 1937 Alan Turing na escola de cifra e códigos 9 matemáticos 1940 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 Alan Turing Máquina enigma – cenas do filme Jogo da Imitação Introdução [362] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1820 Conceito de software Charles Babbage 1937 Alan Turing na escola de cifra e códigos 9 matemáticos 1940 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 Alan Turing Von Neuman Claude Shannon Introdução [363] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1820 Conceito de software Charles Babbage 1937 Alan Turing na escola de cifra e códigos 9 matemáticos 1940 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 Alan Turing Von Neuman Introdução [364] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1920 Conceito de software Charles Babbage 1937 Alan Turing na escola de cifra e códigos 9 matemáticos 1940 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 Alan Turing Fonte: jstor.org Introdução [365] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1820 Conceito de software Charles Babbage 1937 Alan Turing na escola de cifra e códigos 9 matemáticos 1940 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 Claude Shannon Introdução [366] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1820 Conceito de software Charles Babbage 1937 Alan Turing na escola de cifra e códigos 9 matemáticos 1940 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 fonte: invent.org Introdução [367] História da computação Primeiro dispositivo de cálculo 3mil A.C Instrumentos computacionais 1820 Conceito de software Charles Babbage 1937 Alan Turing na escola de cifra e códigos 9 matemáticos1940 Transcrição de Ada Lovelace 1942 – 43 Projeto Dilab EUA Codificador de voz Turing, Neunam e Shanon Entre 40 e 50 ACE Neuman e Turing 1946 Claude Shanon – algebra booleana 1948 IA – Turing 1950 Máquina de cartões usado no censo americano 1880 fonte: invent.org [368] Introdução Válvula Relés - avanço Primeiros computadores IBM Separação de memórias Dicisão - algoritmo Harvard Mark 1 Programável 18 mil válvulas ENIAC Fonte: inf.ufrgs.br 2° guerra mundial Mulheres programando no ENIAC [369] Introdução Programa armazenado EDVAC Colossus - programação por fio [370] Introdução Intel 8080 Linguagem basic - Microsoft 1975 Apple 1976 Apple II 1977 IBM-PC 1981 Apple III 1980 Lisa – fracasso da Apple 1983 Windows 1.0 1985 Windows 2000 1988 Windows XP 2001 Fonte:wired.com fonte: computerhistory.org [371] Introdução Intel 8080 Linguagem basic - Microsoft 1975 Apple 1976 Apple II 1977 IBM-PC 1981 Apple III 1980 Lisa – fracasso da Apple 1983 Windows 1.0 1985 Windows 2000 1988 Windows XP 2001 Apple II IBM-PC o p e n s o u rc e [372] Introdução Intel 8080 Linguagem basic - Microsoft 1975 Apple 1976 Apple II 1977 IBM-PC 1981 Apple III 1980 Lisa – fracasso da Apple 1983 Windows 1.0 1985 Windows 2000 1988 Windows XP 2001 Apple III LISA Interface de usuário [373] Introdução Intel 8080 Linguagem basic - Microsoft 1975 Apple 1976 Apple II 1977 IBM-PC 1981 Apple III 1980 Lisa – fracasso da Apple 1983 Windows 1.0 1985 Windows 2000 1988 Windows XP 2001 Introdução [374] Assembly • 1949 • Primeira linguagem • Linguagem de • Montagem • Máquina [375] 1949 Ling. de máquina Anos 50 1° linguagens Entre 60 e 70 Paradigmas Déc. 90 Alto nível 2000 Novos conceitos [376] 1949 Ling. de máquina Anos 50 1° linguagens Entre 60 e 70 Paradigmas Déc. 90 Alto nível 2000 Novos conceitosApple II fonte: computerhistory.org [377] 1949 Ling. de máquina Anos 50 1° linguagens Entre 60 e 70 Paradigmas Déc. 90 Alto nível 2000 Novos conceitos Prolog ML [378] 1949 Ling. de máquina Anos 50 1° linguagens Entre 60 e 70 Paradigmas Déc. 90 Alto nível 2000 Novos conceitos Prolog ML [379] 1949 Ling. de máquina Anos 50 1° linguagens Entre 60 e 70 Paradigmas Déc. 90 Alto nível 2000 Novos conceitos Prolog ML Introdução [380] Problemas computacionais Objeto de discussão que possui instruções passo a passo que são mais facilmente resolvíveis em ambiente computacinal. Problemas de decisão Problemas de busca Problemas de otimização Introdução [381] • Caracter lógico - Sim ou Não • Ideia • Pertencimento Problemas de decisão A Introdução [382] • Caracter lógico - Sim ou Não • Ideia • Pertencimento Ex: "Dado um número n inteiro positivo, determine se n e primo" Problemas de decisão A Introdução [383] • Caracter lógico - Sim ou Não • Ideia • Pertencimento Ex: "Dado um número n inteiro positivo, determine se n e primo" Problemas de decisão A Introdução [384] • Relacionamento binário • Objetivo • Semelhante ao nome • x está em A? • Recorrente em teoria de grafos • Ex: clique Problemas de busca Introdução [385] Objetivo • Maximizar, ou • Minimizar uma função Aplicações Problemas de otimização Introdução [386] Método padronizado composto por um conjunto de regras sintáticas e semânticas de implementação de um código fonte. O que é uma linguagem de programação? Introdução [387] Método padronizado composto por um conjunto de regras sintáticas e semânticas de implementação de um código fonte. Conjunto de palavras com regras O que é uma linguagem de programação? Introdução [388] Código fonte Tradução Interpretação // Primeiros passos para começar a programar/ Linguagens de programação [389] Como o computador entende o programa? Etapa 2 Introdução [390] Código fonte Tradução Interpretação Introdução [391] Como o computador entende o programa? Um programa é um amontado de palavras senão for possível que o computador entenda Introdução [392] Como o computador entende o programa? Um programa é um amontado de palavras senão for possível que o computador entenda Processo de tradução Introdução [393] Como o computador entende o programa? Linguagem de alto nível Compilador Executa analise do programa Introdução [394] Como o computador entende o programa? Linguagem de alto nível Compilador Executa analise do programa Assembly Linguagem de máquina Introdução [395] Como o computador entende o programa? Linguagem de alto nível Compilador Executa analise do programa Assembly Linguagem de máquina Introdução [396] Interpretação Programa fonte executado diretamente (1) Geração do programa objeto (2) Execução do programa objeto Tradução Tradução [397] Bibliotecas externas Programa fonte Análises Tradução [398] Interpretador Programa fonte Execução Introdução [399] Interpretação Programa fonte executado diretamente (1) Geração do programa objeto (2) Execução do programa objeto Tradução Execução mais rápida Maior flexibilidade Programas menores Introdução [400] Interpretação Programa fonte executado diretamente (1) Geração do programa objeto (2) Execução do programa objeto Tradução Execução mais rápida Maior flexibilidade Programas menores // Primeiros passos para começar a programar/ Linguagens de programação [401] Características de um programa Etapa 3 [402] Basta sair programando? Características [403] Basta sair programando? Características Sim, existem importantes características [404] Características Diretrizes Desenvolvimento de programas Legibilidade Redigibilidade Confiabilidade Custo [405] Características Legibilidade • Facilidade de leitura • Compreensão • Ortogonalidade • Definição adequada das estruturas "Estado que é legível" Coerência nas instruções [406] Características Redigibilidade • Pode conflitar com a legibilidade • Ortogonalidade • Simplicidade da escrita • Suporte à abstração • Reuso do código • Expressividade Coerência nas instruções Facilidade de escrita de código [407] Características Redigibilidade • Pode conflitar com a legibilidade • Ortogonalidade • Simplicidade da escrita • Suporte à abstração • Reuso do código • Expressividade Coerência nas instruções Facilidade de escrita de código operador ++ uso do for [408] Características Confiabilidade Possui: • verificação de tipos • Trata exceções • Uso de ponteiros • Compatibilidade entre compiladores Faz o que foi programado para fazer [409] Características Custo Possui: • Treinamento • Codificação • Compilação • Execução • Infra-estrutura Análise de impacto Características [410] Outras características Comunidade ativa Disponibilidade de ferramentas Adoção pelo mercado Atualizações Uso para IA // Primeiros passos para começar a programar/ Linguagens de programação [411] Análises de código Etapa 4 Análise [412] Análise léxica [413] Particionar Classificar Eliminar Análise léxica [414] Particionar Classificar Eliminar Elementos denominados tokens Análise léxica [415] Particionar Classificar Eliminar Elementos denominados tokens Elementos: identificadores, palavras reservadas, números, strings Análise léxica [416] Particionar Classificar Eliminar Elementos denominados tokens Elementos: identificadores, palavras reservadas, números, strings Elementos: Caracteres de espaços em branco, comentários, ... [417] Análise sintática Sintaxe: "componente do sistema linguístico que interligam os constituintes da sentença, atribuindo-lhe uma estrutura" Corretude do programa Forma [418] Análise sintática Sintaxe: "componente do sistema linguístico que interligam os constituintes da sentença, atribuindo-lhe uma estrutura" Padrão - gramática • Depende da linguagemde programação utilizada Forma [419] Análise semântica Semântica: "É o estudo do significado. Incide sobre a relação entre significantes, como: palavras, frases, sina is e símbolos" Lógica do programa Significado [420] Análise semântica Semântica: "É o estudo do significado. Incide sobre a relação entre significantes, como: palavras, frases, sina is e símbolos" Erro de semântica: • não faz o que é esperado Significado if (x = 0) printf("O valor e' nulo\n"); [421] Análise semântica Semântica: "É o estudo do significado. Incide sobre a relação entre significantes, como: palavras, frases, sina is e símbolos" Erro de semântica: • não faz o que é esperado Significado if (x = 0) printf("O valor e' nulo\n"); if (x == 0) printf("O valor e' nulo\n"); Erro de semântica // Primeiros passos para começar a programar/ Linguagens de programação [422] Paradigmas de programação Etapa 5 [423] Paradigmas O que é um paradigma? [424] Paradigmas O que é um paradigma? Definição formal "Forma de resolução de problemas com diretrizes e limitações específicas de cada paradigma utilizando linguagem de programação." [425] Classificação Orientação à objeto Estruturado Procedural Computação distribuída Funcional Lógico [426] Classificação Orientação à objeto Estruturado Procedural Computação distribuída Funcional Lógico [427] Classificação Orientação à objeto Estruturado Procedural Computação distribuída Funcional Lógico [428] Classificação Orientação à objeto Estruturado Procedural Computação distribuída Funcional Lógico [429] Classificação Orientação à objeto Estruturado Procedural Computação distribuída Funcional Lógico [430] Classificação Orientação à objeto Estruturado Procedural Computação distribuída Funcional Lógico [431] Classificação Orientação à objeto Estruturado Procedural Computação distribuída Funcional Lógico Ada [432] Paradigma Estruturado Conceitos: • Sequência • Decisão • Iteração Ênfase em sequência [433] Paradigma Estruturado Conceitos: • Sequência • Decisão • Iteração Ênfase em sequência [434] Paradigma Estruturado Conceitos: • Sequência • Decisão • Iteração Ênfase em sequência Dominou o mercado até POO [435] Paradigma Estruturado Utilização: • Problemas simples e diretos • Aprender programação POO ainda não compreendida por muitos Ênfase em sequência [436] Paradigma Estruturado Conceitos: • Sequência • Decisão • Iteração Ênfase em sequência [437] Orientação à Objeto Paradigma de programação baseado na utilização de objetos e suas interações Análogo ao mundo real [438] Orientação à Objeto O que é um objeto? [439] Orientação à Objeto O que é um objeto? [440] Orientação à Objeto "Um objeto é descrito por características específicas, comportamentos e estado" O que é um objeto? O que tenho Sou capaz de fazer Como faço [441] Modelo Cor Carga Corpo Tampa Ponta O que tenho Sou capaz de fazer Como faço escrever desenhar rabiscar pintar destampar Tampada Destampada Em uso Orientação à Objeto [442] Orientação à Objeto O ri e n ta ç ã o a O b je to O que tenho Sou capaz de fazer Como faço Atributos Métodos Estados [443] Orientação à Objeto Modelo Atributos Métodos Estados Classificação [444] Ponto de vista da programação POO Estruturada O que é um objeto? Variável Alocação em Alocação em memória Operações associadas Classe Alocação em memória Operações associadas Orientação à Objeto [445] classe caneta(): cor: inteiro carga: caracter tampada: lógico metodo escrever() Se estado tampada Escreva ("Destampar") Senão Escreva ("algo") Fimse metodo tampar() Tampada = verdadeiro fimclasse Orientação à Objeto [446] Orientação à Objeto HERANÇA ENCAPSULAMENTO POLIMORFISMO ABSTRAÇÃO Pilares de Orientação a Objeto • Classes • Características • Atributos • Métodos [447] Orientação à Objeto Comportamento e estado Específicos Comportamento e Estado gerais Classe mãe Classe filho Classe filha [448] Orientação à Objeto PE POO Reuso de código Problemas específicos e diretos // Primeiros passos para começar a programar [449] Referências Bibliográficas Referências [450] Computional Thiking https://www.cs.cmu.edu/~CompThink/resources/TheLinkWing.pdf https://ubiquity.acm.org/article.cfm?id=1922682 https://www.youtube.com/watch?v=YVEUOHw3Qb8 https://simplificandoredes.com/historia-da-computacao/ https://simplificandoredes.com/pensamento-computacional/ https://www.cs.cmu.edu/~CompThink/resources/TheLinkWing.pdf https://ubiquity.acm.org/article.cfm?id=1922682 https://www.youtube.com/watch?v=YVEUOHw3Qb8 https://simplificandoredes.com/historia-da-computacao/ https://simplificandoredes.com/pensamento-computacional/ Referências [451] Padrões https://www.cin.ufpe.br/~if114/Monografias/Reconhecimento/ https://web.fe.up.pt/~jmsa/recpad/index.htm https://www.teses.usp.br/teses/disponiveis/18/18133/tde-10072006- 002119/publico/Capitulo_2_mestrado.pdf http://www.vision.ime.usp.br/~teo/publications/dissertacao/node9.html https://periodicos.furg.br/vetor/article/view/3363/3811 https://www.cin.ufpe.br/~if114/Monografias/Reconhecimento/ https://web.fe.up.pt/~jmsa/recpad/index.htm https://www.teses.usp.br/teses/disponiveis/18/18133/tde-10072006-002119/publico/Capitulo_2_mestrado.pdf http://www.vision.ime.usp.br/~teo/publications/dissertacao/node9.html https://periodicos.furg.br/vetor/article/view/3363/3811 Referências [452] Programação e algoritmos http://www.inf.ufes.br/~tavares/labcomp2000/aulas.htm https://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/ http://www.inf.ufes.br/~tavares/labcomp2000/aula1.htm http://www.inf.ufes.br/~tavares/labcomp2000/aulas.htm https://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/ http://www.inf.ufes.br/~tavares/labcomp2000/aula1.htm Referências [453] Algoritmos Livro: Fundamentos da programação de computadores – Pearson https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3t WYp6V_F-5jb5L2iHb Algoritmos - MIT https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb Referências [454] • José Augusto Manzano, Algoritmos - lógica para desenvolvimento de programação de computadores, Ed. Érica, 17a ed. (ou mais recentre) - livro de referência • Ana Fernandes Ascencio, Fundamentos da programação de computadores - algoritmos, Pascal, C/C e Java, Ed. Pearson, 2a ed. • Andrew S. Tanenbaum, “Livro Organização Estruturada de Computadores”, Ed. Pearson, 5a edição -- Capítulo 1 Referências [455] • The Formal Semantics of Programming Languages, Glynn Winskel Deitel e Deitel, “C++ How to Program”, 5th edition, Editora Prentice Hall, 2005 -- Capítulo 1 • Waldemar Celes, Renato Cerqueira e José Lucas Rangel, "Introdução a Estrutura de Dados com Técnica de Programação em C", Editora Campus-Elsevier, 2004 -- Capítulo 1 > Fórum/Artigos > Comunidade Online (Discord) Dúvidas? [456] https://discord.com/invite/gFKWUdTkaj
Compartilhar