Fundamentos da Programação 12 III. S OFTWARE Um programa de computador pode ser definido como uma série de instruções ou declarações, em forma aceitável pelo computador, preparada de modo a obter certos resultados. Também chamado de software, esse termo é utilizado para indicar a parte funcional de um computador. Podemos classificar os softwares ou programas em alguns tipos. A seguir é apresentada uma classificação genérica, que não é exaustiva. A. Sistemas Operacionais Como o próprio nome sugere, o sistema operacional (SO) é um software destinado gerenciar a operação do computador. Tem como função principal controlar os diversos dispositivos do computador e servir de comunicação intermediária entre o computador e os outros programas normalmente utilizados, o que permite que esses possam ser executados. O Windows95/98/2000/NT/XP e o DOS são exemplos de SOs para microcomputadores. Também podemos citar o OS/2, da IBM, e o UNIX. Um computador, qualquer que seja o seu porte, não funciona sem um SO. Segundo o modelo de comercialização, podem ser: Sistemas Proprietários. Aqueles que são pagos e cujo código fonte não pe livremente distribuı́do (Window, Mac). Sistemas Gratuitos. Aqueles que não são pagos mas cujo acesso ao código fonto também não é livre (BeOS). Sistemas Open Source (Código Aberto). Aqueles cujo código fonte é aberto (Unix, BSD). Sistemas Livres. Aqueles que são Open Souce e cujo código fonte pode ser alterado de maneira cooperativa. Segundo o funcionamento interno, podem ser: Sistema Monotarefa. Apenas uma tarefa (DOS). Sistema Multitarefa. Várias tarefas executam simultaneamente (Windows, Linux, Unix). Sistema Multitarefa Monousuário. (BeOS). Segundo a arquitetura, podem ser: Sistema Monolı́tico. (Windows, Linux, Unix). Sistema em Camadas. (Windows NT) Sistema Micro-Kernel. (Mac, GNU Hurd). As principais funções do SO são: • Gerenciamento de Processos; • Gerenciamento de Memória (ou de Armazenamento); • Sistema de Arquivos; • Acesso à Rede; • Gerenciamento de Segurança; e • Acesso ao Hardware. 1) Gerenciamento de Processos: Processo é qualquer programa sendo executado em um computador. Muitos SOs permitem que vários processos executem concorrentemente, embora com apenas uma CPU. Essa função existia nos mainframes da década de 60, mas apareceram nos computadores pessoais apenas nos anos 90. A técnica que permite a execução concorrente de processos na maioria dos SOs é denominada multitarefa (multitasking). Ela permite a execução de múltiplos processos como se todos estivessem sendo executados ao mesmo tempo. Em muitos casos, isso é conseguido apenas pelo chaveamento muito rápido entre qual dos processos está sendo executado em algum momento particular, de maneira que todos recebam uma pequena fatia do tempo de processamento da CPU. Quanto mais processos estiverem ativos, em princı́pio menor será a fatia da CPU que cada um recebe. Entretanto, como a cada processo pode-se associar uma prioridade, em geral a divisão de tempo entre os processos não é equalitária. Outra tarefa do gerenciamento de processos é evitar deadlocks (situações sem saı́da) que a execução de várias tarefas interligadas pode acarretar. UEM/CTC/DIN/Elvio Fundamentos da Programação 13 2) Gerenciamento de Memória: A memória em um computador está organizada hierarquicamente considerando o seu tempo de acesso, a partir das mais rápidas: registradores, memória cache, memória RAM e discos (flexı́vel, rı́gido, ótico, etc.). O gerenciamento de memória do SO coordena o uso dessas memórias, determinando qual está disponı́vel, qual deve ser reservada ou liberada, e como movimentar dados entre elas. Essa atividade é usualmente denominada gerenciamento de memória virtual porque tenta imitar uma situação em que existe apenas um tipo de memória, a memória RAM (principal). Se um processo requer mais memória do que a quantidade disponı́vel de memória RAM, então a memória em excesso deve ser alocada em disco, o que causa freqüente transferências de dados entre disco e memória RAM. Outra função importante do gerenciamento de memória é impedir que um processo interfira inadvertidamente nos espaços de memória alocados aos outros processos que estão sendo executados. Isso é conseguido através de uma lista mantida pelo SO que contém todos os espaços de memória que cada processo está utilizando. Desse modo, áreas de memória que estão inativas podem ser transferidas para o disco, liberando espaço para outros processos. Essa transferência é conhecida como swapping. 3) Sistema de Arquivos: Frequentemente um SO inclue um sistema de arquivos. Arquivos são organizados hierarquicamente em uma árvore de diretórios. Embora essa estrutura seja similar entre os SOs, a sintaxe para representar essa árvore difere. Por exemplo, Unix e seus sucessores utilizam uma barra (/) para separar ramos da árvore de diretórios, enquanto os SOs da Microsoft utiliza uma barra invertida (\) para a mesma função. Outra diferença é a distinção entre letras maiúscula e minúscula nos nomes dos diretórios e arquivos. 4) Acesso à Rede: Muitos SOs possuem implementados uma variedade de protocolos de comunicação para a conexão do computador em rede. A conexão em rede permite o compartilhamento de recursos, como arquivos, impressora e outros periféricos. 5) Gerenciamento de Segurança: A segurança em um SO é importante porque o SO permite acesso a recursos (arquivos, informação pessoal, etc.) que podem conter informação sensı́vel. O SO deve ser capaz de distingüir requisições a esses recursos que são válidas daquelas que não devem ser permitidas. 6) Acesso ao Hardware: Um driver é um program desenvolvido para permitir a interação com dispositivos de hardware existentes em um computador. Um driver fornece uma interface de comunicação através do meio especı́fico utilizado para conectar o dispositivo de hardware e é, portanto, dependente da configuração do hardware do computador. Essa interface permite o envio de comandos e o recebimento de respostas, status e dados do dispositivo. Exemplos de dispositivos são teclado, impressora, disco rı́gido, etc. B. Comandos Básicos do DOS DATE : Comando que mostra e atualiza a data do sistema operacional. A data deve ser fornecida como DD.MM.AA ou DD/MM/AA ou DD-MM-AA. TIME : Comando que mostra e atualiza a hora do sistema operacional. A hora deve ser fornecida como HH.MM.SS ou HH:MM:SS. VER : Mostra a versão do sistema operacional. DIR : Mostra a lista de arquivos de um diretório (pasta). Opções: /P lista o diretório com pausa; /W lista o diretório na horizontal; e /? mostra todas as opções do comando. O comando DIR mostra, ao final, o número de arquivos contidos no diretório, o espaço ocupado por eles e o espaço ainda disponı́vel no disco. CLS : Limpa a tela o coloca o cursor no canto superior esquerdo. MKDIR ou MD : Cria um diretório com o nome especificado, a partir do caminho especificado. Sintaxe: MD [CAMINHO] NOME onde CAMINHO é a posição do novo diretório e NOME é o nome do novo diretório. CHDIR ou CD : Muda para o diretório especificado. RMDIR ou RDCHDIR : Remove o diretório especificado. TREE : Exibe graficamente a árvore de diretórios. Opções: /F para mostrar os arquivos existentes dentro dos subdiretórios; e /A para não usar caracteres gráficos. UEM/CTC/DIN/Elvio Fundamentos da Programação 14 CHKDSK : Verifica a unidade de disco especificada. MEM : Exibe informação sobre a memória. RENAME ou REN : Muda o nome de arquivo. COPY : Copia arquivo ou grupo de arquivos. Neste comando utiliza os caracteres curinga para indicar que um ou mais caracters podem ser qualquer um., sendo * para um grupo de caracteres e ? um único caracter. DISKCOPY : Copia o conteúdo de uma unidade de disco. Opção: /V para fazer a verificação da cópia. XCOPY : Copia arquivos seletivamente. Opções: /M para marcar os arquivos copiados; /D:DATA para copiar arquivos modificados na data indicada ou após; /S para copiar arquivos em diretórios e sub-diretórios, exceto quando vazios; e /E para copiar arquivos em diretórios e sub-diretórios, mesmo quando vazios. MOVE : Move arquivos de um diretório para outro. TYPE : Exibe o conteúdo do arquivo especificado. MORE : Exibe o conteúdo do arquivo especificado, fazendo uma pausa cada vez que a tela é preenchida. FORMAT : Realiza a formatação da unidade de disco especificada. Opções: /S para inserir o sistema operacional DOS na unidade formatada; /4 para formatação de disquetes de baixa densidade; /Q para formatação rápida; e U para formatar a unidade independentemente de sua condição. UNFORMAT : Para o caso de formatação acidental, este comando permite tentar recuperar a informação. Opções: /L para mostrar a lista de arquivos e diretórios; e /TEST para mostrar a informação sem refazer o disco. DEL ou DELETE : Para apagar arquivos. UNDELETE : Para o caso de arquivos terem sido apagados acidentalmente, este comando permite tentar recuperar o arquivo especificado. DELTREE : Apaga um ou mais subdiretórios. C. Comandos Básicos do Unix/Linux cal : Mostra o calendário. cat : Mostra o conteúdo de um arquivo. cd : Muda para o diretório especificado. chmod : Muda as permissões de acesso de um arquivo. chown : Muda o proprietário do arquivo. clear : Limpa a tela o coloca o cursor no canto superior esquerdo. cp : Copia arquivo ou grupo de arquivos. date : Mostra dia e hora do sistema operacional. diff : Mostra as diferenças entre dois arquivos. find : Procura arquivos. grep : Procura dentro dos arquivos por uma seqüência de caracteres. history : Mostra a lista de comandos passados. less e more : Mostra o conteúdo de um arquivo, uma tela de cada vez. ls : Mostra o conteúdo de um diretório. man : Mostra a página de manual do comando especificado. mkdir : Cria diretório. mv : Move (ou renomeia) um arquivo ou pasta. rm : Apaga arquivo ou grupo de arquivos. rmdir : Apaga diretório ou grupo de diretórios. tail : Mostra as últimas linhas de um arquivo. wc : Mostra o número de bytes, linhas e caracteres de um arquivo. UEM/CTC/DIN/Elvio Fundamentos da Programação 15 D. Programas Utilitários São programas destinados a facilitar e agilizar a execução de certas tarefas. Existem utilitários, por exemplo, para diagnosticar a situação do computador e seus diversos dispositivos (como o Norton Utilities), para compactar arquivos (como o WinZip), para realização de cópias de segurança (backups), etc. E. Programas Aplicativos São os programas que oferecem serviços diretamento ao usuários. Pode-se incluir nessa categoria os processadores de texto, as planilhas eletrônicas, os programas gráficos e os sistema gerenciadores de banco de dados. 1) Processadores de Texto: Esses aplicativos não se limitam a oferecer uma maneira informatizada de “datilografar” textos. Também podem realizar verificação ortográfica, pré-visualização da impressão, inserção e formatação de figuras e tabelas, geração de etiquetas e cartas para mala direta e a utilização de modelos de documentos, o que os tornam bastante úteis. Uma vez armazenado o texto em um arquivo, que ficará gravado em um disco, ele pode ser alterado livremente e impresso quantas vezes for necessário. Dentre os vários editores disponı́veis no mercado, destacamos os seguintes: Microsoft Word, WordPerfect e OpenOffice/BrOffice Writer. 2) Planilhas Eletrônicas: Também denominadas Planilhas de Cálculo, esses aplicativos trabalham como se fossem “tabelas automáticas” dispostas em folhas (sheets), onde diversos dados podem ser armazenados e cálculos efetuados sobre eles, tais como orçamentos, previsões, folhas de pagamento e controle de notas dos alunos. No micro, as folhas transformam-se em uma imagem no vı́deo, que pode ser bem maior do que as folhas de papel comumente utilizadas para esse fim. Possuem ainda funções de banco de dados, inserção de figuras e a possibilidade de geração de diversos tipos de gráficos. Dentre as mais comuns, destacamos o MS-Excel, o Lotus 1-2-3, Quatro Pro, e OpenOffice/BrOffice Calc. 3) Programas Gráficos: Permitem a criação de figuras e desenhos, sendo que alguns possuem recursos extras para animação. Podem ser conjugados com programas que adicionam sons juntos às imagens. Existem desde os mais simples em termos de recursos e de facilidade de utilização até os altamente complexos, capazes de produzir desenhos detalhados de peças mecânicas e plantas de edifı́cios. Dentre os mais simples, temos o Paint (antigamente Paintbrush) e o Photo Editor, fornecidos junto com o Windows. Dentre os mais sofisticados destacam-se o Corel Draw, o Adobe PhotoShop e o 3D Studio, para uso artı́stico, e os programas CAD (como o AutoCad), utilizado para projetos mecânicos, arquitetônicos, etc. 4) Sistemas Gerenciadores de Bancos de Dados: Trata-se de uma coleção de programas que prestamse ao controle de grandes volumes de informações. Permitem efetuar cálculos com os dados por eles gerenciados, criação de gráficos e de relatórios. Para uso em microcomputadores, pode-se citar o Paradox, o MS-Access e o Personal Oracle. 5) Compiladores e Interpretadores: São programas utilizados para construir outros programas, e se caracterizam pelo tipo de linguagem utilizada para realizar essa tarefa. Os softwares citados anteriormente foram criados a partir do uso de compiladores ou de interpretadores, que são programas que analisam e traduzem para a linguagem do computador (linguagem de máquina) um conjunto especı́fico de comandos ou instruções escritos em uma linguagem de programação, permitindo o controle do funcionamento da máquina. Exemplos dessas linguagens: Fortran, Assembly, Basic, Delphi, Visual Basic, C, C++, Java, HTML. F. Desenvolvimento de Programas O ciclo de desenvolvimento tı́pico de um equipamento de informática é dado a seguir. 1) Definição do Problema e Estudo de Viabilidade UEM/CTC/DIN/Elvio Fundamentos da Programação 2) 3) 4) 5) 6) 16 Análise do problema Projeto do Sistema Programação ou Codificação Testes e Análise dos Resultados Documentação UEM/CTC/DIN/Elvio