Módulo 1: Contextualização Este trabalho, tem o objetivo de auxiliar os alunos das disciplinas de Introdução a Programação de Computadores, para cursos de Engenharia e de Automação, em seus estudos e no acompanhamento do conteúdo ministrado nestas disciplinas. É importante o aluno ter em mente, que este trabalho não é uma referência definitiva, nem uma fonte de consulta suficiente para as disciplinas, ele apenas visa sintetisar o conteúdo das disciplinas de introdução a programação de compuradores e orientar os alunos em seus estudos. aproveite este trabalho, mas não se limite a ele. "Meditar Produz Sabedoria Este provérbio Chinês mostra que não importa o que se está tentando entender, se é sobre ciências, religião, cultura, filosofia, etc... se você não parar para meditar sobre o assunto, terá dificuldade em aprendê-lo. Faça um teste, quando estiver estudado para uma prova e após passar o dia estudado, ao colocar a cabeça no travesseiro para dormir, fique meditando sobre o que você estudou ao longo dia por uma hora, você vai fixar mais o conteúdo nesta hora, do que nas horas que estudou ao longo do dia. Outro teste, quando estiver lendo um livro, não importa se um romance, leia um parágrafo e pare para meditar sobre o que autor quer dizer, além de entender melhor a idéia do autor, você vai fixar bem mais o conteúdo do livro. para CURSOS de ENGENHARIA e de AUTOMAÇÃO Página 1
Universos de um Problema Pode parecer estranho falar em universos de um problema, visto que estamos acostumados a conviver com problemas em nosso universo real, com problemas que nos cercam no dia a dia e não imaginamos nossos problemas sendo solucionados de diversas maneiras diferentes. Todavia se olhar-mos mais atententamente em nossa volta, vamos perceber a existência de inúmeros universos paralelos que nos auxiliam na solução de nossos problemas a todo instante. Dentro desta perspectiva, podemos definir um problema e solucioná-lo em inúmeros universos distintos: Um destes universos paralelos é o universo computacional, ou seja, o mundo do computador. Nesta perpectiva podemos sulucionar um problema em dois universos distintos: 1. Universo REAL, isto é, resolver o problema no mundo REAL. 2. Universo COMPUTACIONAL, isto é, resolver o problema com o computador. Evidentemente, nem todos os problemas do universo REAL são solucionáveis no universo COMPUTACIONAL. O mundo do computador, internet, etc, podem lhe ajudar a conhecer uma pessoa, mas não fazer com que essa pessoa venha a amar você, esse problema você vai ter que resolver no seu universo. É importante perceber, que o método de interpretação, entendimento e solução de um problema difere de universo para universo, o método de solução e os recursos adotados, para a solução de um simples problema matemático, podem ser diferentes quando solucionados no universo real, da solução adotada no universo computacional. para CURSOS de ENGENHARIA e de AUTOMAÇÃO Página 2
Expressão e solução do problema no Universo REAL Figura 001 : ciclo do problema no universo REAL Se analisarmos a forma como solucionamos nossos problemas no dia a dia, vamos perceber que seguimos normalmente uma mesma lógica para solução de todos os problemas, independente de sua complexidade, algo como: 1. Identificamos o problema; 2. Analisamos e entendemos o problema; 3. Definimos uma solução, isto é; o conjunto de ações a serem tomadas; 4. Executamos esse conjunto de ações; 5. Obtemos um resultado, ou seja, a solução do problema. Observe que, intuitivamente a solução que construimos, se assemelha a algo como um conjunto de ações a ser tomada (às vezes chamado de algoritmo). Isto é; ações que devem ser realizadas em uma seqüência lógica. Devemos realizar as ações do item 1 antes de realizar as ações do item 2, as do item 2 antes das do item 3, e assim sucessivamente. Não parece óbvio que não podemos realizar as ações do item 4 antes da do item 3?, isto é; que não podemos realizar ações antes saber quais ações devem ser realizadas?. momento meditação medite sobre o que você leu nesta página para CURSOS de ENGENHARIA e de AUTOMAÇÃO Página 3
Exemplo prático Imagine que meus amigos, me convidaram para ir ao cinema. 1. Identificação do problema: 2. Análise e entendimento do problema: DINHEIRO PARA O INGRESSO Não tenho dinheiro no bolso, no banco não tem o suficiente. Solução 1 pedir emprestado aos meus amigos, Solução 2 pedir para o meu Pai, 3. Como vou solucionar o problema: Ligar para o meu Pai, Pedir que deposite dinheiro na minha conta, Ir a um caixa eletrônico, Retirar dinheiro. 4. Realização das ações: Liguei para meu Pai, ele depositou dinheiro na minha conta, 5. Solução do problema: Fui ao caixa eletrônico Observe que, o conjunto de ações para resolver o problema Dinheiro para o ingresso, pode ser utilizado para resolver uma gama maior de problemas, ou seja toda vez que precisarmos dinheiro, podemos adotar a mesma sequência de ações: 1. Ligar para o meu Pai; 2. Pedir que deposite dinheiro na minha conta; 3. Ir a um caixa eletrônico; 4. Retirar dinheiro. Ou seja, temos uma espécie de receita para quando o problema for dinheiro. para CURSOS de ENGENHARIA e de AUTOMAÇÃO Página 4
Expressão e solução do problema no Universo COMPUTACIONAL Foi mencionado anteriormente, a existência de universos paralelos e que nos auxiliam na solução de problemas. Considerando o computador como sendo este Universo, podemos classificar os problemas em três classes distintas: 1. Os que não podem ser resolvidos no Universo COMPUTACIONAL, 2. Os que também podem ser resolvidos no Universo COMPUTACIONAL, 3. Os que somente podem ser resolvidos no Universo COMPUTACIONAL. Deve-se observar, que Independente da classe do problema resolvido pelo computador, os problema são conhecidos no mundo REAL e somente serão resolvidos no universo COMPUTACIONAL após serem identificados, analisados e entendidos no universo REAL. Figura 002 : ciclo do problema no universo COMPUTACIONAL A figura 002 torna explícita a relação existente entre o universo REAL e o universo COMPUTACIONAL na solução de problemas, nela percebemos que o problema tem sua origem e solução no Universo REAL, todavia o caminho percorrido para ir do problema até a solução pode ficar restrito ao Universo REAL, mas também pode percorrer o universo COMPUTACIONAL para ser resolvido e retornar ao universo REAL como solução. para CURSOS de ENGENHARIA e de AUTOMAÇÃO Página 5
A figura nos mostra que um problema pode ser resolvido em dois universos distintos: 1. No próprio universo real, como descrito no tópico anterior; 2. No universo computacional. Observe que para ser resolvido no universo COMPUTACIONAL, é necessário que o problema seja entendido e sua solução conhecida no universo REAL. Esta solução, conhecida no universo REAL, é então modelada e transferida para o universo COMPUTACIONAL na forma de um programa de computador, isto é; como um conjunto de ações expressas em uma linguagem capaz de ser entendida pelo computador. A execução deste programa vai resultar na solução do problema. Observe entretanto, que a solução obtida é uma solução do universo COMPUTACIONAL e que somente pode ser entendida pelo computador. Para que nós, serem humanos, sejam capazes de analisar e entender a solução, a mesma deve então ser transferida para o universo REAL, através de alguma forma de visualização. Semelhante a solução de problemas do dia a dia, nas soluções envolvendo o universo computacional também identificamos um lógica comum a ser seguida, que independe da complexidade do problema, algo como: 1. Analisamos e entendemos o problema no universo REAL, 2. Expressamos uma solução como um conjunto de ações (um algoritmo), 3. Modelamos o algoritmo na forma de uma linguagem de computador, 4. Executamos o programa obtendo uma solução, 5. Transformamos a solução para uma forma visual no universo REAL. Novamente a lógica de solução se assemelha a algo como uma seqüência de ações à serem tomadas, isto é; que devem ser realizadas em uma seqüência lógica, devemos realizar as ações do item 1 antes de realizar as ações do item 2, as do item 2 antes das do item 3, e assim sucessivamente. Perceba que a solução do problema no universo COMPUTACIONAL, somente pode ser obtida após o problema ser resolvido no universo REAL, ou seja, não podemos esperar que o computador resolva um problema que não sabemos como resolver. momento meditação medite sobre o que você leu neste tópico para CURSOS de ENGENHARIA e de AUTOMAÇÃO Página 6
Exemplo prático Imagine que você foi contratado para elaborar um programa de computador, capaz de verificar se um determinado número, inteiro e positivo, é PAR ou IMPAR. Definimos anteriormente, uma lógica comum a ser seguida para solução de problemas no universo computacional: 1. Analisamos e entendemos o problema no universo REAL, 2. Expressamos uma solução como um conjunto de ações (um algoritmo), 3. Modelamos o algoritmo na forma de uma linguagem de computador, 4. Executamos o programa obtendo uma solução, 5. Transformamos a solução para uma forma visual no universo REAL. 1.1 Identificação do Problema: N é PAR ou IMPAR? 1.2 Análise e entendimento do problema: Um número é PAR se for divisível por 2 2.1 Como solucionar o problema: Conhecer N, o número a ser verificado; Calcular o resto da divisão de N por 2; se o resto for zero então o número N é par ; senão o número N é impar ; fimse 3.1 Modelar na forma da Linguagem C#: int N = 4; int Resto = N % 2; if ( Resto == 0 ) { PAR ; }else{ IMPAR } 4.1 Execução do Problema e visualização de resultados para CURSOS de ENGENHARIA e de AUTOMAÇÃO Página 7
momento meditação Neste capítulo fixe os seguintes tópicos a. Soluções de problemas no universo COMPUTACIONAL, somente pode ser obtida após o problema ser resolvido no universo REAL. b. Independente da complexidade do problema a ser resolvido, podemos sempre seguir a mesma lógica para solucioná-lo. 1. Analisamos e entendemos o problema no universo REAL, 2. Expressamos uma solução como um conjunto de ações (um algoritmo), 3. Modelamos o algoritmo na forma de uma linguagem de computador, 4. Executamos o programa obtendo uma solução, 5. Transformamos a solução para uma forma visual no universo REAL. para CURSOS de ENGENHARIA e de AUTOMAÇÃO Página 8