• Nenhum resultado encontrado

20-06-2009-OPERAÇÃODECOMPUTADORESESISTEMASOPERACIONAIS

N/A
N/A
Protected

Academic year: 2021

Share "20-06-2009-OPERAÇÃODECOMPUTADORESESISTEMASOPERACIONAIS"

Copied!
51
0
0

Texto

(1)

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

(2)

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

(3)

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

(4)

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

(5)
(6)

Sistemas Multiprogramáveis/

Multitarefa

Sistemas BATCH Sistemas de

Tempo Compartilhado

Sistemas de Tempo Real

(7)
(8)
(9)

[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:

(10)

(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

(11)

(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

(12)

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.

(13)

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).

(14)

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);

(15)

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

(16)

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?

(17)

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

(18)

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).

(19)

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.

(20)

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:

(21)

“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.

(22)

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);

(23)

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.

(24)

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.

(25)

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

LUXOGRAMA

O 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:

(26)

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.

(27)

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 DE

C

HAPIN

Essa 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.

(28)

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ÊS

E

STRUTURADO

Essa 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á

(29)

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

ÍNTESE

Objetivo: analisar a idade de uma pessoa Entrada: uma idade

Saída: situação da maturidade da pessoa

D

ECLARAÇÕES

inteiro IDADE;

I

NÍCIO

escreva (“Informe sua idade: “); leia (IDADE);

se (IDADE < 21) então

escreva (“você é jovem”); senão

escreva (“você é adulto”); fim_se;

F

IM

A 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.

(30)

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:

(31)

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.

(32)

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.

(33)

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.

(34)

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

(35)

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ê.

(36)

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.

(37)

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

(38)

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

CONSTANTES

Uma constante consiste em recurso computacional que pode ser criado em um algoritmo,

sendo ela capaz de armazenar um único valor de um tipo de dado definido durante toda

execução deste algoritmo. Este recurso não está sujeito a variações no seu valor

armazenado, ou seja, o valor guardado em uma constante não sofre alteração, se

mantendo sempre constante após a sua criação.

A criação de uma constante exige a indicação de um tipo de dado e um identificador para

mesma ser armazenada e acessada na memória do computador. Quando esta

constante é criada com sucesso, ela ocupa uma área de memória que poderá ser

acessada por meio de seu nome (identificador), mas seu valor inicial nunca poderá ser

alterado enquanto seu algoritmo estiver em execução.

Sintaxe:

constante

<tipo do dado>

<identificador>

<valor do identificador>

constante : palavra reservada que identifica a criação de um recurso constante

(39)

<identificador> : nome fornecido a constante na memória do computador

: operador de atribuição de valores

<valor do identificador> : valor constante atribuído a constante (não pode ser

alterado)

A definição de uma constante consiste na criação de uma variável que não se altera

durante toda uma execução do algoritmo (variável que não se altera consiste em uma

constante).

Exemplo:

constante

inteiro

idade_maxima

25;

constante

caracter

SexoMasculino

"M";

LEMBRETE: Não se pode modificar o conteúdo armazenado por uma constante.

VARIÁVEIS

Outro recurso computacional criado por um algoritmo e que permite a variação de seu

valor armazenado na memória durante uma mesma execução deste algoritmo, é

denominado variável. Os valores guardados por este importante recurso podem ser

incertos, instáveis ou inconstantes, conforme a situação a ser processada pelo

computador.

Similar as constantes, uma variável exige um tipo de dado conhecido pelo computador e

um identificador para ser criada e manipulada na memória do mesmo. No entanto, este

recurso pode guardar um ou vários valores de um mesmo tipo de dado nesta área de

memória, conforme seja necessário ao computador processar o algoritmo elaborado e

em execução.

(40)

Apesar da variável poder armazenar vários valores de um mesmo tipo, ela só consegue

guardar um valor por vez, ou seja, o armazenamento de uma variável não é simultâneo

de vários valores, mas somente um de cada vez (sobreposição dos valores de uma

mesma variável na memória).

Análise o exemplo a seguir que almeja facilitar a compreensão dos conceitos

relacionados ao uso de variáveis pelo computador.

No dia de seu aniversário sua tia lhe presenteou com uma linda pasta de couro e disse

que esta era para você se lembrar sempre dela quando fosse guardar seus documentos

profissionais. No entanto, ela se esqueceu que você está começando a faculdade e só

daqui alguns anos é que isso poderá acontecer. Porém, por esta pasta ser muito bonita e

resistente, você resolveu utilizá-la para outros fins, até a carreira profissional deslanchar.

Assim, começa a freqüentar a aula com a pasta e guardar seus materiais acadêmicos de

estudo na mesma.

Dessa forma, sempre que for necessário encontrar algum material de estudo você saberá

