Apresentação Há algum tempo atrás, a utilização de computadores era limitada a alguns projetos científicos e a alguns tipos de ligações industriais. O seu poder, suas funcionalidades e suas capacidades eram menosprezadas pelo público em geral que não acreditava nos benefícios possíveis da sua utilização. Atualmente, a situação se inverteu. Todas as pessoas sabem da importância do computador em nosso mundo moderno. Até as pessoas que menos acreditavam no computador se renderam às funcionalidades e facilidades que esta tecnologia disponibilizou ao público em geral. Fisicamente, o computador não é mais do que um conjunto de componentes elétricos, mecânicos e eletromecânicos capazes de processar informações fornecidas por instruções lógicas. Sua principal função é a execução confiável e rápida de tarefas, facilitando o trabalho do usuário. Entre estas tarefas estão os cálculos complexos, tarefas repetitivas e interativas que exijem uma resposta imediata a determinados estímulos externos. A sua implantação já se generalizou em quase todas as áreas comerciais, industriais e econômicas, para não falar nas áreas de educação, lazer e entretenimento. Hoje, o computador já é responsável por nossas contas bancárias, controla o espaço aéreo, gerencia sistemas industriais etc. Em casa seu papel é cada vez mais importante, pois facilita ao usuário a execução de tarefas outrora complicadas, bem como algum divertimento sob a forma de jogos ou aplicações interativas. Objetivo Durante este curso abordaremos a questão do pensamento dedutivo e matemático, seus limites e o raciocínio abstrato. Começaremos revendo alguns conceitos, com a finalidade de consolidar os seus conhecimentos quanto ao funcionamento de um computador. Você vai ter a oportunidade de conhecer um pouco da história e da evolução da ciência da computação até os dias de hoje, também vai ver alguns conceitos que serão fundamentais para a vida profissional e conhecimentos sobre Lógica de Programação e as técnicas para desenvolvimento de Algorítmos. Aproveite ao máximo o curso. Interaja com seus colegas e principalmente com o seu tutor. Lembre-se a sua dúvida pode ser a dúvida de outros colegas, compartilhe conosco as suas dificuldades. Não deixe suas dúvidas para depois! A lógica é a base da existência, é ela que define o que somos e o que fazemos! Fonte: Site da Fundação Bradesco Sistemas de computação Fisicamente, o computador não é mais do que um conjunto de componentes elétricos, mecânicos e eletromecânicos capazes de processar informações, portanto todo e qualquer sistema de computação são compostos de componentes físicos e lógicos. Esses componentes são conhecidos como: HARDWARE são partes mecânicas, elétricas e eletrônicas. SOFTWARE são métodos, procedimentos, normas e documentação necessários ao funcionamento da parte física. Estrutura lógica A estrutura interna de um computador pode ser dividida em quatro unidades lógicas: Unidade Central de Processamento - O processador é o cérebro do computador, o componente que calcula operações de lógica binária (adição, subtração etc.), lê e escreve informação na memória do computador e que diz aos outros componentes o que fazer. Dispositivos de Entrada e Saída - As unidades de entrada de dados realizam a interface entre homem e máquina, exemplo: o teclado, o mouse etc. Já as Unidades de saída de dados devolvem a informação processada entre a máquina e o homem, exemplo: a impressora, o vídeo etc. Programas (software) - Apesar de não terem qualquer tipo de implementação física, os softwares dão vida aos diversos componentes do computador e os fazem trabalhar para um fim comum. Isto só é possível, através de instruções específicas de operação agrupadas em unidades lógicas ou programas. Unidades de Memória - É o principal local de operação do computador, pois armazena toda a informação associada ao programa a ser executado. Memória interna ou principal A memória interna ou principal tem alta velocidade de acesso e é o centro de todas as atividades no computador. Ela armazena temporariamente toda a informação que o computador precisa. A memória é dividida em pequenas unidades ("palavras") cada uma com endereço único. As primeiras máquinas usavam válvulas biestáveis e depois passaram a usar núcleos magnéticos, atualmente utiliza-se memórias semicondutoras. As memórias utilizam o Sistema Binário: 1(ligado) e 0 (desligado) e tem como finalidade armazenar instruções e dados para a realização de uma determinada tarefa. Vamos fazer uma analogia. Imagine um bloco de notas, nada está permanentemente registrado no papel. Basta escrever por cima, que toda a informação anterior é Fonte: Site da Fundação Bradesco automaticamente substituída pela nova. Tipos de memória A memória pode ser dividida quanto a sua funcionalidade em três tipos distintos: ROM (read only memory) - não é volátil, esta memória é apenas de leitura e de acesso randômico (aleatório), é usada para iniciar o sistema. RAM (random access memory) - é volátil (pode ser lida e escrita). Todas as informações introduzidas no computador são armazenadas na memória RAM. Memória de Massa ou Secundária - São as fitas magnéticas, discos magnéticos ou ópticos. Este tipo de memória contém componentes eletromecânicos o que a torna mais lenta. Sua principal característica é o baixo custo e a sua grande capacidade. As memórias RAM e ROM podem-se subdividir em várias classes de acordo com a tecnologia de fabricação e a arquitetura interna. RAM - SRAM - DRAM - NVRAM - FIFO. ROM - ROM - PROM - EPROM - EEPROM - FLASH. Unidade Lógica e Aritmética (ULA) A ULA - Unidade Lógica Aritmética, efetiva as operações como adição, subtração, divisão, multiplicação, comparação etc. Para os cálculos complexos a memória principal é usada para armazenar os resultados intermediários. Unidade de Controle A unidade de controle decodifica as instruções do programador que está na memória, gerando os sinais necessários para a execução da instrução. Ela coordena o funcionamento de todas as outras unidades. Junto com a ULA forma a Unidade Central de Processamento (UCP ou do inglês CPU). Componentes de software Nos primeiros computadores o usuário interagia muito com a máquina, atualmente os detalhes de operação do hardware não são vistos pelo usuário. O usuário trabalha em um nível de abstração mais alto, deixando detalhes de acionamento da máquina para um programa especial chamado Sistema Operacional. O Sistema Operacional nada mais é do que um conjunto de programas que auxiliam o desenvolvimento ou a execução de uma determinada aplicação sendo responsável pelo seu processamento. Ele também assegura que os recursos físicos do sistema estejam disponíveis quando necessários, e que os recursos de software sejam fornecidos quando requisitados. Veja abaixo alguns tipos de Sistemas Operacionais: MS Windows CE Fonte: Site da Fundação Bradesco MS Windows ME, 98, 95 MS Windows NT, 2000 DOS Linux Unix MacOS OS2 PalmOS Novell Netware Classificação dos Sistemas operacionais e o software de aplicação Os Sistemas Operacionais (S.0.) podem ter processamento em lotes(batch),vamos imaginar que um usuário solicite a execução de um programa, quando as instruções do programa chega a memória para o processamento, o Sistema Operacional as organiza em lotes que são executados sequencialmente. Os Sistemas Operacionais podem ter também um sistema interativo com o tempo compartilhado, criando a ilusão de que o usuário tem toda a atenção da máquina. Os Softwares de Aplicação são criados, em regra, para executar tarefas específicas como o processamento de texto, reprodução de áudio etc. Exemplos: processadores de texto, planilhas de cálculo, enciclopédias interativas, dicionários, os programas de tratamento de imagem, vídeo ou som. Ao contrário do Sistema Operacional, estas tarefas não são indispensáveis ao funcionamento do computador, pois só são executadas quando você sente necessidade. Para se criar estas aplicações são necessárias as linguagens de programação, que não deixam de ser um software de aplicação. As linguagens de programação permitem a criação de sequências lógicas que o computador consegue "entender" e executar. Sistema binário Para que todos os circuitos e dispositivos do computador consigam compartilhar uma informação é preciso que respeitem um modelo de representação comum. Como, a nível físico, só existem dois estados possíveis - ausência ou presença de corrente elétrica - o sistema tem de ser de base dois (binário), pelo que atribui a cada um desses estados um dígito (ou bit) distinto - 0 para a ausência e 1 para a presença de corrente. O bit é o menor bloco de informação compreensível e distinguível, e que pode servir para a construção de blocos de informação mais complexos. Em grupos de oito, os bits formam a unidade mais importante na representação de informação - o byte - através da qual, é representada a capacidade de armazenamento e memória. Exemplo: 8 bits formam 1 byte 1024 bytes formam 1 kilobyte 1024 kilobytes formam 1 megabyte 1024 megabytes formam 1 gigabyte Fonte: Site da Fundação Bradesco 1024 gigabytes formam 1 terabyte Instruções Na linguagem comum, entende-se por instruções, "um conjunto de regras ou normas definidas para a realização ou emprego de algo". Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar. Convém ressaltar que uma ordem isolada não permite realizar o processo completo, para isso é necessário um conjunto de instruções colocadas em ordem sequencial lógica. Exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prática uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas etc. É evidente que essas instruções tem que ser executadas em uma ordem adequada - não se pode descascar as batatas depois de fritá-las. Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos o resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta. Instruções: são um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar. Algoritmos Vamos começar aprendendo o que é um algoritmo. Imagine uma receita de bolo. Você concorda que uma receita é uma sequência lógica que fornece instruções? Um algoritmo é muito semelhante a uma receita de bolo: são fornecidos os ingredientes e o modo de fazer. Podemos, então, afirmar que uma receita de qualquer alimento nada mais é do que um algoritmo. Toda e qualquer receita, possui os ingredientes (entrada), o modo de preparo (processamento), e o resultado que é o alimento pronto (saída). Analogamente teremos a Entrada, o Processamento e a Saída! Algoritmos -imprecisões das receitas A linguagem utilizada nas receitas é muito vaga para ser utilizada no desenvolvimento de programas. Analise a receita ao lado. Você consegue perceber que alguns detalhes importantes foram omitidos? Na receita não foi especificada a quantidade de queijo nem se o presunto deveria ser fatiado. Podemos chamar o algoritmo ao lado de algoritmo não-computacional (uma sequência ordenada e sem ambiguidade de passos que não levam a uma solução do problema). Ingredientes: 1 tomate Fonte: Site da Fundação Bradesco 2 fatias de pão de forma integral Queijo mussarela Presunto Orégano Modo de preparo: Corte o tomate e o queijo em fatias e coloque sobre o pão. Acrescente o presunto e uma pitada de orégano. Feche com a outra fatia. Você pode levar o sanduíche ao forno se preferir. Linguagens de programação Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic entre outras) e que são interpretados e executados por uma máquina (um computador). Dada esta interpretação rigorosa, um programa é por natureza muito específico e rígido em relação aos algoritmos da vida real. As linguagens de programação são o que permite a comunicação entre homem e máquina. São projetadas de modo que cada sentença tenha significado único. Em nosso dia-a-dia usamos a Linguagem Natural sempre com verbos e substantivos. Já as Linguagens de Programação se utilizam de comandos e dados. Linguagens de programação II Você já parou para pensar o porque um software é tão caro? É justamente por este motivo que devemos sempre tentar otimizar o desenvolvimento de qualquer programa e, uma das formas, é observarmos algumas etapas durante o desenvolvimento e sempre se utilizar de técnicas como exemplo os algoritmos. O custo do software é determinado por: Tempo de programação Tempo de depuração (debugging time) Rapidez de execução Clareza da documentação Tamanho do programa e dados Flexibilidade e expansibilidade Portabilidade para outros computadores Sendo assim é importante seguir as etapas de desenvolvimento descritas a seguir, que visam racionalizar o custo de produção e venda do sistema que você venha a desenvolver. Etapas no desenvolvimento de um sistema ou programa Você já sabe que desenvolver um programa não é tão simples. Não basta simplesmente você conhecer as linguagens de programação e tão pouco o ambiente de desenvolviment. É necessário se ter um objetivo e seguir as etapas descritas abaixo. Fonte: Site da Fundação Bradesco Análise das necessidades (seleção do projeto). Estudo de viabilidade (técnica e análise custo). Definição do projeto (analisar as necessidades do usuário, planejar as fases do projeto e de implantação). Codificação (lógica, layouts, procedimentos de controle). Fase de implantação testes, depuração e treinamento). Avaliação (custo real, benefícios, satisfação do usuário). Podemos dizer que as etapas, claramente definidas, são nada menos do que uma metodologia para a análise de sistemas. Metodologia de solução Para concluir, vamos reforçar alguns conceitos sobre a metodologia para a análise de sistemas. Como você já sabe todo e qualquer sistema ou programa sempre surge de uma necessidade e normalmente tem um objetivo claramente definido, sendo assim devemos observar algumas regras antes mesmo de iniciar o desenvolvimento de um sistema ou programa: Entender o problema é imprescindível. Formular um esboço da solução é necessário. Fazer uma primeira aproximação das variáveis que poderão ser utilizadas. Rever os passos originais, detalhando o processo. Se o algoritmo estiver suficientemente detalhado, testar com um conjunto de dados significativos. Implementar numa linguagem de programação. Se você seguir as etapas de desenvolvimento descritas durante nosso curso com certeza você alcançará excelentes resultados! Fonte: Site da Fundação Bradesco