OPERAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS
1. Introdução a Sistemas Operacionais, Tipos de Sistemas Operacionais
2. *Sistemas Multiprogramáveis, estrutura de sistemas operacionais e processos
3. *Gerência de processador, gerência de memória e memória virtual
Revisão – Linha do Tempo - Cronologia
C r o n o l o g i a
Grande porte (mainframes)
1990
1950 1960 1970 1980
Microcomputadores
1ª GERAÇÃO (1943 - 1959)
Antes da década de 50, os computadores eram muito difíceis de serem programados [1]. Era necessário conhecer totalmente sua arquitetura, e tal operação era efetuada em painéis com cerca de 6.000 conectores, em linguagem de máquina [2]. Nesta fase os computadores não possuíam ainda dispositivos para interagir com o usuário, como teclados e monitores [3].
Na década de 50, já com a utilização de transistores, sucedeu-se um grande avanço tecnológico, melhorando a velocidade dos processadores e a capacidade dos meios de armazenamento, em especial a memória e os discos magnéticos [4].
Por volta de 1953 foi introduzido o primeiro sistema operacional, um programa de controle que permitia uma interação, mesmo que limitada, entre o operador e a máquina, otimizando a execução das tarefas [5]. Em 1959 foi criada uma versão de sistema operacional que já implementava conceitos de memória virtual, conceito este largamente utilizado nos sistemas atuais [6].
2ª GERAÇÃO (1959 - 1965)
Na década de 60, a partir do surgimento dos circuitos integrados, foi possível difundir o uso de sistemas computacionais em empresas, com diminuição de custos e tamanho dos equipamentos [7].
1º Sistema Operacional Monoprogramável Monotarefa Introduzido o conceito de Memória Virtual Sistemas Multitarefa Sistemas Multiprogramáveis Multitarefa
3ª GERAÇÃO (1965 - 1970)
Além disso, esta década presenciou inúmeras inovações na área de sistemas operacionais, presentes até hoje, como os ambientes de multitarefa, multiprogramação, multiprocessamento e time-sharing, tendo o desenvolvimento destas técnicas avançado até o meado da década de 70, onde também foram implementadas as tecnologias baseadas em arquitetura VLSI (chips), as primeiras redes de computadores, e o desenvolvimento de diversas linguagens de programação de alto nível [8].
4ª GERAÇÃO (1970 - )
A década de 80 foi marcada pela criação dos microcomputadores, baseados em microprocessadores de uso pessoal [9]. Liderados pela IBM (International Business Machines), diversos fabricantes seguiram por essa linha, porém alguns deles não abandonando a fabricação dos computadores de grande porte, como foi o caso da própria IBM.
A partir do meado da década de 80, acontece uma divisão, com a indústria passando a produzir equipamentos de grande porte e muitos modelos de microcomputadores, que também precisavam de sistemas operacionais bastante evoluídos [10]. Foram, então, utilizadas as técnicas modernas já existentes nos ambientes de grande porte na implementação de sistemas operacionais para os microcomputadores, com versões diversas, todas inicialmente monousuário/monotarefa (devido à baixa capacidade de armazenamento dos micros, naquela época) [11]. Com o avanço da tecnologia, os micros ganharam discos rígidos e outros periféricos, possibilitando a criação de sistemas operacionais mais evoluídos nesta categoria de computadores, quando surgiram os sistemas monousuário/multitarefa, que executam até hoje [12].
ÍNDICE:
[1] Os computadores eram tão grandes que ocupavam salas imensas, seu tamanho era equivalente a uma quadra poliesportiva. Os operadores revezavam em escalas e andavam para todos os lados com um carrinho de mão cheio de lâmpadas para serem trocadas porque queimavam constantemente.
[2] Foram basicamente construídos com válvulas e painéis, os sistemas operacionais "não existiam". Os programadores, que também eram os operadores, controlavam o computador por meio de chaves, fios e luzes de aviso.
[3] Não havia interface gráfica em que houvesse controle entre dois dispositivos hardwares, entre um usuário e um programa ou sistema operacional, ou entre duas aplicações. As chamadas APIs (Application Programming Interface (ou Interface de Programação de Aplicativos) um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por programas aplicativos composta por uma série de funções acessíveis somente por programação/progarmador, e que permitem utilizar características do software menos evidentes ao utilizador tradicional/interface humana.
Por exemplo, um sistema operacional possui uma grande quantidade de funções na API, que permitem ao programador criar janelas, acessar arquivos, criptografar dados, etc. Ou então programas de desenho geométrico que possuem uma API específica para criar automaticamente entidades de acordo com padrões definidos pelo utilizador.
No caso de sistemas operacionais, a API costuma ser dissociada de tarefas mais essenciais, como manipulação de blocos de memória e acesso a dispositivos. Estas tarefas são atributos do kernel ou núcleo do sistema, e raramente são programáveis.
Mais recentemente o uso de APIs tem se generalizado nos plugins [*Plug-in é um termo que significa "de encaixe", na informática, um plugin ou plug-in é um (geralmente pequeno e leve) programa de computador que serve normalmente para adicionar funções a outros programas maiores, provendo alguma funcionalidade especial ou muito específica.], acessórios que complementam a funcionalidade de um programa. Os autores do programa principal fornecem uma API específica para que outros autores criem plugins, estendendo as funcionalidades do programa para os utilizadores comuns.
[4] O transistor é considerado uma das maiores descobertas ou invenções da história moderna, tendo tornado possível a revolução dos computadores e equipamentos eletrônicos. É praticamente impossível encontrarmos circuitos integrados que não possuam internamente centenas, milhares ou mesmo milhões de transístores, juntamente com outros componentes como resistências e condensadores. Por exemplo, o microprocessador Cell do console PlayStation 3 tem aproximadamente 234 milhões de
transístores, usando uma arquitectura de fabricação de 45 nanómetros, ou seja cada transístor fica distanciado dos outros 45 milionésimos de um milímetro.
[5] A base do sistema operacional era monitorar os sistemas em lote (batch systems), que permitiram melhor uso dos recursos computacionais, usado para enfileirar tarefas (jobs), cada programa era escrito em cartões perfurados, que por sua vez eram carregados, juntamente com o respectivo compilador (normalmente Fortran ou Cobol), por um operador, que por sua vez usava uma linguagem de controle.
Cada mainframe vendido necessitava de um sistema operacional específico. Esse problema era resultado de arquiteturas diferentes e da linguagem de máquina utilizada. Após essa fase, iniciou-se a pesquisa de sistemas operacionais que automatizassem a troca de tarefas (jobs), pois os sistemas eram monousuários e tinham cartões perfurados como entrada (eliminando, assim, o trabalho de pessoas que eram contratadas apenas para trocar os cartões perfurados).
DICAS: Um dos primeiros sistemas operacionais de propósito gerais foi o CTSS (Compatible Time-Sharing System, Sistema compatível de divisão por tempo), desenvolvido no MIT. Após o CTSS, o MIT, os laboratórios Bell da AT&T e a General Eletric desenvolveram o Multics (Multiplexed Information and Computing Service ou Multiplexagem Serviço de Informação e Informática), eram geralmente programandos em assembly, depois em linguagem C, cujo objetivo era suportar centenas de usuários e tendo suas últimas atualizações em 2000, servindo como base apenas para o estudo e desenvolvimento de sistemas operacionais, sendo reescrito e mais tarde passou a chamar-se Unix.
[6] A memória virtual consiste num conjunto de recursos de hardware e software que possui três funções básicas:
(i) assegurar que cada processo (aplicação) tenha seu próprio espaço de endereçamento, começando em zero (problema de relocação ou recolocação);
(ii) proteção de memória, para impedir que um processo utilize um endereço de memória que não lhe pertença;
(iii) possibilitar que uma aplicação utilize mais memória do que a fisicamente existente (essa é a função mais conhecida).
A tabela de alocação de arquivos (FAT) é uma estrutura de dados que o Windows cria após a formatação física de uma unidade. Esta tabela guarda informações sobre a localização de cada arquivo dentro da unidade física para que elas possam ser salvas, recuperadas, alteradas ou deletadas posteriormente. Elas são armazenadas em blocos dispostos em diferentes posições do disco, justificando a necessidade de uma tabela que aponte para cada um destes blocos. Em resumo, para todo o tipo de acesso a dados em uma mídia, é necessário um sistema de arquivos para realizar tais ações. Sem uma estrutura de armazenamento de dados como o FAT32, nenhum procedimento de acesso a disco é possível.
O NTFS (New Technology File System) é o sistema de arquivos padrão para o Windows NT e seus derivados (2000, XP, Vista, Server 2003 e 2008). Desenvolvido para superar as limitações do sistema FAT (p. ex., para endereçamento de blocos - clusters).
Nos sistemas modernos, a memória física é dividida em blocos de bytes contíguos, em geral com 4 KiB ou 8 KiB de tamanho, denominados molduras de páginas (page frames). Por sua vez, o espaço de memória de um processo é dividido em páginas (contendo as instruções e dados do programa), que são fisicamente armazenadas nas molduras e possuem o mesmo tamanho.
Um endereço virtual é gerado durante o processamento da aplicação e encaminhado para a unidade de gerenciamento de memória (MMU -- Memory Management Unit), um dispositivo do processador cuja função é transformar o endereço virtual em físico e solicitar este último endereço ao controlador de memória. A conversão de endereços virtuais em físicos baseia-se em tabelas de páginas, que são estruturas de dados mantidas pelo sistema operacional.
As tabelas de páginas descrevem cada página da aplicação (num sistema em execução, existe pelo menos uma tabela de páginas por processo). Cada tabela é indexada pelo endereço virtual e contém o endereço físico da moldura correspondente ou a indicação que a página está em um dispositivo de armazenamento secundário (normalmente um disco rígido).
Como o acesso à tabela de páginas é muito lento, pois está em memória, a MMU possui uma cache associativa chamada TLB (Translation Lookaside Buffer -- buffer de tradução de endereços), que consiste em uma pequena tabela contendo os últimos endereços virtuais solicitados e seus correspondentes endereços físicos.
[7] Houve a necessidade de um sistema operacional de utilização mais fácil. Em 1980, William (Bill) Gates e seu colega de faculdade, Paul Allen, fundadores da Microsoft, compram o sistema QDOS ("Quick and Dirty Operating System") de Tim Paterson por $50.000, batizam-no de DOS (Disk Operating System) e vendem licenças à IBM. O DOS vendeu muitas cópias, como o sistema operacional padrão para os computadores pessoais desenvolvidos pela IBM. IBM e Microsoft fariam, ainda, uma parceria para o
desenvolvimento de um sistema operacional multitarefa chamado OS/2. Após o fim da breve parceria a IBM seguiu sozinha no desenvolvimento do OS/2.
[8] Quanto à capacidade de processamento, pode-se usar a seguinte classificação: Monotarefa: pode-se executar apenas um processo de cada vez Ex.: MS-DOS.
Multitarefa: além do próprio SO, vários processos de utilizador (tarefas) estão carregados em
memória, sendo que um pode estar ocupando o processador e outros ficam enfileirados, aguardando a sua vez. O compartilhamento de tempo no processador é distribuído de modo que o usuário tenha a impressão que vários processos estão sendo executados simultaneamente. Ex: OS/2, Windows, Linux, FreeBSD e o Mac OS X.
Multiprocessamento: o SO distribui as tarefas entre dois ou mais processadores.
Multiprogramação: o SO divide o tempo de processamento entre vários processos mantendo o
processador sempre ocupado.
Tipos de Sistemas Operacionais Sistemas Monoprogramáveis/ Monotarefa Sistemas Multiprogramáveis/ Multitarefa Sistemas Com Múltiplos Processadores
Sistemas Multiprogramáveis/
Multitarefa
Sistemas BATCH Sistemas de
Tempo Compartilhado
Sistemas de Tempo Real
[9] Esta geração de computadores está marcada pelo aperfeiçoamento dos métodos de fabricação dos circuitos integrados, aumentando consideravelmente o número de componentes presentes num circuito integrado com as mesmas dimensões dos anteriores.
Os primeiros circuitos integrados continham dezenas de componentes, os atuais contêm milhões deles.
Surgiram então os circuitos LSI (Large Scale Integration) de integração em larga escala e mais recentemente os VLSI (Very Large Scale Integration), atingindo milhões de componentes eletrônicos por circuito integrado. Atualmente os nanocomponentes está entrando na era da nanotecnologia.
Com o elevado grau de integração atingido surgem os microprocessadores, e com eles os microcomputadores, em escala cada vez menor.
[10] Um sistema grande e complexo como um sistema operacional só pode ser desenvolvido se for subdividido em partes menores e mais simples. Cada uma dessas partes deve ser bem delineada, com entradas, saídas e comportamentos bem definidos. Nem todo o sistema tem a mesma estrutura.
O sistema operacional é formado por um conjunto de rotinas que oferecem serviços essenciais aos usuários, às suas aplicações, e também ao próprio sistema. A esse conjunto de rotinas dá-se o nome de núcleo do sistema ou kernel.
USUÁRIO
UTILITÁRIOS
NÚCLEO DO SISTEMA
HARDWARE
Hierarquia do Sistema Operacional
É fundamental não se confundir o núcleo do sistema com aplicações/aplicativos, utilitários ou o interpretador de comandos, que acompanham o sistema operacional. O Kernel de um sistema operacional é entendido como o núcleo deste ou, numa tradução literal, cerne. Ele representa a camada de software mais próxima do hardware, sendo responsável por gerenciar os recursos do sistema computacional como um todo. As aplicações são utilizadas pelos usuários de maneira transparente, escondendo todos os detalhes da interação com o sistema. Os utilitários/programas, como os compiladores, editores de texto e interpretadores de comandos permitem aos usuários, desenvolvedores e administradores de sistema uma interação amigável com o sistema.
Existe uma grande dificuldade em compreender a estrutura e o funcionamento do sistema operacional, pois ele não é executado como uma aplicação tipicamente seqüencial, com início, meio e fim. Os procedimentos do sistema são executados concorrentemente sem uma ordem específica ou predefinida, com base em eventos dissociados do tempo. Muitos desses eventos estão relacionados ao hardware e a tarefas internas do próprio sistema operacional.
[11] A responsabilidade do kernel consiste, tradicionalmente, em abstrair a interface do hardware, permitindo que processos utilizem este recurso concorrentemente, de forma segura e padronizada.
As funções normalmente atribuídas ao kernel são:
(II) alocação e liberação de memória; (III) controle do sistema de arquivos;
(IV)
operações de entrada e saída com dispositivos periféricos (discos, interface serial - mouse, p.ex., interface paralela - impressoras), acesso à memória, entre outros.Em um computador, a parte central é a UCP (unidade central de processamento), normalmente um microprocessador no qual os processos são executados. A memória RAM é o outro recurso crucial do computador o conjunto de chips em que os programas são carregados para execução e no qual são armazenados os seus dados.
Para que seja possível realizar algum trabalho útil, um programa no espaço do usuário deve ter acesso a todos os serviços disponibilizados pelo kernel (.dll). Esta implementação é diferente em cada kernel, mas deve disponibilizar uma API (Application Programming Interface, ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por programas aplicativos, isto é: programas que não querem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços) ao programa, que por sua vez invoca as funções do kernel relacionadas, seja através do sistema de IPC (Inter-Process Communication, ou comunicação entre processos), é o grupo de mecanismos que permite aos processos transferirem informação entre si, memória compartilhada ou interrupções.
[12] PERSPECTIVAS DE FUTURO - Certos autores consideram-nos já entrados na 5ª geração de computadores, na qual os computadores têm como referência o cérebro humano, tentando-o imitar com redes neuronais, já que é o "computador" mais potente que se conhece, introduzindo conceitos no domínio da inteligência artificial, dotando os computadores com capacidade de aprender e de inferir conhecimento.
Sistemas Operacionais 1 Windows XP 69.74% 2 Windows Vista 15.48% 3 Mac OS X 5.42% 4 Linux 2.13% 5 Windows 2000 1.84% 6 Windows 2003 1.02% 7 Windows 98 0.45% 8 Windows ME 0.19% 9 Win7 0.16% 10 iPhone OSX 0.12% Continentes 1 United States 27.04% 2 Germany 5.62% 3 United Kingdom 4.68% 4 Spain 3.18% 5 Canada 3.07% 6 Brazil 3.01% 7 Netherlands 2.83% 8 Italy 2.75% 9 France 2.62% 10 Turkey 2.51% PROCESSO
O conceito de processo é a base para a implementação de um sistema multiprogramável. O processador é projetado apenas para executar instruções, não sendo capaz de distinguir qual programa se encontra em execução. A gerência de um ambiente multiprogramável é função exclusiva do sistema operacional, que deve controlar a execução dos diversos programas e o uso concorrente do processador.
A gerência do processador é uma das principais funções de um sistema operacional. Através dos processos, um programa pode alocar recursos, compartilhar dados e trocar informações (.extensões).
Processo:
(I) Um processo é um programa em execução;
(II) Não tem conhecimento acerca dos outros processos e, como tal, não consegue trocar informação.
(III) Necessita de CPU, memória, arquivos, dispositivos de E/S
Papel do SO:
(I) Criar e terminar processos
(III) Prover mecanismos para Sincronização (IV) Comunicação entre processos
Estados de processos
[A] Não-Submetido
É o processo que ainda não está submetido a CPU, está nas mãos do usuário. Até onde interessa ao sistema ele não existe, porque o usuário ainda não o submeteu. Ele é simplesmente apresentado como sendo o primeiro passo na vida de um processo. O Sistema Operacional, naturalmente, não reconhece esse estado. Pode por exemplo, ser um arquivo executável que está armazenado no HD.
[B] Suspenso
É o processo que já foi submetido, porém permanece suspenso até que o horário ou evento programado ao usuário venha acontecer. Temos como exemplo o agendamento de uma varredura programada no anti-vírus por um usuário.
[C] Pronto
O processo já foi submetido e está pronto para receber a CPU, porém ainda guarda o escalonador de processos para ter controle da CPU. Processos que estão esperando E/S não se aplicam a esse estado.
[D] Executando
A execução propriamente dita. O código está sendo processado. Se ocorrer durante a execução uma requisição de E/S o processo é colocado no estado de espera e outro processo da fila de prontos poderá então concorrer a CPU.
[E] Espera
É o processo que foi colocado na fila de espera de E/S devido ao processador de E/S ser mais lento que a CPU principal. O processo tornaria a CPU mais escrava dele se não houvesse esse estado, pois como ele não está concorrendo à CPU ao executar um E/S, pode-se então colocá-lo no estado de espera para que os demais processos do estado pronto possam concorrer a CPU.
[F] Completo
DEADLOCK
Deadlock (blocagem, impasse), no contexto do sistemas operacionais (SO), caracteriza uma situação em que ocorre um impasse e dois ou mais processos ficam impedidos de continuar suas execuções, ou seja, ficam bloqueados. Trata-se de um problema bastante estudado no contexto dos Sistemas Operacionais, assim como em outras disciplinas, como banco de dados, pois é inerente à própria natureza desses sistemas.
O deadlock ocorre com um conjunto de processos e recursos não-preemptíveis (é aquele que pode ser retirado ao processo), onde um ou mais processos desse conjunto está aguardando a liberação de um recurso por outro processo que, por sua vez, aguarda a liberação de outro recurso alocado ou dependente do primeiro processo.
A definição textual de deadlock normalmente, por ser muito abstrata, é mais difícil de compreender. No entanto, algumas observações são pertinentes:
(I) O deadlock pode ocorrer mesmo que haja somente um processo no SO, considerando que este processo utilize múltiplos threads (ou linha de execução - é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas simultaneamente) e que tais threads requisitem os recursos alocados a outros threads no mesmo processo;
(II) O deadlock independe da quantidade de recursos disponíveis no sistema;
(III) Normalmente o deadlock ocorre com recursos como dispositivos, arquivos, memória etc. Apesar da CPU também ser um recurso para o SO, em geral é um recurso facilmente preemptível, pois existem os escalonadores para compartilhar o processador entre os diversos processos, quando se trata de um ambiente multitarefa.
4. *Gerência de sistema de arquivos a. Apresentação de slide em PowerPoint
5. História da Informática
6. *Introdução a processamento de dados
Consiste em extrair informação de dados. A extração de informação não é nada mais do que uma análise de conteúdo dos dados em questão e as relações retiradas dessa análise. Poderá também ser apenas a análise a frio, como por exemplo, número de dias do ano em que choveu, número de cidades com problemas de tráfego, altura média de pessoas do sexo masculino em Portugal.
Em qualquer atividade humana, verifica-se que a resolução dos problemas consiste em uma série de tarefas, das quais as fundamentais são: decidir o que é e como fazer, e executar as operações. Nas atividades em que se emprega o computador, os homens tomam as decisões e a máquina as executa.
O computador é mais que um simples instrumento para resolução dos problemas. Hoje em dia, ele é amplamente utilizado para executar tarefas extensas e complexas que, se fossem feitas manualmente, exigiriam um tempo muito maior. Desse modo, o computador é um dispositivo que aumenta a gama de atividades que podem ser desenvolvidas pelo homem.
A todas atividades que, a partir de dados conhecidos através de processamento, conduzem a resultados procurados, com ou sem emprego de qualquer equipamento auxiliar, podemos denominar atividades como processamento de dados.
Há quem prefira denominar Processamento Automático de dados (PAD), ou Processamento eletrônico de dados (PED) as atividades que utilizam a computação em seu processo.
No entanto, foi justamente o advento dos computadores que dinamizou de tal forma o tratamento das informações que, a partir daí, é que se vulgarizou a terminologia Processamento de Dados; de modo que a essa denominação, se associa, no presente, a idéia do emprego de computadores.
Esta atividade não está relacionada com a Informática em Si. Conforme CONCLA
A Entrada(Input). Se refere a algum dado de entrada do processamento, são valores onde o processo irá atuar. Como exemplo citarei quando clicamos em algum arquivo.
O Processamento. É onde os dados de entrada serão processados para gerar um determinado resultado. O computador executa o arquivo. (Outros exemplos: o cálculo salarial, uma complexa expressão matemática, ou até mesmo uma simples movimentação de dados ou comparação entre eles.
A Saída(Output). É simplesmente o resultado de todo o processamento, em todo processamento temos dados gerados como resultado, essas saídas, podem ser impressas na tela, em papel, armazenadas, ou até mesmo servir como entrada para um outro processo. O computador exibe os resultados obtidos na tela, mostra o arquivo.
INTRODUÇÃO
A tecnologia atual de computadores está baseada na construção de equipamentos
formados por circuitos eletrônicos, cabos e fontes de alimentação que são precisos na
identificação distinta entre dois tipos de sinais elétricos, caracterizados pela passagem de
corrente elétrica em um sentido, ou no seu sentido inverso. Por isso, os computadores
representam dados e operações por meio de dois símbolos, constituindo a linguagem
binária, usualmente descrita com 0 e 1 (zero e um).
A seqüência descritiva de um conjunto de símbolos (0 e 1) em linguagem de binária,
também chamada de linguagem de máquina, pode representar dados e/ou operações a
serem executadas pelo computador. Cada um dos símbolos existentes neste conjunto é
chamado de bit (a menor unidade de armazenamento de dados), onde a junção de oito
bits forma o conhecido byte. Por exemplo:
O conjunto de símbolos representado no exemplo acima pode estar descrevendo, em linguagem de máquina, um simples dado a ser armazenado na memória do computador ou ainda uma operação a ser realizada por este (por exemplo, uma adição entre dois valores numéricos), onde seu resultado será armazenado pelo computador.
A utilização desta linguagem permite ao computador realizar o armazenamento e a manipulação dos dados entre os diversos dispositivos eletrônicos que o compõe. Suponha a necessidade do armazenamento de dois valores numéricos a serem somados (operação aritmética de adição entre eles), para na seqüência ser apresentado o resultado desta operação (resultado da adição).
Primeiramente, o computador necessitará armazenar estes dois valores numéricos, quando estes lhe forem informados. Em seguida, ele efetuará a operação de adição entre os valores, armazenando o seu resultado, que posteriormente poderá ser apresentado ao usuário (pessoa que utiliza o computador).
Todas estas ações executadas pelo computador envolvem vários dispositivos eletrônicos, que interconectados formam este importante, e cada vez mais essencial, equipamento eletrônico. Uma representação clássica do computador no processamento de dados pode ser observada no esquema abaixo.
De acordo com a representação simplificada acima de processamento de dados seus principais dispositivos eletrônicos são definidos e exemplificados na relação a seguir:
PROCESSADOR: componente eletrônico que executa a instrução corrente e determina qual a próxima instrução a ser executada, sendo também chamado de CPU (Central Processing Unit) ou UCP (Unidade Central de Processamento);
MEMÓRIA: dispositivo que consisti em uma seqüência finita de unidades de armazenamento identificadas por um endereço único, descrito por um número inteiro não negativo e responsável pelo armazenamento de programas e dados que serão manipulados pelo computador;
DISPOSITIVOS DE ENTRADA: conjunto de componentes que podem ser conectados ao
computador para permitir a comunicação com o mundo real para coleta de dados relevantes aos problemas que o mesmo possa estar inserido – exemplo: teclado usado para coleta de dados do usuário que sejam necessários ao processamento de dados desejado;
DISPOSITIVOS DE SAÍDA: componentes eletrônicos que podem ser conectados ao computador para permitir a comunicação dele com o mundo real – exemplo: vídeo usado para que o computador possa se comunicar com seu usuário.
Todo dispositivo que pode ser conectado a um computador é chamado de periférico, existindo entre estes alguns que realizam operações de entrada e saída, como os discos e fitas
magnéticas usadas para guardar dados utilizados pelo computador.
O processamento de dados, realizado pelo computador, consiste na execução de várias
operações sobre os dados armazenados, que posteriormente serão mostrados aos seus usuários como conteúdo empregado no auxílio da solução de seus problemas cotidianos. Assim, este recurso eletrônico torna-se útil ao ser humano, principalmente por sua agilidade no
processamento de uma quantidade elevada de dados, com um tempo consideravelmente reduzido. Entretanto, este recurso também depende do raciocínio humano para a realização de tarefas corretas, porque os computadores não possuem um “raciocino” coerente com todas as necessidades presentes no dia-a-dia real.
O adequado aproveitamento de tamanha capacidade computacional é essencial ao uso dos computadores no cotidiano que os envolvem, contudo esta capacidade impossibilita a constante interferência humana no processamento almejado para solução dos mais diversos problemas. Repare, por exemplo, na velocidade de processamento de um computador em nanosegundos (1
milésimo de microsegundo) no processamento de dados, enquanto que uma decisão humana que pode levar alguns segundos, minutos, horas, dias, etc.
Toda esta capacidade não adiantaria nada caso tivesse que aguardar “muito tempo” para dar continuidade as ações e operações a serem realizadas no caminho da solução de um problema.
Dessa forma, o automatismo do computador no processamento de dados se torna essencial ao aproveitamento da agilidade do mesmo, sendo relevante o seu prévio planejamento. Neste planejamento deverão ser considerados todos os possíveis acontecimentos relacionados ao processamento desejado, pois assim o computador poderá realizar uma ação coerente com o ocorrido, sem prejudicar o processamento desejado.
No entanto, as operações e instruções a serem efetuadas por um computador devem ser previstas e planejadas pelo raciocínio humano, que posteriormente os implementará,
possibilitando ao computador realizar, eficientemente, as operações desejadas por seus usuários e definidas por meio do uso das linguagens de programação.
Os programas de computador consistem em seqüências de instruções elaboradas em linguagem de programação com o objetivo de resolverem ou auxiliarem na solução problemas. Estas
linguagens são codificações padronizadas que possibilitam a comunicação entre o ser humano e o computador com o objetivo de se atingir um resultado desejado. Porém, antes dessa
comunicação acontecer, o ser humano deve encontrar uma lógica coerente para resolução do problema existente. Por exemplo: como poderá ser resolvido o problema de correção de provas de concurso em um período reduzido de tempo para contratação urgente de novos funcionários?
A primeira preocupação deve se concentrar na aprendizagem de tudo que pode envolver este problema e em como resolve-lo. Assim, será possível elaborar um raciocínio lógico mais
completo sobre o mesmo e, conseqüentemente, elaborar uma solução mais segura e eficaz para o problema existente. Ao problema proposto anteriormente, de correção de provas de um
concurso, seria necessário conhecer um pouco mais seus dados, situações e informações: Seriam as provas muito longas?; Qual a quantidade de candidatos inscritos?; Em que data os candidatos aprovados deverão iniciar suas atividades profissionais?. Sem estes dados não é nem possível afirmar que existe realmente um problema, então como poderia ser pensada uma solução para esta situação?
Como um programa de computador precisa especificar, com certo detalhamento, todos os processos e operações a serem executados pelo computador, é de fundamental importância a tomada de todo o conhecimento que esteja envolvido com seu problema para que possa ser planejada e elaborada posteriormente uma solução coerente com todas as suas possíveis nuanças.
Esse conhecimento detalhado sobre o problema possibilita ao indivíduo responsável pelo
planejamento, desenvolvimento e disponibilização do programa um apurado conhecimento sobre as possíveis situações diferentes que este programa possa ser utilizado. Com isso, serão
menores as chances do processamento incorreto, ou mesmo incompleto, a ser executado pelo computador através de seu programa. Geralmente, o profissional responsável pelo
A elaboração de uma lógica coerente e completa exige características relacionadas ao indivíduo que procura encontrá-la, sendo interessante criatividade, conhecimento, versatilidade,
persistência, responsabilidade, ponderação, entre outras características pessoais que formam um “bom programador”. Cada programador ainda precisa exercer domínio sobre seu pensamento, de forma a conseguir organizar o seu raciocínio em busca de um objetivo almejado.
Algumas definições são importantes no início do estudo da subárea de Programação
Computacional, sendo a concepção de “lógica” proposta por Mazano (2000) voltada mais às características computacionais:
Lógica consiste em “
um esquema sistemático que define as interações de sinais no
equipamento automático do processamento de dados, ou computador científico com
critério e princípios formais de raciocínio e pensamento.
” (Manzano, 2000, p.3).Uma definição não tão computacional de “lógica” seria: “a ciência que estuda as leis e critérios de validade que regem o pensamento e a demonstração, ou seja, a ciência de princípios formais do raciocínio” (Manzano, 2000, p.3).
O uso da “lógica” para alguns profissionais é essencial e inseri um ponto divisor entre estes indivíduos, principalmente naqueles da subárea de Programação. Observe, por exemplo, a simples constatação lógica proposta no exemplo abaixo:
• Hoje é sábado.
• Todo sábado que não é feriado tem aula.
• Hoje não é feriado.
• Logo, hoje tem aula.
(uma conclusão lógica)
No exemplo acima os dados conhecidos (fatos) são que hoje é sábado e que não é feriado, além de que todo sábado tem aula, menos nos feriados. Assim, é possível concluir que hoje tem aula.
O estudo na área de Informática, mas especificamente na subárea de Programação, não tem o objetivo de ensinar ninguém a pensar, pois todas as pessoas normais já desenvolveram esta habilidade durante o seu processo de evolução (criança – jovem – adulto – velho). Porém, seu principal objetivo é apresentar, desenvolver e aperfeiçoar o raciocínio lógico possível de ser implementado em computadores e utilizados por seus usuários.
O estudo na área de Informática, mas especificamente na subárea de Programação, não tem o objetivo de ensinar ninguém a pensar, pois todas as pessoas normais já desenvolveram esta habilidade durante o seu processo de evolução (criança – jovem – adulto – velho). Porém, seu principal objetivo é apresentar, desenvolver e aperfeiçoar o raciocínio lógico possível de ser implementado em computadores e utilizados por seus usuários..
A implementação para área de Informática consiste na codificação do raciocínio humano, que soluciona problemas computacionais, em um programa de computador, sendo este raciocínio descrito em uma linguagem de programação.
No entanto, o programador só poderá descrever uma possível solução depois de encontrar o raciocínio adequado que permita ao computador chegar a uma resolução correta a situação apresentada por seu usuário.
A complexidade do problema também faz diferença ao processamento, pois quanto maior ela for, mais complicada e cuidadosa deverá ser sua solução. Outra consideração importante é a
quantidade de profissionais dedicados a construção de um raciocínio lógico coerente com o problema existente, podendo estes profissionais estarem organizados em equipes ou possuírem um único indivíduo com tal responsabilidade.
Estas duas possíveis situações identificam um trabalho árduo a ser desenvolvido, onde técnicas e métodos de representação de raciocínio contribuem, significativamente, na análise, discussão e teste das possíveis soluções encontradas.
Uma destas técnicas é conhecida como algoritmo e possibilita a representação simples, mas com clareza suficiente para a compreensão da lógica racional a ser empregada na solução do
problema existente.
A definição conceitual da expressão algoritmo é realizada por vários estudiosos, sendo as mais interessantes ao estudo desta disciplina as relacionadas a seguir:
“Algoritmo são regras formais para a obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas” (MANZANO, 2000, p.6).
“Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem definido. Portanto, um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações” (FARRER, 1999, 1999, p.14).
“Algoritmo é uma seqüência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância” (SALVETTI, 1998, p.5).
Com base nestas definições de algoritmo é constatado que este conceito não é peculiar somente a área de Informática, como pode ser observado no exemplo de criação de um simplório
algoritmo empregado na criação de um saboroso sanduíche:
1º - Pegar um pão
2º - Cortar o pão ao meio 3º - Pegar a maionese
4º - Passar maionese nas fatias de pão 5º - Pegar alface e tomate
6º - Cortar alface e tomate
7º - Colocar alface e tomate no pão 8º - Pegar um hambúrguer
9º - Fritar o hambúrguer
10º - Colocar o hambúrguer no pão
11º - Juntar as fatias do pão cortado
Estes onze passos indicados acima orientam na execução de diversas instruções organizadas de forma seqüencial que resultarão em um delicioso sanduíche (estado final). Estes passos são seqüências e finitos, podendo ser executados sem auxílio nenhum de um computador.
A alteração na seqüência destes passos também poderá resultar em um outro gostoso sanduíche, atingindo também o objetivo esperado.
Geralmente, um problema possui algumas alternativas de soluções que chegam ao resultado correto, podendo existir vários algoritmos que solucionem um determinado problema. Entre estas possíveis soluções algumas são mais rápidas, outras mais seguras, mas todos conseguem resolver o problema adequadamente, apesar de suas diferenças existentes no raciocínio lógico proposto como solução.
Diversas são as técnicas e métodos existentes para a construção de algoritmos. No entanto, todas elas possuem um mesmo objetivo, onde as suas variações não passam de pequenos detalhes frente a sua organização geral no atendimento a uma ou outra área mais
especificamente. Em uma abordagem, enfocando mais a área de Tecnologia da Informação, é apresentado um método para a construção de algoritmos que possibilite a implementação dos mesmos, posteriormente, em um computador (desenvolvimento de programas computacionais):
1º - empenhar grande atenção sobre os dados relacionados ao problema, procurando conhecer e compreender o máximo sobre ele;
2º - definir os dados que essencialmente deverão serinformados pelo usuário para que o processamento seja realizado com sucesso(dados de entrada);
3º - descrever detalhadamente o processamento ou atransformação a ser executada sobre os dados de entrada em busca dos resultadosdesejados (como chegar no objetivo);
4º - definir quais são os dados resultantes do processamento ou transformação (dados de saída);
5º - construir o algoritmo que represente a solução encontrada com o detalhamento necessário a implementação almejada;
6º - testar o algoritmo por meio de simulações e efetuar as devidas correções que possam vir a ser necessárias na lógica proposta.
A implementação das lógicas, elaboradas e representadas em um algoritmo, é realizada sobre o computador, por meio da transcrição, representada no algoritmo, para uma linguagem de
programação, que também possibilitará a compreensão e execução das instruções pelo computador. Essa transcrição também pode ser chamada de tradução, pois somente efetuará mudança na forma de descrever o raciocínio a ser implementado no computador.
O uso da linguagem de programação permite ao programador elaborar programas que instruirão o computador nas operações a serem efetuadas. Para a elaboração de programas,
principalmente os mais complexos, é necessária a aplicação de um método sistemático de programação que contribuirá com o desenvolvimento de programas confiáveis, flexíveis e eficientes. Esse tipo de desenvolvimento apresenta uma metodologia organizada em etapas básicas fundamentais, sendo estas descritas a seguir:
ANÁLISE: nessa etapa se estuda o problema, buscando sua completa compreensão, onde os dados de entrada, o processamento e os dados de saídas possam ser identificados corretamente;
PROJETO: essa etapa aplica métodos e técnicas quepossibilitem a descrição necessária do problema com suas possíveis soluções. Elaconsiste no projeto do programa, sendo elaborada por meio da construção doalgoritmo e da definição correta das estruturas de dados necessárias a talsolução;
CODIFICAÇÃO: essa etapa consiste na implementação do projeto do programa, ou seja, na tradução do raciocínio, representado no algoritmo, para um programa computacional, escrito na linguagem de programação desejada;
VERIFICAÇÃO: nessa etapa é finalizado o processo de desenvolvimento do programa, que é classificado como software, sendo também chamado de aplicação. Simulações, testes e verificações dos resultados alcançados pelo programa são analisados, podendo resultar em alterações no código elaborado. Essas alterações
procurarão o atendimento eficaz do objetivo desejado pelo programa, que é finalmente liberado aos usuários finais.
O uso destas metodologias possibilitará o desenvolvimento organizado e eficiente do programa desejado. Porém, essas etapas destinadas à elaboração do programa e do algoritmo, devem ser realizadas com a documentação coerente em cada uma delas. Isso permitirá a construção de uma lógica clara e detalhada o suficiente para a compreensão de qualquer outro profissional da área, promovendo alta qualidade nesse desenvolvimento.
A elaboração do algoritmo descreve a necessidade dos dados e as suas manipulações durante a execução da lógica proposta por ele. Essa descrição pode ser feita de diversas formas por meio de técnicas diferentes que representarão a seqüência dos passos (ou etapas) a serem realizados pela execução do algoritmo.
Cada técnica possibilita formas de representação diferentes, o que privilegia algumas
características na percepção e compreensão dos profissionais envolvidos. Sendo assim, serão apresentadas algumas destas técnicas, com os principais aspectos a serem avaliados na sua escolha para aplicação. Entre as várias técnicas existentes, três delas serão abordadas nesse material, sendo uma a mais relevante durante o aprendizado almejado neste estudo de algoritmo e programação.
F
LUXOGRAMAO fluxograma utiliza figuras geométricas predefinidas para descrever as ações (ou instruções) a serem realizadas na resolução de um problema. Ele é elaborado após a fase de análise do problema.
As principais figuras usadas na elaboração de um fluxograma estão relacionadas a seguir, sendo importante esclarecer que são várias as figuras geométricas empregadas na construção dos mesmos, porém neste estudo se estará buscando a compreensão da lógica racional proposta por este tipo de representação. As figuras usadas são:
Imagine uma situação onde a idade de uma pessoa deva ser analisada para sua
classificação em jovem ou adulto. O algoritmo a seguir é apresentado graficamente por
meio do fluxograma coerente com a solução desejada.
Várias análises podem ser feitas sobre as vantagens e desvantagens dessa forma de representação do raciocínio (algoritmo), porém somente a mais relevante vantagem (face sorridente) e desvantagem (face triste) serão apresentadas para sua reflexão.
D
IAGRAMA DEC
HAPINEssa diagramação foi elaborada por Nassi e Shneiderman e ampliada por Ned Chapin. Ela almejada a substituição da representação tradicional (diagrama de blocos) por uma diagramação com quadros que oferecessem a visão hierárquica e estruturada da lógica proposta para um programa.
Observe na representação acima a mesma situação representada no exemplo anterior por um fluxograma. Agora, o algoritmo está representando o mesmo raciocínio do exemplo anterior, porém sua representação foi elaborada pelos esquemas adotados no Diagrama de Chapin.
Entre os diversos métodos existentes para este tipo de representação, o Diagrama de Chapin é um dos menos utilizados atualmente, principalmente, porque exige bastante atenção do
programador na representação do seu raciocínio, ao invés de se concentrar mais sobre o próprio problema a ser analisado e posteriormente solucionado.
P
ORTUGUÊSE
STRUTURADOEssa forma de representação, também conhecida como portugol ou pseudocódigo, consiste na descrição estruturada, por meio de regras pré-definidas, de passos (ou instruções) a serem realizados para a resolução do problema. O português estruturado utiliza a linguagem natural para representar o raciocínio. No caso brasileiro, a linguagem natural é o português, que será
bastante usado na representação dos raciocínios propostos. Para Espanha ou França seriam utilizadas as linguagens espanhola e francesa, respectivamente, como base natural na representação dos raciocínios lógicos elaborados através da desta técnica de construção de algoritmos.
Suponha o mesmo exemplo representado nos algoritmos anteriores, por meio do fluxograma e do diagrama de Chapin, observando as diferentes características descritivas existentes no português estruturado, além de sua organização pré-definida.
S
ÍNTESEObjetivo: analisar a idade de uma pessoa Entrada: uma idade
Saída: situação da maturidade da pessoa
D
ECLARAÇÕESinteiro IDADE;
I
NÍCIOescreva (“Informe sua idade: “); leia (IDADE);
se (IDADE < 21) então
escreva (“você é jovem”); senão
escreva (“você é adulto”); fim_se;
F
IMA linguagem de comunicação natural é imprecisa e muitas vezes prolixa, dificultando a
comunicação correta com o computador se usada de forma bem natural. Por isso é necessária à agregação de regras e normas que permitam a representação organizada e eficiente da solução desejada, indicando sempre, com clareza e precisam, o que realmente o computador deve fazer.
Entre essas três formas de representação (fluxograma, Chapin e português estruturado), o português estruturado será o mais utilizado por esta disciplina no desenvolvimento de algoritmos condizentes com os problemas educacionais sugeridos. Por meio desta forma de representação se almeja:
facilitar o entendimento do problema pelo ser humano;
promover desenvolvimento de algoritmo coerente com o problema;
antecipar à depuração (verificação de erros) do raciocínio lógico;
facilitar a manutenção corretiva e evolutiva do raciocínio proposto;
agilizar aprendizagem de normas e regras comuns na elaboração de programas computacionais;
contribuir com trabalho em equipe para elaboração de programas.
Por meio dessa última representação de raciocínio (português estruturado), aliasse a facilidade de uso da linguagem natural do indivíduo, com a técnica de desenvolvimento estruturado. Apesar disso, essa junção, por si só, ainda não atinge automaticamente os objetivos visados, ela apenas preconiza uma ajuda sistemática para o alcance deste objetivo. Sua aplicação ainda conta com o esforço e a disciplina incessante na busca da simplicidade e da clareza, que fornecerão
facilidades inestimáveis à manutenção e modificação evolutiva do algoritmo.
A elaboração de algoritmos pode envolver três estruturas lógicas fundamentais no controle do fluxo de dados e instruções. Essas três estruturas, conhecidas como estruturas de controle de dados, desempenham o papel de controle sobre a seqüência de ações (ou tarefas) a serem realizadas (ou executadas) no algoritmo, que posteriormente se tornará um programa
computacional, por meio de sua transcrição (ou tradução) para uma linguagem de programação. A principal característica referente ao seu controle na seqüência de execução de cada uma destas estruturas é descrita a seguir:
SEQÜENCIAL: as instruções existentes no algoritmo são executadas uma após a outra, respeitando sempre a seqüência linear de cima para baixo;
SELETIVA: exerce o controle sobre a seqüência deinstruções a serem executadas, por meio do resultado de um teste ou verificaçãobaseada na lógica convencional, sendo também conhecida comocondicional;
REPETITIVA: por meio de um teste, ou verificação lógicacondicional, uma instrução, ou um conjunto de instruções, é executadorepetidamente (mais que uma vez), conforme discriminado no raciocínio lógicoproposto. Esta estrutura ainda é conhecida como laço oulooping.
Um outro aspecto lógico importante e muito aplicado na elaboração de algoritmos é a
modularização, ou seja, a divisão de um raciocínio lógico maior, ou mais complexo, em vários raciocínios menores, ou mais simples, que possibilitem a realização ou atendimento completo do raciocínio lógico maior (mais complexo). Esta organização lógica é conhecida como
modularização, pois confere a um conjunto de módulos a capacidade de resolver o mesmo problema, porém de forma mais organizada e flexível. Isso possibilita, entre outras características positivas no desenvolvimento de programas, o re-aproveitamento do código já elaborado, ou seja, o melhor aproveitamento de trechos bem definidos e já elaborados no algoritmo proposto em diversos momentos que sejam necessários no mesmo.
Além das estruturas de controle e da modualarização, os algoritmos também permitem a criação e a manipulação de estruturas de dados. Estas estruturas consistem em organizações eficientes sobre os recursos de armazenamento de dados, normalmente disponíveis em um computador. A utilização, logicamente correta, deste tipo de estrutura propicia a otimização no uso dos recursos disponibilizados pelo emprego do computador na realização das mais diversas tarefas,
satisfazendo as pretensões do usuário com maior segurança, eficiência e agilidade.
Diante deste estudo, é importante a criação da consciência do estudante na dimensão da
responsabilidade do algoritmo frente ao desafio da aprendizagem sobre o problema a ser
resolvido por meio de um raciocínio lógico coerente que possa ser transcrito em um
programa de computador que auxiliará seu usuário na realização de suas tarefas
cotidianas, sejam elas pessoais, profissionais ou até educacionais.
O algoritmo é a parte mais importante no desenvolvimento de um programa,
pois é nele que se encontra a representação do raciocínio lógico que
solucionará o problema existente.
LINGUAGEM DE PROGRAMAÇÃO
O algoritmo auxilia o desenvolvimento dos programas, porque nele os programadores
representam a solução proposta para ser analisada e testada. Quando um algoritmo está
finalizado, ou seja, está pronto, resta apenas transformá-lo em um programa
computacional, respeitando toda lógica racional já elaborada e avaliada para solução do
problema existente.
Realmente, um bom algoritmo, só necessita ser traduzido para uma linguagem de
programação, respeitando suas regras de sintaxe e semântica essenciais na construção
de um programa de computador. O período de aprofundamento no conhecimento
relacionado ao problema em questão, sua proposta de solução, os testes e a
manutenção do mesmo, ocorrem durante os estudos, pesquisas e elaboração do
algoritmo, restando, simplesmente, a re-escrita da solução encontrada para uma
linguagem de programação computacional, ou seja, após a confecção do algoritmo
coerente com o problema o programador só deverá traduzi-lo para uma linguagem de
programação para obter um programa computacional.
As linguagens de programação, assim como as de comunicação, possuem regras
sintáticas e semânticas que devem ser obedecidas, pois as instruções computacionais
não podem oferecer possibilidades de interpretação para o computador, que somente
executa o que lhe é solicitado. Existem varias linguagens de programação, mas em todas
elas a lógica relacionada a proposta construída no algoritmo poderá ser implementada
afim de atender ao objetivo almejado.
Exemplo:
Acompanhe neste exemplo a "tradução" da instrução escreva que será estudada um
pouco mais à frente em algoritmo.
escreva("Informe a sua idade:")
Esta instrução (escreva) corresponde a um comando que instrui o computador a realizar
algumas ações sobre seus recursos disponíveis. Porém a mesma deve ser traduzida
para uma linguagem de programação, possibilitando ao computador sua compreensão.
Na tabela abaixo são mostradas algumas possíveis traduções para instrução escreva em
3 linguagens de programação diferentes.
COMANDO LINGUAGEM
writeln Pascal
printf C
System.out.println Java
ATIVIDADE DE FIXAÇÃO
No intuito de auxiliar na aprendizagem iniciada por meio deste módulo e verificar como
está sua compreensão sobre os mesmos, são sugeridos alguns exercícios de apoio a
serem resolvidos. Clique sobre a figura Exercícios? e acesse a lista de atividades sobre
os conteúdos estudados até este momento.
CONCEITOS FUNDAMENTAIS
O processamento de dados consiste, basicamente, em um conjunto de três partes
fundamentais (Entrada, Processamento e Saída de dados) que são articuladas para se
atingir as expectativas desejadas.
Entrada de dados: usa dispositivos eletrônicos que possibilitam o fornecimento
de dados ao computador que os utilizará conforme as instruções contidas em seu
algoritmo para se chegar aos resultados desejados. Vários são estes dispositivos
como: teclado, mouse, etc.
Processamento: os dados obtidos pelos dispositivos de entrada serão
processados conforme as instruções existentes no algoritmo, sendo ambos, os
dados de entrada e resultados processados, armazenados na memória do
computador. Esta parte, identificada como processamento, é relacionada
diretamente com os dispositivos de armazenamento de dados (memória), pois
são neles guardados os dados que serão acessados e manipulados pelo
computador que procura atingir os resultados desejados.
Saída de dados: consiste na realização das instruções que estão sendo
processadas pelo computador com o objetivo de mostrar os dados obtidos na
execução do algoritmo. Esta apresentação acontece por meio dos dispositivos de
saída de dados como: monitores ou vídeos, impressoras e outros recursos
A coleta e armazenamento de dados solicitados ao usuário de um algoritmo é realizada
através dos dispositivos de entrada de dados. Estes dados são manipulados pelo
processador respeitando rigorosamente as instruções contidas no algoritmo e buscando
satisfazer as necessidades de seu usuário. Assim, se concebe a importante
compreensão sobre os dados brutos que são necessários para geração da informação,
que é contextualizada para um fim específico e atende as expectativas do usuário, tendo
este acesso aos mesmos através dos dispositivos de saída de dados.
A efetivação de todo este processo só ocorre com dados que estejam armazenados em
memória, sendo todos os seus recursos relacionados ao armazenamento e
recuperação de dados de fundamental importância ao funcionamento do computador.
IDENTIFICADOR
O uso da memória pelo computador é fundamental ao seu correto funcionamento, por
isso é necessário, na elaboração do algoritmo, o fornecimento de nomes que
identificaram os dados, informações ou recursos computacionais que possam estar
armazenados na mesma. Um exemplo desta identificação é o seu próprio nome, que no
meio de muitas pessoas quando for pronunciado você saberá que estão se referindo
somente a você.
Na elaboração do algoritmo todos os recursos de armazenamento e manipulação de
dados deverão ser identificados para serem acionados mediante seu nome específico de
identificação. Conforme as características de definição de um identificador para os
possíveis recursos computacionais a serem usados na construção dos algoritmos estará
se abordando seus detalhes de criação e uso coerente com a programação eficiente dos
computadores.
TIPOS DE DADOS
Os computadores atuais compreende um conjunto de dados e informações através de seus recursos de arquitetura e operacionalização dos diversos dispositivos elétricos e eletrônicos que o compõe. Para o início da aprendizagem na área de Programação é relevante conhecer quais tipos de dados os computadores compreendem e aplicam suas características e propriedades coerentes com a realidade onde estes são usados. Estes tipos de dados podem ser classificados em Numéricos, Lógicos e Literais.
Numéricos: representados por valores definidos nos conjuntos matemáticos dos
inteiros e reais, onde o ponto '.' separa a parte inteira da decimal. Exemplo:
-0.59; 2.0; 0; -34; 597; 10
Lógicos: representados pelas palavras VERDADEIRO ou FALSO, respeitando as
definições matemáticas contidas na Lógica Convencional ou Booleana.
Literais: formados por um ou vários símbolos (caracteres) aceitos na
simbologia da linguagem (símbolos especiais, letras e dígitos) em questão. Estes
valores são representados por seus símbolos válidos e correspondentes em nossa
linguagem de comunicação (português), além de estarem sempre entre aspas ("
") no corpo descritivo das instruções contidas no algoritmo.
A especificação do grau de complexidade e o escopo de valores possíveis para um dado que será usado em um algoritmo exigi a definição de seu tipo de dado, assim como o identificador que possibilitará seu armazenamento e manipulação em memória. A identificação de como um certo dado poderá se apresentar, qual a sua simbologia e quais operações e propriedades podem ser realizadas sobre o mesmo são definidas através da indicação de qual é seu tipo.
Os tipos de dados já reconhecidos pelo computador são chamados de escalares ou primitivos. Estes tipos são indicados no algoritmo por meio de palavras ou expressões chaves (inteiro, real,
logico, caracter) que são reservadas ao reconhecimento correto do computador que os utilizará
no processamento do algoritmo.
NUMÉRICOS
inteiro: corresponde ao conjunto matemático dos valores numéricos inteiros.
Exemplo: 100, 0, -3
real: corresponde ao conjunto matemático dos valores numéricos reais. Exemplo:
100, 0, -3, 1.7, 1000, -0.7
LÓGICO
logico: conjunto de valores possíveis na lógica convencional (booleana) - FALSO
ou VERDADEIRO. Esse tipo só apresenta um desses dois valores, sendo eles
mutuamente exclusivos.
LITERAL
caracter: valores alfanuméricos, contendo letras, dígitos (símbolos numéricos) e
símbolos especiais, estando sempre descritos entre aspas (" "). O conjunto de
caracteres consecutivos, como o nome de uma pessoa, uma frase, entre várias
outras situações com caracteres, também é chamado de cadeia de caracteres ou
string. Exemplo: "M", "Taguatinga - DF", "356-9025", "Taxa=10%", "#"
A especificação do tipo de dado correto é fundamental ao processamento do
computador, pois ele reconhecerá quais dados podem ou não sofrerem determinadas
manipulações e quais as necessidades de espaços de memória necessários na
efetivação do armazenamento de cada dado ou informação a ser utilizada no algoritmo.
Menu