exatamente onde ele estará guardado (na bela pasta). Com o passar do tempo você

trocou o conteúdo que estava sendo armazenado na pasta, passando a guardar os

documentos e relatórios de seus estágios onde a mesma fazia sucesso entre os colegas

que sempre lhe perguntavam onde você havia comprado-a. Com o desgaste natural de

muito uso da pasta você teve que trocá-la, logo que a carreira começou a acontecer

depois do termino da faculdade.

Na situação ilustrada anteriormente pode-se observar a variação do conteúdo

armazenado na mesma pasta. Esta variação aconteceu de acordo com a sua

necessidade de armazenamento de coisas ao longo do tempo.

Uma variável também funciona assim, sendo ela um espaço de memória que o

computador reserva para utilização de um algoritmo. Quando este termina, a variável

(41)

deixa de existir na memória, assim como a pasta teve que ser deixada de lado após tanto

uso.

Provavelmente não caberiam todos os livros de sua faculdade nesta pasta, e seria no

mínimo impróprio tentar guardar somente água dentro dela. É por isso que uma variável

deve ter o seu tipo de dado definido, indicando, exatamente, quais os dados e

informações que poderão ser armazenadas e manipulados com seu uso em um

algoritmo.

Sintaxe:

<tipo do dado>

<identificador>;

Exemplo:

inteiro

contador;

caracter

primeiroNome;

Assim como na declaração de constantes, a declaração de variáveis define primeiro o

tipo de dado a ser armazenado como seu conteúdo e qual o seu identificador (nome da

variável). A principal diferença entre estes recursos é a possibilidade de modificação do

conteúdo armazenado na variável, sendo ele alterado quantas vezes forem necessárias

para o correto funcionamento do algoritmo. No entanto, as constantes possuem uma

mesma sintaxe de definição, incluindo somente a palavra reservada constante, porém

elas não sofrem alteração durante toda execução do algoritmo, somente recebendo um

valor que permanece inalterável durante toda esta execução.

(42)

ENTRADA E SAÍDA DE DADOS

O conhecimento relacionado a declaração de variáveis e constantes coerentes com a

definição de seus tipos de dados adequados, para serem manipulados corretamente no

processamento de um computador, estabelece o emprego de seus dispositivos de

entrada e saída de dados no algoritmo.

Esses dispositivos são acionados por instruções computacionais definidas por palavras

reservadas que possuem compreensão do computador sobre qual ação realizar e sobre

qual dispositivo eletrônico. Os dispositivos de entrada de dados são acionados por meio

da expressão chave (ou instrução) leia. Esta palavra reservada (leia) possui um

significado definido as operações lógicas que serão realizadas pelo computador sobre

seus recursos eletrônicos disponíveis (instalados). Por isso não se pode declarar

nenhum identificador igual a uma palavra reservada na construção de um algoritmo, pois

isso prejudicaria a lógica de execução relacionada a esta instrução e não permitiria a

correta compreensão do computador sobre o que lhe está sendo solicitado executar.

Para os dispositivos de saída de dados a palavra reservada é escreva, que aciona os

dispositivos disponíveis no computador que está executando o algoritmo. Porém, caso

um algoritmo solicite a impressão de uma carta na impressora e este recurso não esteja

instalado no computador em questão a carta não será impressa.

Instrução leia

O uso desta instrução é responsável pelo recebimento de dados (entrada) fornecidos

pelo usuário e armazenados em áreas reservadas da memória através da declaração de

variáveis, pois as constantes só podem ter seu valor definido no próprio algoritmo. Esse

dado será recebido por um dispositivo de entrada de dados, normalmente, sendo

Referências

Documentos relacionados

Detectadas as baixas condições socioeconômicas e sanitárias do Município de Cuité, bem como a carência de informação por parte da população de como prevenir

O número de desalentados no 4° trimestre de 2020, pessoas que desistiram de procurar emprego por não acreditarem que vão encontrar uma vaga, alcançou 5,8 milhões

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo 

As IMagens e o texto da Comunicação (com as legendas incluídas) devem ser enviadas por correio eletrônico. Comitê

Os interessados em adquirir quaisquer dos animais inscritos nos páreos de claiming deverão comparecer à sala da Diretoria Geral de Turfe, localizada no 4º andar da Arquibancada

Após a queima, para os corpos com a presença do sienito observou-se que os valores de densidade diminuíram (comparados às respectivas densidades a seco), já

A Escala de Práticas Docentes para a Criatividade na Educação Superior foi originalmente construído por Alencar e Fleith (2004a), em três versões: uma a ser

Acreditamos que o estágio supervisionado na formação de professores é uma oportunidade de reflexão sobre a prática docente, pois os estudantes têm contato