Julia Sawaki Tanaka Introdução à Computação Sumário 1. CLASSIFICAÇÃO DOS COMPUTADORES.................................................................................................................. 1 2. SISTEMAS DE COMPUTAÇÃO................................................................................................................................ 2 2.1. SOFTWARE - CONCEITOS BÁSICOS.................................................................................................................................. 2 2.2. HARDWARE - CONCEITOS BÁSICOS................................................................................................................................. 5 3. NOÇÕES BÁSICAS DE INTERNET............................................................................................................................. 7 4. NÚMEROS BINÁRIOS............................................................................................................................................ 9 5. ALGORITMOS..................................................................................................................................................... 10 5.1. ALGORITMO NA SOLUÇÃO DE UM PROBLEMA USANDO O COMPUTADOR.............................................................................. 11 5.2. PASSOS PARA A CONSTRUÇÃO DE UM ALGORITMO........................................................................................................... 12 5.3. ALGORITMO, PROGRAMAÇÃO E RACIOCÍNIO LÓGICO......................................................................................................... 12 6. TIPOS DE DADOS................................................................................................................................................ 13 6.1. DADOS NUMÉRICOS.................................................................................................................................................. 13 6.2. DADOS LITERAIS........................................................................................................................................................ 14 6.3. DADOS LÓGICOS....................................................................................................................................................... 14 7. CONSTANTES E VARIÁVEIS.................................................................................................................................. 14 8. EXPRESSÕES....................................................................................................................................................... 14 8.1. EXPRESSÕES ARITMÉTICAS.......................................................................................................................................... 14 8.2. EXPRESSÕES RELACIONAIS........................................................................................................................................... 15 8.3. EXPRESSÕES LÓGICAS................................................................................................................................................. 16 9. FLUXOGRAMAS.................................................................................................................................................. 17 9.1. COMANDO DE ATRIBUIÇÃO......................................................................................................................................... 17 9.2. COMANDO DE ENTRADA............................................................................................................................................. 18 9.3. COMANDO DE SAÍDA................................................................................................................................................. 18 9.4. ESTRUTURA SEQUENCIAL............................................................................................................................................ 18 9.5. ESTRUTURAS CONDICIONAIS........................................................................................................................................ 19 9.5.1. Estrutura Condicional Simples.........................................................................................................................19 9.5.2. Estrutura Condicional Composta.....................................................................................................................20 9.6. ESTRUTURAS DE REPETIÇÃO........................................................................................................................................ 20 9.6.1. Estrutura de Repetição Enquanto-faça...........................................................................................................20 9.6.2. Estrutura de Repetição Repita-até..................................................................................................................21 10. PROGRAMAÇÃO............................................................................................................................................... 22 11. LINGUAGEM PASCAL......................................................................................................................................... 23 11.1. TIPOS DE DADOS..................................................................................................................................................... 24 11.2. FUNÇÕES NUMÉRICAS PRÉ-DEFINIDAS......................................................................................................................... 24 11.3. OPERADORES......................................................................................................................................................... 25 11.3.1. Operadores Aritméticos.................................................................................................................................25 11.3.2. Operadores Relacionais.................................................................................................................................25 11.3.3. Operadores Lógicos.......................................................................................................................................25 11.3.4. Prioridade dos Operadores............................................................................................................................26 11.4. ESTRUTURA GERAL DE UM PROGRAMA PASCAL............................................................................................................ 26 11.5. DECLARAÇÃO DE VARIÁVEIS...................................................................................................................................... 26 11.6. COMANDO DE ATRIBUIÇÃO....................................................................................................................................... 27 11.7. COMANDO DE ENTRADA........................................................................................................................................... 27 11.8. COMANDO DE SAÍDA............................................................................................................................................... 27 11.9. FORMATAÇÃO........................................................................................................................................................ 27 11.10. ESTRUTURAS SEQUENCIAIS...................................................................................................................................... 28 11.11. ESTRUTURAS CONDICIONAIS.................................................................................................................................... 28 11.11.1. Estrutura Condicional Simples.....................................................................................................................28 Instituto de Química – UNESP – Araraquara i Introdução à Computação 11.11.2. Estrutura Condicional Composta.................................................................................................................30 11.12. ESTRUTURAS DE REPETIÇÃO.................................................................................................................................... 30 11.12.1. Estrutura de Repetição WHILE (Enquanto)................................................................................................. 30 11.12.2. Estrutura de Repetição REPEAT (Repita).....................................................................................................31 11.12.3. Estrutura de Repetição FOR (Para)..............................................................................................................32 11.13. DECLARAÇÃO DE CONSTANTES................................................................................................................................. 33 11.14. COMENTÁRIOS...................................................................................................................................................... 33 11.15. ESTRUTURAS DE DADOS......................................................................................................................................... 33 11.15.1. Variáveis Compostas Homogêneas.............................................................................................................33 11.15.1.1. Variáveis Compostas Homogêneas Unidimensionais............................................................................................ 34 11.15.1.2. Variáveis Compostas Homogêneas Bidimensionais.............................................................................................. 34 12. EXERCÍCIOS....................................................................................................................................................... 36 13. BIBLIOGRAFIA................................................................................................................................................... 44 Instituto de Química – UNESP – Araraquara ii Introdução à Computação 1. Classificação dos Computadores Os computadores podem ser classificados segundo o porte e a finalidade em algumas categorias mas estes mudam com o tempo e com a evolução tecnológica. Computadores de mesa ou desktop: são computadores pessoais (PC - Personal Computer) que não foram projetados para serem portáteis. Geralmente, essa classe de computadores é constituída por um monitor, uma Unidade Central de Processamento (CPU) que fica armazenada dentro de um gabinete do tipo mini-torre ou horizontal, um teclado e um mouse. Como esse tipo de equipamento precisa de muito espaço para utilização, a sua demanda tem sido cada vez menor. Para contornar essa dificuldade foi desenvolvido um modelo desktop chamado All-In-One (AIO). Os AIO possuem a CPU integrada ao monitor, reduzindo o espaço necessário para a acomodação do equipamento. Apesar da inovação, muitas empresas tem optado por usar modelos portáteis, que são mais compactos, consomem menos energia, são fáceis de se transportar e possuem sistema próprio de proteção para o caso de quedas de energia ou surtos elétricos. Computadores portáteis: Notebooks (Laptops), Netbooks, Ultrabooks e UltraThins. Os termos notebook e laptop são utilizados indiferentemente para se referir aos computadores portáteis tradicionais. Netbook é um notebook projetado para ser mais leve, menor, com "menor poder de processamento", mais barato e com maior tempo de autonomia. Essas características fazem com que os Netbooks sejam muito usados durante viagens, expedições ou mesmo em casa para acessos rápidos a internet. O termo Ultrabook foi criado pela INTEL em 2011 para referenciar notebooks com determinadas características físicas. A intenção da INTEL era a de criar uma classe de notebooks que pudesse concorrer com os MACBook Air da Apple. Ou seja, criar notebooks que fossem leves, finos, com grande autonomia de bateria e poder de processamento equivalente a um notebook tradicional. Atualmente, esse termo é usado para referenciar notebooks que possuem no máximo 2 cm de altura (o valor é medido com o notebook fechado). Devido as limitações físicas, ultrabooks possuem restrições para a disponibilidade de recursos comuns em notebooks. É raro encontrar um ultrabook que possua mais de 2 portas USB, entrada ethernet para rede, entrada VGA para monitor externo e leitor/gravador de DVD/Blu-ray. Como a altura se tornou um ponto de referência em notebooks, então surgiu no mercado uma nova classe de computadores portáteis chamada de UltraThin. Esse termo vem sendo usado por alguns fabricantes para descrever notebooks que possuem no máximo 2,1 cm de altura e dispõe dos mesmos recursos de um notebook tradicional. O Tablet não é um computador completo, mas é um dispositivo para acesso à Internet, leitura de livros, revistas e jornais, visualização de fotos e vídeos, agenda, calendário e jogos. PDAs (Personal Digital Assistant) ou Handhelds: são os computadores integrados e compactos (de bolso) que possuem acesso à Internet, recursos de GPS, vários aplicativos em versões reduzidas e constituem uma extensão do PC e não um substituto. Os smartphones são telefones celulares que incorporaram recursos computacionais básicos, acesso à Internet, câmera digital, filmadora, sendo que alguns modelos incluem também GPS, processador de textos, planilha eletrônica e outros aplicativos em versões reduzidas. Workstations ou Estações de Trabalho: são computadores desktops mais caros e de alto desempenho, otimizados para aplicações profissionais, usados, por exemplo, por designers gráficos, operadores financeiors, etc. As estações de trabalho possuem telas de alta resolução, circuitos de processamento mais rápido e mais poderoso e grande capacidade de armazenamento. São geralmente utilizados para manipular e exibir dados complexos, tais como CAD (Computer Instituto de Química – UNESP – Araraquara 1 Introdução à Computação Aided Design) 2D e 3D, animação computadorizada, geoprocessamento, modelagem 3D, desenvolvimento de games, etc. Mainframes ou Servidores Corporativos: são computadores de grande porte, de alto custo, com elevada velocidade e capacidade de processamento e armazenamento, destinados ao processamento de grande volume de informações. Os mainframes são caracterizados por um ambiente multiusuário, no qual várias pessoas utilizam o mesmo computador, ao mesmo tempo, através dos terminais. No início, os mainframes eram grandes computadores que podiam ocupar até um andar inteiro, mas com o passar do tempo seu tamanho foi reduzido, sua capacidade aumentada e o termo mainframe foi sendo substituído pela expressão servidor corporativo. Esses computadores são utilizados em ambientes comerciais e em grandes organizações como bancos, companhias aéreas, seguradoras e administradoras de cartões de crédito, etc. Supercomputadores: são os computadores mais poderosos, com altíssimo custo e capacidade superior aos mainframes. Geralmente são utilizados em grandes centros de pesquisa para cálculos sofisticados como previsão do tempo, simulação de testes nucleares, controle de voos espaciais, etc. 2. Sistemas de Computação A computação nasceu da ideia de auxiliar o homem nos trabalhos rotineiros e repetitivos, em geral de cálculo e gerenciamento. Porém, com o crescente desenvolvimento tecnológico, o uso de computadores tornou-se cada vez mais difundido em todas as áreas e hoje o computador consiste em uma ferramenta de trabalho indispensável no dia a dia das empresas, das indústrias, das universidades, e até mesmo nas residências. A utilização do computador para a resolução de problemas e execução de tarefas de forma automática traz vantagens como: rapidez de execução e confiabilidade nos resultados obtidos, pois muitos problemas exigem cálculos sofisticados, assim como a manipulação de grande volume de dados. No primeiro caso, o risco de erro é grande e no segundo, o trabalho torna-se árduo e entediante. O computador elimina esses inconvenientes, pois é caracterizado pela rapidez, precisão e grande capacidade de armazenamento de informações (textos, dados, imagens, voz, etc.). O computador é capaz de realizar cálculos e tomar decisões lógicas em velocidades bilhões de vezes mais rápidas que os seres humanos. Porém, o equipamento por si só não é capaz de realizar uma simples tarefa. Para que ele realize uma determinada tarefa, é preciso que alguém descreva com detalhes todos os passos que o equipamento deve seguir para a execução desta tarefa. Esta descrição é conhecida como programa (software) e constitui uma importante parte do sistema de computação. O equipamento em si, isto é, o computador, faz parte do hardware. Portanto, o hardware e o software, juntamente com o usuário, faz parte essencial de um Sistema de Computação. 2.1. Software - Conceitos Básicos Software ou Programa é a parte lógica que dota o equipamento físico (hardware) com a capacidade de realizar algum trabalho. O programa nada mais é do que uma sequência de instruções escritas em uma linguagem de programação, informando ao hardware o que fazer, e em que ordem. Observação: Em sistemas mecânicos que usam inteligência artificial, é muito comum que o “software” seja uma parte física do equipamento. Isso acontece porque a técnica usada para o controle automático do aparelho é patenteada e a estrutura lógica só é conhecida pelo fabricante. Nestes casos, a peça responsável pelo ajuste automático é comumente chamada de software. Programas Aplicativos constituem uma classe de programas que realizam tarefas específicas. Os 3 programas aplicativos mais populares são: Processadores de Textos, Planilhas Eletrônicas e Sistemas de Gerenciamento de Banco de Dados. Outros exemplos de programas aplicativos são: folha de pagamento, Instituto de Química – UNESP – Araraquara 2 Introdução à Computação controle de estoques, contabilidade, controle de clientes de um consultório médico, controle de rebanhos, etc. Processador de Texto é um programa aplicativo projetado especialmente para facilitar a criação, edição, formatação e impressão de textos. Ele permite fazer correção automática, mudar o tamanho e/ou cor da letra, formatar em várias colunas, inserir um desenho ou gráfico, etc. Exemplos de processadores de textos: Microsoft Word, LibreOffice Writer, Corel WordPerfect, etc. Planilha Eletrônica é uma ferramenta para planejamento e análise numérica que permite utilizar a tela do computador como um papel quadriculado sobre o qual anotamos em linhas e colunas todos os dados. Este tipo de programa permite definir e embutir fórmulas escondidas que realizam cálculos sobre os dados visíveis, permite também a correção de valores, e o aplicativo rapidamente recalcula os resultados afetados por essa correção. São usadas para desenvolver orçamentos de empresas, para organizar e controlar orçamentos domésticos, para controlar o movimento de uma conta bancária, ou ainda efetuar previsões de vendas. Exemplos: Microsoft Excel, LibreOffice Calc, Corel WordPerfect Office, etc. Sistema de Gerenciamento de Banco de Dados (SGBD) é um programa aplicativo capaz de armazenar e recuperar informações em Banco de Dados. Banco de Dados, por sua vez, é um conjunto de informações estruturadas e armazenadas de forma organizada e integrada. Um SGBD possui recursos para inclusão, eliminação, recuperação e modificação de dados, além de permitir ordenar os dados, produzir relatórios, etc. Este tipo de programa substitui o antigo fichário. Exemplos: Microsoft Access, LibreOffice Base, FireBird, MySQL, Sybase, Oracle, etc. Uma lista de telefones dos moradores de uma determinada cidade constitui um Banco de Dados. O catálogo telefônico tem uma estrutura pré-definida (nome do assinante, endereço e telefone) e uma ordem de classificação (por assinante ou por endereço). Para que um Banco de Dados seja eletrônico, basta que todas as informações sejam processadas por um computador. Sistema Operacional é o programa mais importante, que gerencia os recursos do computador. O sistema operacional, no nosso caso o Windows, gerencia o acesso dos programas aplicativos ao teclado, ao monitor (vídeo), à impressora, assim como aos discos e outros dispositivos de leitura e gravação. O sistema operacional fica o tempo todo ativo, prestando serviços aos programas aplicativos que estão sendo executados. Cada linha de computadores tem o seu próprio sistema operacional. Exemplos de sistemas operacionais: Windows, Linux, Mac OS, Unix, Solaris, etc. Linguagem de Programação é um conjunto de regras que permitem a construção de sentenças que descrevem de forma precisa as ações que desejamos que sejam executadas pelo computador. Linguagem de Máquina é um conjunto de instruções capazes de ativar diretamente os dispositivos eletrônicos do computador. A linguagem de máquina é constituída somente por 0 e 1 (bits), o que dificulta a leitura e a compreensão pelas pessoas. Exemplo de uma instrução em linguagem de máquina: 0 1 1 0 1 0 1 0 1 1 0 1 BIT (BInary DigiT = Dígito Binário) 0 ou 1. Bit é a menor unidade de informação, e apresenta dois estados identificáveis (sim ou não, verdadeiro ou falso, chave ligada ou desligada, uma corrente passando ou não por um circuito elétrico, um item magnetizado ou não, etc.) que são associados aos números 1 e 0, respectivamente. Byte é um conjunto de bits. A maioria dos fabricantes de computadores utilizam bytes constituídos por 8 bits. Para o computador armazenar um caractere, que é uma letra, um algarismo, ou símbolo (ex: M, a, 4, 7, -, ?, *) ocupa um byte, ou seja, uma sequência de 8 bits ligados (1) ou desligados (0). O byte é a unidade de medida da quantidade de informação digital. Por exemplo: o disco rígido é de 1 Tera byte (TB), o pen drive é de 8 Giga bytes (GB), etc. Instituto de Química – UNESP – Araraquara 3 Introdução à Computação Os prefixos (kilo, mega, giga, tera, etc.) são coloquialmente utilizados na computação para expressar grandes quantidades de bytes. Como a arquitetura do computador se baseia em números binários, em computação, esses prefixos geralmente são utilizados para indicar potências de dois, o que não é correto, pois no Sistema Internacional de Unidades (SI) esses prefixos representam potências de dez. Prefixos em uso na computação coloquial Nome Símbolo Potência de dez (SI) Potência de dois Diferença quilo K 103 = 1.000 210 = 1.024 2,4% mega M 106 = 1.000.000 220 = 1.048.576 4,9% giga G 109 = 1.000.000.000 230 = 1.073.741.824 7,4% tera T 1012 = 1.000.000.000.000 240 = 1.099.511.627.776 peta P 1015 = 1.000.000.000.000.000 250 = 1.125.899.906.842.624 10,0% 12,5% A norma publicada em 2008 define os seguintes prefixos binários: Prefixos binários segundo normas internacionais Nome Símbolo Potência de dois kibi Ki 210 = 1.024 mebi Mi 220 = 1.048.576 gibi Gi 230 = 1.073.741.824 tebi Ti 240 = 1.099.511.627.776 pebi Pi 250 = 1.125.899.906.842.624 Padrões de Codificação No computador a representação interna de informações é feita através de um padrão de codificação onde, por convenção, certos conjuntos de bits representam certos caracteres. No padrão de codificação ASCII estendido, de 8 bits, a letra A é representada por 1000001. Unicode é outro padrão de codificação de 16 bits. Linguagem de Montagem é uma linguagem de baixo nível que situa apenas um nível de abstração acima da linguagem de máquina e usa mnemônicos (símbolos fáceis de memorizar) para expressar as instruções. Um programa especial chamado montador deve traduzir as instruções (simbólicas) da linguagem de montagem para a linguagem de máquina. Exemplo: Assembler é o montador da linguagem Assembly. Exemplo de instruções em linguagem de montagem: ADD C, 1 MOV A, B CMP A, E JMP fim Linguagem de Alto Nível é uma linguagem que utiliza notações matemáticas e grupos de palavras (em inglês) para representar as instruções de máquina, tornando o processo de programação mais próximo do entendimento humano. Exemplos de linguagens: Fortran, Pascal, C++, Visual Basic, Delphi, Java, PHP, Python, etc. Exemplos de trechos de programa: Instituto de Química – UNESP – Araraquara 4 Introdução à Computação FORTRAN 10 if (nota .LT. 5) goto 30 write(2, 20) 20 format('Aprovado') goto 50 30 write(2, 40) 40 format('Reprovado') 50 stop end BASIC 30 if nota < 5 then print "Reprovado" else print "Aprovado" PASCAL if nota < 5 then write('Reprovado') else write('Aprovado'); C if (nota < 5) printf(“Reprovado”); else printf(“Aprovado”); Compilador: traduz o programa fonte (ou código fonte), escrito na linguagem de alto nível, como Pascal ou C, para a linguagem de máquina, gerando o programa executável que o computador consegue entender e processar diretamente. Interpretador: interpreta cada comando do programa fonte e executa as instruções que a ele correspondem, sem gerar um programa executável. Em geral os programas interpretados são mais lentos do que os compilados, pois os compiladores fazem a tradução uma única vez, e a partir daí executam diretamente o programa traduzido, enquanto que o interpretador traduz o programa fonte todas as vezes que executa. 2.2. Hardware - Conceitos Básicos Hardware é a parte física de um Sistema de Computação, ou seja, todos os elementos materiais que o compõem (a estrutura, os circuitos eletrônicos, os dispositivos mecânicos, elétricos, magnéticos, etc). Os componentes básicos de um computador são: Dispositivo de Entrada e Saída (ou Periféricos) Memória Unidade Central de Processamento (UCP) Dispositivo de Entrada Memória RAM Unidade Lógica e Aritmética Unidade de Controle UCP Instituto de Química – UNESP – Araraquara 5 Dispositivo de Saída Introdução à Computação Dispositivo de Entrada serve para receber os dados e programas preparados pelo ser humano e transformá-los em sinais eletromagnéticos (bits) manipuláveis pelo computador. Exemplo: teclado, mouse, scanner, drive de DVD, etc. Dispositivo de Saída serve para transformar os dados processados pelo computador em formas compreensíveis pelo ser humano e exibi-los. Exemplo: impressora, monitor ou vídeo, plotter, etc. Memória é o dispositivo que armazena informações. Existem dois tipos de memória: memória primária e secundária. Memória Primária é a memória sem a qual o computador não funciona. A sua principal função é armazenar informações necessárias para o processador, como por exemplo, os programas em execução. Fazem parte da memória primária, as memórias RAM, ROM e Cache. RAM (Random Access Memory) é a memória de trabalho do computador. Ela pode ser lida e gravada pela Unidade Central de Processamento (UCP) a qualquer instante. É onde ficam armazenados os dados, os resultados intermediários e os programas que estão sendo executados pela UCP. Quando um programa que estava sendo usado é fechado, a parte da memória RAM, que estava sendo utilizada, é liberada para armazenar novos dados e programas. As informações que são introduzidas no computador através do teclado, da leitura do disco rígido, CD/DVD ou pen drive são armazenadas na memória RAM. Como a memória RAM é volátil as informações nela armazenadas desaparecem com o desligamento do computador ou com a queda de energia elétrica. ROM (Ready Only Memory) é a memória exclusivamente de leitura, onde as informações são gravadas uma única vez, geralmente pelo fabricante e nunca mais alteradas. A memória ROM não é volátil, e é uma memória permanente, o seu conteúdo não é perdido mesmo com o desligamento do computador. Nos microcomputadores, existe um programa muito importante chamado BIOS (Basic Input-Output System - Sistema Básico de Entrada e Saída) que tem várias funções, entre as quais, a de realizar a "partida" do computador . Quando ligamos o computador, o BIOS realiza a contagem de memória, faz uma rápida checagem do funcionamento do computador e carrega o Sistema Operacional do disco rígido (memória secundária) para a memória RAM. O BIOS está gravado em uma memória ROM, pois esse programa não deve ser alterado e deve ser executado todas as vezes que o computador é ligado. Existem outros tipos de memória ROM como PROM (Programmable ROM), EPROM (Erasable Programmable ROM), EEPROM (Electrically Erasable Programmable ROM), etc. Cache é também um tipo de memória primária, volátil, de grande velocidade, mais rápida do que a memória RAM. A memória cache armazena e recupera os dados usados mais frequentemente pelo processador de modo que sua recuperação possa ser bem rápida. É uma memória mais cara do que a memória RAM. Memória Secundária é um meio de armazenamento a longo prazo no qual o computador armazena dados que poderão ser posteriormente utilizados. Este tipo de memória não é estritamente necessária para a operação do computador, o acesso a este tipo de memória é mais lento em comparação com o acesso à memória primária, e o custo por unidade de memória secundária é muito menor que o custo por unidade de memória primária. As memórias secundárias mais comuns, utilizadas pelos computadores são: disco rígido, SSD, pen drive, cartão de memória micro SD, CD, DVD, Blu-ray, etc. Disco Rígido ou HD (Hard Disk) é um meio de armazenamento secundário de informações que emprega vários discos não flexíveis revestidos com material magnético e alojados juntamente com Instituto de Química – UNESP – Araraquara 6 Introdução à Computação os cabeçotes de leitura/gravação, em uma caixa hermeticamente fechada. Atualmente a capacidade de um disco rígido é especificado em termos de centenas de Gbytes ou alguns Tbytes. SSD (Solid State Drive) ou Unidade (ou Drive) de Estado Sólido é um meio de armazenamento secundário de informações, constituído por circuitos eletrônicos do mesmo tipo da memória flash utilizada nos pen drives. O SSD tem velocidade bem maior em relação aos discos rígidos, porém seu custo é mais elevado. Os SSDs apresentem consumo reduzido de energia, tempo de acesso bem reduzido e são silenciosos. Pen drive é uma memória portátil, constituído por memória flash, que funciona em equipamentos com porta USB. O pen drive surgiu em 2000 com o objetivo de substituir os disquetes. Existem pen drives de 1 GB, 2 GB, 256 GB e até 1 TB. O modelo de 1 GB armazena o equivalente a 728 disquetes. cartão de memória micro SD (Secure Digital) é um cartão de memória flash removível, utilizado inicialmente em telefones celulares devido a sua medida reduzida (1,5cm x 1,1cm x 1 mm). Através de um adaptador o micro SD pode ser utilizado em qualquer dispositivo que suporta o cartão SD. CD (Compact-Disk): uma tecnologia de armazenamento ótico que emprega disco a laser e pode armazenar até 700 Mbytes de informações digitais. Existem os discos CD-R (CD-Recordable) que podem ser escritos só uma vez e os CD-RW (CD-ReWritable) que podem ser gravados, apagados e reutilizados. DVD (Digital Video Disc e posteriormente Digital Versatile Disc): uma geração de disco ótico que armazena 4.7 Gbytes de informações em um disco de uma face e uma única camada e 17 Gbytes em um disco de 2 faces e 2 camadas. Existem também os discos DVD-R (Recordable) que só gravam uma vez e o DVD-RW (Rewritable) que é a versão regravável. Blu-ray (BD): é a nova geração de disco ótico para vídeos de alta definição, que utiliza raio laser de cor azul com comprimento de onda menor do que o do DVD e CD, mas apresenta o mesmo tamanho de um DVD e tem a capacidade de armazenar de 25 a 100 Gbytes de informações. Unidade Central de Processamento (UCP) ou Central Processing Unit (CPU) é a principal unidade de controle e processamento de um computador, e é constituída de circuitos eletrônicos que interpretam e executam instruções de programas e comunicam com os dispositivos de armazenamento e de entrada e saída. A UCP é composta pela Unidade Lógica e Aritmética (ULA) e pela Unidade de Controle (UC). Unidade Lógica e Aritmética (ULA): realiza cálculos através de operações aritméticas (adição, subtração,...) e operações relacionais (comparação de valores). Unidade de Controle (UC): gerencia as operações do computador comunicando com a Unidade Lógica e Aritmética, com a memória e com os dispositivos de entrada e saída. Controla as instruções dos programas que estão na memória, faz com que o dispositivo de entrada leia os dados, transfira os valores adequados da memória para a ULA, armazena e recupera dados e resultados intermediários armazenados na memória e passa os resultados para o dispositivo de saída. 3. Noções Básicas de Internet Redes de computadores são grupos de computadores e dispositivos computacionais como impressoras, scanners, etc., conectados por algum recurso de comunicação. Uma rede pode envolver conexões permanentes tais como cabos ou conexões temporárias através de linhas telefônicas ou outros elos de comunicação. Instituto de Química – UNESP – Araraquara 7 Introdução à Computação Internet é a rede mundial de computadores que é formada por várias redes de computadores interligadas. A Internet surgiu de um projeto militar nos Estados Unidos na década de 60, evoluiu para uma rede acadêmica na década de 70 e hoje constitui o maior meio de comunicação do mundo. A Internet é formada por redes locais (LANs - Local Area Network), redes de abrangência urbana (MANs - Metropolitan Area Network) e redes remotas (WANs - Wide Area Network) que abrangem estados, países e continentes, conectando computadores do mundo inteiro. Essas redes são conectadas por recursos que variam de linhas telefônicas de discagem comum, linhas privadas dedicadas de alta velocidade, ligações por microondas, ligações por fibras óticas e satélites. Na década de 80 e no início da década de 90 a rede foi aperfeiçoada e começou a surgir serviços que caracterizam a Internet atual. O principal desses serviços é World Wide Web (WWW) lançada em 1991, que viabilizou a transmissão de imagens, sons e vídeos pela Internet. Foi o WWW que popularizou a Internet. A Intranet é uma rede interna de informações de uma organização (empresa, universidade, etc.) baseada na tecnologia da Internet. Serve para compartilhar informações apenas entre os usuários registrados, sem permitir o acesso de pessoas externas. A Intranet é uma evolução da Internet, em que se busca, dentro das organizações, formas de acesso às informações, usando os mecanismos de navegação que são os navegadores. A operação é idêntica, e mesmo as interfaces são as mesmas daquelas vistas na Internet. Através da Intranet, os usuários internos da organização compartilham informações tais como: formulários, especificações de produtos, catálogos de produtos, políticas internas de administração e de recursos humanos, cadastro de clientes, etc. Rede Local (LAN - Local Area Network) é uma estrutura que conecta vários computadores e outros dispositivos (como impressoras) dentro de uma área geográfica limitada. Os usuários de rede local podem trocar informações, compartilhar periféricos e utilizar recursos de servidor de arquivos. Normalmente a área geográfica de uma rede local se restringe a uma sala, um departamento, um andar ou um prédio, dentro de um raio de 100 m. Servidor: nas redes locais o servidor é um computador que fornece algum tipo de serviço para outros computadores conectados a ele via rede. Um exemplo é o servidor de arquivos que tem um disco grande e atende pedidos de leitura e gravação naquele disco, outro exemplo é o servidor de impressão que controla as tarefas de impressão enviadas para a impressora conectada na rede. Alguns dos serviços básicos da Internet são: correio eletrônico (e-mail), WWW (World Wide Web), acesso remoto ao computador, transferência de arquivos, lista de correio eletrônico, grupos de notícias, comunicação interativa, etc. Correio Eletrônico (e-mail) permite um usuário escrever e enviar uma mensagem de texto para outro usuário ou para um grupo deles, através da internet. WWW (World Wide Web ou simplesmente Web) é um serviço no formato de hipertextos que permite ao usuário buscar informações nos diversos computadores da Internet e visualizá-las através de seções gráficas, formadas por imagens, sons e animações. Hipertexto é um documento que permite acesso não sequencial, com diferentes níveis de detalhamento e com páginas inter-relacionadas. O leitor pode percorrer o documento na sequência desejada, saltando de uma página para outra em busca de informações relacionadas a uma palavra, frase (em destaque) ou ícone. Acesso Remoto ao Computador é uma ferramenta interativa que permite acessar e executar programas e aplicações disponíveis em um computador remoto, conectado à internet. Transferência de Arquivos (ftp, download e upload) permite transferir arquivos entre computadores interligados pela rede. Instituto de Química – UNESP – Araraquara 8 Introdução à Computação Lista de Correio Eletrônico ou Lista de Discussão é uma forma de contatar um grupo de pessoas através do e-mail. As pessoas que participam da lista podem enviar mensagens para o endereço da lista, o qual reenvia então a mensgem para cada uma das pessoas (e-mail) inscritas na lista. Comunicação Interativa é a comunicação instantânea entre duas ou mais pessoas, independente da localização geográfica dessas pessoas. 4. Números Binários O sistema binário (ou sistema de base 2), é formado por dois algarismos: 0 e 1, enquanto que o sistema decimal (ou sistema de base 10), normalmente utilizado, é formado por 10 algarismos: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Os números binários (0 e 1) foram adotados nos computadores por motivos de precisão e economia, pois construir um circuito eletrônico capaz de detectar a diferença entre dois estados (presença ou ausência de corrente elétrica, por exemplo) é muito mais fácil e barato do que construir um circuito que detecte a diferença entre dez estados diferentes. Um dígito binário é chamado de BIT, proveniente de BInary digiT, como mencionado anteriormente. Transformação de números decimais em números binários 13 2 1 6 2 0 3 2 1 1 => 46 2 0 23 2 1 11 2 1 5 2 1 2 2 0 1 1 1 0 1 => 1 0 1 1 1 0 Transformação de números binários em números decimais 1 1 0 1 1 0 1 1 1 0 X x x x x x x x x x 23 22 21 20 25 24 23 22 21 20 0 1 2 0 4 4 8 8 0 13 32 46 Instituto de Química – UNESP – Araraquara 9 Introdução à Computação Números Decimais Números Binários 00 01 02 03 04 05 06 07 08 09 10 11 12 .. . 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 .. . 5. Algoritmos Algoritmo é a descrição, de forma lógica, das ações a serem executadas no cumprimento de uma tarefa, ou seja, é uma sequência de passos que levam à realização de uma tarefa. Em um algoritmo é importante salientarmos que: - cada passo deve ser uma instrução simples e sem ambiguidade que possa ser realizada; - a ordem dos passos deve ser precisamente determinada; - deve possuir um fim, isto é, um número finito de passos. Existem várias formas para representar um algoritmo: descrição narrativa; fluxograma ou diagrama de blocos; pseudocódigo (forma genérica de escrever o algoritmo usando uma linguagem simples, estruturada e nativa a quem o escreve). A seguir, apresentamos um algoritmo em forma de descrição narrativa, para troca de uma lâmpada queimada. 1. Remova a lâmpada queimada. 2. Coloque uma nova lâmpada. Detalhando os passos, temos: 1.1. Coloque uma escada embaixo da lâmpada queimada. 1.2. Suba a escada até alcançar a lâmpada queimada. 1.3. Gire a lâmpada queimada no sentido anti-horário até que ela se solte. 2.1. Escolha uma lâmpada nova de mesma potência da queimada. 2.2. Posicione a nova lâmpada no soquete. 2.3. Gire a lâmpada no sentido horário até que ela se firme. 2.4. Desça a escada. Instituto de Química – UNESP – Araraquara 10 Introdução à Computação Ordenando e detalhando um pouco mais os passos, temos: 1. Coloque uma escada embaixo da lâmpada queimada. 2. Escolha uma lâmpada nova. 3. Enquanto a potência não for a mesma da queimada, Descarte a lâmpada escolhida, Escolha outra lâmpada. 4. Enquanto não possa alcançar a lâmpada queimada, Suba mais um degrau da escada. 5. Enquanto a lâmpada não estiver livre do soquete, Gire a lâmpada no sentido anti-horário. 6. Posicione a nova lâmpada no soquete. 7. Enquanto a lâmpada não estiver firme no soquete, Gire a lâmpada no sentido horário. 8. Desça da escada. 5.1. Algoritmo na solução de um problema usando o computador Problema do mundo real Fase de solução do problema Solução na forma de algoritmo Solução na forma de um programa de computador Fase de implementação No esquema acima, é possível visualizar onde se encaixa o algoritmo, na solução de um problema utilizando o computador. Muitas vezes, temos um problema do mundo real que desejamos resolver através do computador, devido principalmente à rapidez de execução e confiabilidade dos resultados. Neste caso, inicialmente é necessário compreender muito bem o problema e saber solucionar este problema. A próxima etapa consiste em transcrever os passos da solução do problema em uma forma de algoritmo (descrição narrativa, fluxograma ou pseudocódigo). A etapa seguinte é a de implementação, que consiste em passar a solução, que está em forma de algoritmo, para uma linguagem de programação, gerando assim um programa de computador. Um programa nada mais é do que a formalização de um algoritmo em uma determinada linguagem de programação, obedecendo às regras de sintaxe e semântica desta linguagem, de forma que o computador possa “entender” a sequência de ações que deve ser executada. Utilizando-se um programa de computador, o problema pode ser resolvido com muita rapidez, quantas vezes forem necessárias. Instituto de Química – UNESP – Araraquara 11 Introdução à Computação 5.2. Passos para a construção de um algoritmo Para construir um algoritmo, devemos seguir os passos abaixo: 1) Compreender o problema e a sua solução de uma forma muito clara e destacar os pontos mais importantes. 2) Definir os dados de entrada, isto é, os dados (valores e informações) que serão fornecidos ao algoritmo. 3) Definir o processamento, ou seja, os cálculos que deverão ser realizados para a solução do problema. 4) Definir os dados de saída, ou seja, os resultados do processamento que serão apresentados ao usuário. 5) Construir o algoritmo usando uma das formas citadas acima (descrição narrativa, fluxograma ou pseudocódigo). 6) Testar o algoritmo através de simulações. 5.3. Algoritmo, programação e raciocínio lógico A construção de algoritmos e a programação permitem melhorar o raciocínio lógico e acelerar o desenvolvimento cognitivo, porque a elaboração de algoritmos e programas faz com que o aluno exercite a percepção dos pontos chaves, força o aluno a fazer planejamento e pensar organizadamente. Um dos principais objetivos desta disciplina é estimular o aluno a desenvolver o raciocínio lógico através da construção de algoritmos e programas, proporcionando um amadurecimento na maneira de pensar diante dos problemas reais. Não existem fórmulas prontas na construção de algoritmos e programas. O que se adquire com o treino é o aperfeiçoamento na forma de pensar e raciocinar sobre o problema em mãos. O raciocínio lógico é uma habilidade inerente a todas as pessoas e necessária em inúmeras atividades que realizamos. James Paul Holloway em seu livro “Introdução à Programação para Engenharia” diz: “... a razão mais importante para estudar e criar algoritmos não é, na verdade, sua utilidade natural, mas em vez disso, a habilidade de pensamento que a sua criação nos força a desenvolver. Para ser mais exato, o raciocínio lógico necessário lhe proporcionará boas condições quando você tiver problemas a analisar, mesmo se esses problemas não puderem ser resolvidos por meio de algoritmos formalmente construídos.”. Outra passagem a destacar no livro de Holloway é: “Criar algoritmos é exatamente o que fazemos. Nós os criamos. Começamos com um problema a resolver e uma página em branco, e tentamos preencher este vazio com um código-fonte que, quando traduzido e executado num computador, resolverá o problema. Este processo criativo envolve muitos princípios de projeto. Devemos entender o problema; analisar o problema e encontrar uma solução; analisar a solução para encontrar a melhor maneira de implementá-la; trabalhar considerando as restrições; procurar simplicidade, elegância e confiabilidade. Uma introdução aos algoritmos e suas implementações pode, assim, proporcionar uma rica experiência introdutória no projeto em engenharia.” Para exercitar um pouco o raciocínio lógico, tente resolver os problemas abaixo: 1) Há três suspeitos de um crime: o cozinheiro, a governanta e o mordomo. Sabe−se que o crime foi efetivamente cometido por um ou por mais que um deles. Sabe−se, ainda que: - se o cozinheiro é inocente, então a governanta é culpada; - ou o mordomo é culpado ou a governanta é culpada, mas não os dois; - o mordomo não é inocente. Logo: (a) a governanta e o mordomo são os culpados (b) o cozinheiro e o mordomo são os culpados (c) somente a governanta é culpada Instituto de Química – UNESP – Araraquara 12 Introdução à Computação (d) somente o cozinheiro é culpado (e) somente o mordomo é culpado 2) O preço de um produto foi reduzido em 20% numa liquidação. Qual deverá ser a porcentagem de aumento do preço do mesmo produto para que ele volte a ter o preço original? (a) 15% (b) 20% (c) 25% (d) 30% 6. Tipos de Dados Apesar do computador, na maior parte do tempo em nosso meio, ser utilizado como processador de textos ou para acesso à Internet, o objetivo principal de um computador é a resolução de problemas. Na resolução de problemas o computador manipula dados de vários tipos. Estes dados podem ser numéricos, literais ou lógicos. A seguir apresentamos a classificação dos dados e a sua descrição. Dados Numéricos Real Lógicos Inteiro Literais Caractere Cadeia de Caracteres 6.1. Dados Numéricos Os dados numéricos podem ser inteiros ou reais. Os números inteiros podem ser positivos ou negativos e não possuem a parte decimal. Os números reais podem ser positivos ou negativos e possuem a parte decimal. Os números reais podem ser representados em forma decimal ou em forma de ponto flutuante. Exemplo de números reais em forma decimal: 8.15927, 0.5, 176.48, etc. Obs. O ponto decimal deve ser representado por ponto (.), seguindo a notação da língua inglesa que é utilizada nas linguagens de programação. Geralmente, utiliza-se a representação de números reais em ponto flutuante (notação científica) quando o número é muito grande ou muito pequeno. Exemplo: 0.0000000000061725 617 x 10-14 (representação em ponto flutuante) 418639138670259 419 x 1012 (representação em ponto flutuante) Para transformar um número real que está na representação decimal para a representação em ponto flutuante, devemos: definir o número de dígitos de precisão (ou significativos) e arredondar o último dígito, se for necessário. ajustar a magnitude do número como potência de 10. Instituto de Química – UNESP – Araraquara 13 Introdução à Computação 6.2. Dados Literais Os dados literais são caracteres ou cadeia de caracteres. Caractere é qualquer letra (maiúscula ou minúscula), algarismo (0, 1, 2, …, 9) ou caractere especial (sinais de pontuação e símbolos: %, +, @, *, ?, &, #, :, etc.). Os caracteres devem ser representados entre apóstrofos ('). Exemplos: 'y', 'n', '$', etc. Cadeia de caracteres ou string: é uma sequência de caracteres. As cadeias de caracteres também devem ser representadas entre apóstrofos ('). Exemplos: 'Ola', 'Bem vindo!', 'Digite um numero:', etc. 6.3. Dados Lógicos Os dados lógicos são também chamados de dados booleanos e podem assumir somente um dos valores: falso ou verdadeiro. Em linguagens de programação, geralmente usa-se o número 1 para representar um resultado verdadeiro e o número 0 para representar um resultado falso. 7. Constantes e Variáveis Constantes são valores fixos que não se modificam durante a execução do programa. As constantes podem ser numéricas (5, 128, -76), literais ('Paula', 'feminino', 'fim'), ou lógicas (V ou F). Variáveis são entidades que possuem um conteúdo (valor) que pode variar no algoritmo ou no programa. Embora elas possam assumir diferentes valores, só podem armazenar um único valor a cada instante. Uma variável é conhecida no programa por um nome ou identificador. O identificador ou o nome de uma variável deve iniciar com uma letra e pode ser seguida de letras, algarismos ou caractere de sublinhado, mas não pode conter caracteres especiais (-, *, %, ç, e letras com acentos). Exemplos de identificadores válidos: X, Y1, saldo, nome_do_cliente, RG, Aula26, etc. Exemplos de nomes de variáveis inválidos: 2x, A[1], M-N, 07/09, nota-do-aluno, salário, etc. As variáveis podem ser numéricas ou literais e devem ter nomes significativos. Nomes significativos são nomes que lembram o seu conteúdo. Por exemplo: nota, nome, saldo, ao invés de x, y, z. 8. Expressões Expressão em termos computacionais está ligado ao conceito de expressão ou fórmula matemática, onde um conjunto de variáveis e constantes se relacionam por meio de operadores compondo uma fórmula que, quando avaliada, resulta em um valor. 8.1. Expressões Aritméticas Expressões Aritméticas: são expressões em que os operadores são aritméticos e os operandos são constantes e/ou variáveis numéricas. Operadores Aritméticos e suas Prioridades prioridade 1 2 operador ação * multiplicação / divisão MOD resto da divisão inteira + adição - subtração Instituto de Química – UNESP – Araraquara 14 Introdução à Computação Funções função ação EXP(x) exponencial de x (ex, onde e = 2.718282...) LN(x) logaritmo neperiano de x (logex) ABS(x) valor absoluto de x (x) TRUNC(x) parte inteira do número real x ROUND(x) arredonda o número real x SIN(X) seno de x COS(x) cosseno de x SQR(x) quadrado de x (x2) SQRT(x) raiz quadrada de x ( x ) Exemplos de expressões aritméticas: a) A-B*SQR(C) b) SQRT(SQR(b)-4*a*c) c) TRUNC(3.68) - EXP(3) d) ROUND(5.8)+ABS(-4) e) SIN(A)-LN(B) f) 22 MOD 6 + soma 8.2. Expressões Relacionais Expressões Relacionais ou Relações: são expressões que realizam comparações entre valores do mesmo tipo. Estes valores são representados nas relações através de constantes, variáveis ou expressões aritméticas. Operadores Relacionais operador ação = igual <> diferente < menor > maior <= menor ou igual >= maior ou igual O resultado obtido de uma expressão relacional é sempre um valor lógico (Verdadeiro ou Falso). Exemplos de expressões relacionais: a) X+Y=3*X+5 b) 2*A<8 c) nome <> 'Ana Maria' d) SQRT(SQR(b)-4*a*c) >= 0 e) A <> B f) sexo = ‘masculino’ Instituto de Química – UNESP – Araraquara 15 Introdução à Computação 8.3. Expressões Lógicas Expressões Lógicas: são expressões cujos operadores são lógicos e cujos operandos são expressões relacionais, constantes e/ou variáveis do tipo lógico. O resultado de uma expressão lógica é sempre um valor lógico (V ou F). Operadores Lógicos operador ação e () conjunção ou () disjunção não (~) negação Sejam p e q proposições, temos a seguinte Tabela-Verdade: conjunção p V V F F q V F V F disjunção pq V F F F p V V F F negação pq V V V F q V F V F p V F ~p F V Suponha que tenhamos duas proposições: A : “Eu gosto de dia ensolarado.” B : “Hoje vai chover” Podemos criar várias composições de proposições usando os operadores lógicos: ~A : “Eu não gosto de dia ensolarado” ~(A B) : “Não é verdade que eu gosto de dia ensolarado e hoje vai chover” A ~B : “Eu gosto de dia ensolarado ou hoje não vai chover” Exemplos de expressões lógicas: a) X > 2*Y Idade = 18 b) cidade = 'Araraquara' bairro = 'Centro' c) ~Fim Total < 15 Prioridade entre os Operadores prioridade operador 1 aritmético 2 relacional 3 não 4 e 5 ou Obs: Vários níveis de parênteses podem ser utilizados para fixar uma ordem de execução diferente da prioridade indicada pela tabela acima. Exemplo: ~(x = 20 y > 5) Instituto de Química – UNESP – Araraquara 16 Introdução à Computação 9. Fluxogramas Fluxograma ou diagrama de blocos é a representação simbólica dos passos a serem seguidos em um algoritmo, ou seja, é a representação esquemática de um processo. Exemplo de Controle de Estoque: O funcionário responsável pelo estoque recebe uma solicitação de peça e verifica na listagem de estoque a disponibilidade da mesma. Caso a peça esteja disponível, ela é entregue ao solicitante e em seguida é efetuada a baixa no estoque. Caso a peça não esteja disponível, o funcionário verifica o tempo de entrega junto ao fornecedor da peça e informa o tempo de entrega ao solicitante. Caso o solicitante deseje a peça, é efetuado o pedido ao fornecedor e aguarda-se a chegada da peça e a sua entrada no estoque. Em seguida ela é entregue ao solicitante e é efetuada a baixa no estoque. Início Recebe a solicitação e verifica no estoque S Entrega ao solicitante Dá baixa no estoque Disponível ? Faz o pedido e aguarda a entrega no estoque N Verifica o tempo de entrega e informa ao solicitante S Quer a peça? N Fim Os símbolos básicos utilizados em fluxogramas são: início ou fim leitura (entrada) decisão cálculo e atribuição impressão (saída) sentido do fluxo 9.1. Comando de Atribuição O Comando de Atribuição permite que se forneça um valor a uma determinada variável. O valor pode ser resultado de uma expressão. Identificador valor ou expressão Instituto de Química – UNESP – Araraquara 17 Introdução à Computação Exemplos: a) A 7 b) idade 18 c) NOME 'Marina' d) media (a + b)/2 e) X Y 9.2. Comando de Entrada O Comando de Entrada permite que o usuário do programa forneça valores ao programa. lista de identificadores onde: lista de identificadores são os nomes das variáveis, separados por vírgula, nas quais serão armazenados os valores provenientes do usuário através dos dispositivos de entrada. 9.3. Comando de Saída O Comando de Saída permite mostrar ao usuário os valores das variáveis ou das constantes. lista de identificadores, constantes ou expressões onde: lista de identificadores são os nomes das variáveis, cujos conteúdos serão mostrados, as constantes são os valores e as expressões podem ser expressões aritméticas ou outras, cujos resultados serão mostrados aos usuários através de um dispositivo de saída. 9.4. Estrutura Sequencial Estrutura Sequencial é uma coleção de ações a serem executadas sequencialmente. ação1 ação2 Exemplo 9.1. Fluxograma para ler três números, calcular a média aritmética entre estes números e imprimir o resultado. Instituto de Química – UNESP – Araraquara 18 Introdução à Computação início A,B,C media (A+B+C)/3 'Média = ', media fim 9.5. Estruturas Condicionais Estas estruturas permitem escolher um grupo de ações ou estruturas a serem executadas quando uma determinada condição, representada por uma expressão lógica, é satisfeita ou não. 9.5.1. Estrutura Condicional Simples condição F V ação / ações A(s) ação(ções) só será(ão) executada(s) se a condição for Verdadeira. Condição é um teste, cujo resultado é Verdadeiro ou Falso Exemplo 9.2. Fluxograma para ler uma nota e imprimir REPROVADO, caso a nota seja menor do que 5. início nota nota < 5 F V ‘REPROVADO‘ fim Instituto de Química – UNESP – Araraquara 19 Introdução à Computação 9.5.2. Estrutura Condicional Composta V F condição ação1 / ações1 ação2 / ações2 Se a condição for Verdadeira, a ação1 ou a sequência de ações1 serão executadas, se a condição for Falsa, a ação2 ou a sequência de ações2 serão executadas. Exemplo 9.3. Fluxograma para ler a nota da prova e a nota do trabalho, e imprimir REPROVADO, caso a nota da prova ou do trabalho seja menor do que 5 e caso contrário imprimir APROVADO. início prova, trab V F prova < 5 ou trab < 5 ‘REPROVADO‘ ‘APROVADO‘ fim 9.6. Estruturas de Repetição Uma estrutura de repetição permite repetir um grupo de ações ou estruturas, várias vezes e o fim da repetição é determinado por um teste de condição. 9.6.1. Estrutura de Repetição Enquanto-faça Esta estrutura de repetição tem o teste de condição no início da repetição. Portanto, enquanto a condição é verdadeira, a ação ou as ações serão executadas repetidamente (ENQUANTO-FAÇA). Neste tipo de estrutura de repetição, caso a condição seja Falsa na primeira vez, a ação ou as ações não serão executadas nenhuma vez. condição F V ação / ações Instituto de Química – UNESP – Araraquara 20 Introdução à Computação Exemplo 9.4 Fluxograma para imprimir o quadrado dos números inteiros entre 1 e 50 (inclusive), usando a estrutura de repetição Enquanto-faça. início N1 N <= 50 F V Q N*N Q N N+1 fim 9.6.2. Estrutura de Repetição Repita-até Esta estrutura de repetição tem o teste de condição no final da repetição. Portanto, uma ação ou sequência de ações são executadas repetidamente, até que uma determinada condição seja satisfeita (REPITA-ATÉ). Neste tipo de estrutura de repetição, como o teste de condição está no final, a ação ou as ações serão executadas pelo menos uma vez. ação / ações F condição V Instituto de Química – UNESP – Araraquara 21 Introdução à Computação Exemplo 9.5. Fluxograma para imprimir o quadrado dos números inteiros entre 1 e 50 (inclusive), usando a estrutura de repetição Repita-até. início N1 Q N*N Q N N+1 F N > 50 V fim 10. Programação Linguagem de programação é a linguagem utilizada pelo homem para dar instruções ao computador. Uma linguagem de programação é formada por um conjunto de regras sintáticas e semânticas que permite ao homem expressar as instruções que deseja que o computador execute. Existem vários paradigmas (estilos) de programação: Programação Imperativa (Fortran, Pascal, C) Programação Orientada a Objetos (Smalltalk, C++, Java) Programação Funcional (Lisp) Programação Lógica (Prolog) Na programação imperativa os programas são centrados no conceito de estados (modelados por variáveis) e ações (comandos) que manipulam o estado. Uma linguagem de programação que utiliza o paradigma imperativo manipula variáveis a partir de ordens ou comandos. Ex. “faça isso e depois aquilo”. O paradigma orientado a objetos tenta extrair conceitos do mundo real por meio de estruturas como objetos, classes, atributos e métodos. Uma classe é um conjunto de objetos e cada classe tem seus atributos (propriedades) e métodos (ações). Ex. Cachorro é uma classe que possui os atributos: raça, idade, cor, peso, etc. Totó é um objeto da classe cachorro, assim como Banzé. Os métodos da classe cachorro são: latir, comer, dormir, etc. A programação orientada a objetos é complexa, envolvendo conceitos de encapsulamento, herança, polimorfismo, associação, agregação, composição, etc. No paradigma funcional os programadores abstraem o programa como uma sequência de funções executadas de modo empilhado. Este paradigma é muito utilizado em Inteligência Artificial. Instituto de Química – UNESP – Araraquara 22 Introdução à Computação O paradigma lógico tem estilo declarativo e os programas são relações entre entrada e saída. Há uso deste paradigma em Sistemas Especialistas e Bancos de Dados. Os paradigmas mais utilizados são os paradigmas imperativo e orientado a objetos. A relação entre linguagens de programação e paradigmas de programação é complexa porque uma linguagem pode suportar mais do que um paradigma. Na programação existem também os conceitos de modularização e programação estruturada que não são paradigmas, mas técnicas de programação. Na programação estruturada os elementos chaves são as estruturas básicas de controle (sequencial, condicional e repetitiva). Nesta técnica de programação é proibido o uso irrestrito de comandos de desvio incondicional GOTO para aumentar a legibilidade e a compreensão do programa. A modularização de programas permite dividir o programa em blocos denominados procedimentos, funções ou subrotinas, de modo a facilitar a compreensão e a correção, melhorando a clareza geral do programa, além de permitir a reutilização de blocos. Com a modularização pode-se separar e esconder do resto do programa, as informações necessárias para realizar uma tarefa específica. 11. Linguagem Pascal A linguagem Pascal foi desenvolvida entre os anos de 1968 e 1970 por Niklaus Wirth, na Suiça, e foi batizada de Pascal em homenagem ao grande filósofo e matemático francês, Blaise Pascal (1623-1662). A linguagem Pascal foi projetada para ser uma versão simplificada da linguagem Algol (1960) para fins educacionais. Ao longo de sua história a linguagem Pascal foi ganhando importância, principalmente no ensino de programação. A linguagem Pascal é semelhante a uma linguagem natural, o que torna muito fácil o seu entendimento. Por esses motivos, apesar de ser uma linguagem antiga, o Pascal ainda é uma das linguagens escolhidas para o ensino de programação. Em termos técnicos, Pascal é uma linguagem imperativa, estruturada e modular. A linguagem Pascal não é case sensitive, isto é, não é sensível a maiúscula e minúscula. Portanto, tanto as palavras reservadas da linguagem quanto os identificadores (nomes de variáveis e constantes) escritos em maiúsculas ou minúsculas não são diferenciados. Exemplo: NOME = Nome = nome. Em 1995 foi criado o Delphi que além de ser uma linguagem de programação baseada em Object Pascal, que permite uma programação visual e oritentada a objetos, é uma IDE (Integrated Development Environment - Ambiente de Desenvolvimento Integrado) e também uma ferramenta RAD (Rapid Application Development – Desenvolvimento Rápido de Aplicações). Em 1999 foi criado o Lazarus que é uma alternativa ao Delphi, porém gratuito e de código aberto . O Lazarus é uma IDE-RAD com base no compilador Free Pascal, compatível e com interface muito parecida com o Delphi. Apesar do Lazarus oferecer um ambiente de programação visual, onde a programação pode ser realizada a partir de elementos gráficos que estão disponíveis na tela, como este tipo de programação é mais complexa, não será abordada neste primeiro curso de programação. Nas aulas práticas desta disciplina será utilizado o Lazarus para o desenvolvimento de programas simples de console. Como o Lazarus é um Ambiente de Desenvolvimento Integrado (IDE), ele possui um editor de textos inteligente que reconhece elementos da linguagem de programação, um compilador para traduzir o código fonte e gerar o programa executável e um depurador (debugger) para auxiliar na correção de erros de lógica do programa. O Lazarus pode ser baixado da página http://www.lazarus-ide.org/, através do link Download Now. Segue um breve roteiro para o uso do Lazarus: – Para começar a digitar um novo programa: vá ao menu Projeto / Novo Projeto e selecione Programa Simples. – Para salvar o programa: vá ao menu Projeto / Salvar Projeto Como e digite um nome para o projeto (não é aceito espaço, use _ se necessário). O Lazarus salva 4 arquivos do projeto. O arquivo Application (com extens”ao EXE) é o programa executável e o arquivo com a extensão LPR contém o código fonte. Instituto de Química – UNESP – Araraquara 23 Introdução à Computação – Para compilar e executar o programa: clique no botão – Para fechar um programa: vá ao menu Projeto / FecharProjeto. As características descritas a seguir são referentes ao Free Pascal utilizado pelo Lazarus. 11.1. Tipos de Dados Integer: números inteiros no intervalo de -32768 a 32767 (ocupa 2 bytes). Operadores: +, -, *, DIV, MOD. DIV: quociente inteiro da divisão. MOD: resto da divisão. Exemplo: 19 DIV 5 = 3 19 MOD 5 = 4 Longint: números inteiros no intervalo de -2147483648 a 2147483647 (ocupa 4 bytes). Real: números reais com grandeza de 2.9x10 -39 a 1.7x1038 com 11 a 12 dígitos significativos (ocupa 6 bytes). Operadores: +, -, *, /. Double: números reais com grandeza de 5.0x10 -324 a 1.7x10308 com 15 a 16 dígitos significativos (ocupa 8 bytes). Extended: números reais com grandeza de 1.9x10 -4932 a 1.1x104932 com 19 a 20 dígitos significativos (ocupa 10 bytes). Char: caractere. String: cadeia de caracteres. Boolean: valores lógicos TRUE ou FALSE. 11.2. Funções Numéricas Pré-definidas Função Ação EXP(x) exponencial de x (ex, onde e = 2.718282...) LN(x) logaritmo neperiano de x (logex) ABS(x) valor absoluto de x (x) TRUNC(x) parte inteira do número real x ROUND(x) arredonda o número real x SIN(X) seno de x COS(x) Cosseno de x SQR(x) quadrado de x (x2) Instituto de Química – UNESP – Araraquara 24 Introdução à Computação SQRT(x) raiz quadrada de x ( x ) INC(x) incrementa 1 no valor da variável x DEC(x) decrementa 1 no valor da variável x PI (3.14159265358979) 11.3. Operadores 11.3.1. Operadores Aritméticos operador ação + adição (operandos inteiros ou reais) - subtração (operandos inteiros ou reais) * multiplicação (operandos inteiros ou reais) / quociente real da divisão (operandos inteiros ou reais) DIV MOD quociente inteiro da divisão (operandos inteiros) resto da divisão (operandos inteiros) Obs. No uso dos operadores +, -, * e /, o resultado será real, se pelo menos um dos operandos for real. 11.3.2. Operadores Relacionais operador ação = igual <> diferente < menor > maior <= menor ou igual >= maior ou igual 11.3.3. Operadores Lógicos operador ação NOT não Instituto de Química – UNESP – Araraquara 25 Introdução à Computação AND e OR ou 11.3.4. Prioridade dos Operadores Em uma expressão podem aparecer vários operadores. Quando isso acontece, o compilador Pascal irá avaliar a expressão obedecendo a prioridade dos operadores estabelecida na tabela abaixo. prioridade operadores 1 NOT 2 * , / , DIV , MOD , AND 3 + , - , OR 4 = , <> , < , > , <= , >= Obs: Quando aparecem dois operadores de mesma prioridade, o compilador irá avaliar sempre da esquerda para a direita. Para fixar uma ordem de execução diferente da prioridade da tabela acima , vários níveis de parênteses podem ser utilizados. Por exemplo: (a>b) AND (a>c) 11.4. Estrutura Geral de um Programa Pascal Um programa Pascal apresenta a seguinte estrutura geral: PROGRAM nome_do_programa; declarações BEGIN comandos e estruturas END. 11.5. Declaração de Variáveis Todas as variáveis utilizadas no programa devem ser declaradas, isto é, definidas de que tipo de dados é: inteiro, real, string, etc. As variáveis são declaradas após a palavra VAR, da seguinte forma: lista de variáveis (separadas por vírgula): tipo de dados; Exemplos: VAR X, Y, Z: integer; media, porcentagem: real; nome: string; Instituto de Química – UNESP – Araraquara 26 Introdução à Computação 11.6. Comando de Atribuição O comando de atribuição serve para atribuir à uma variável, um valor, uma expressão, ou o valor (conteúdo) de uma outra variável. variável := expressão; Exemplos: X := 1; media := (X + Y)/2; A := B; A:= ‘B’; mensagem := 'bom dia'; 11.7. Comando de Entrada O comando de entrada serve para o programa receber valores externos, digitados pelo usuário, e armazenar em variáveis. READLN(lista de variáveis); Exemplos: READLN(X); READLN(A,B,C); READLN(aluno, nota); O comando READLN lê os valores das variáveis da lista e pula para a próxima linha, de modo que o próximo comando de entrada (READLN) recebe o primeiro valor da linha seguinte. 11.8. Comando de Saída O comando de saída serve para mostrar os dados na tela ou na impressora. WRITE(lista de variáveis, constantes ou expressões); WRITELN(lista de variáveis, constantes ou expressões); Exemplos: WRITE(n); WRITE('MEDIA = ',soma/n); WRITELN(nome,' ',idade,' anos'); A diferença entre estes dois comandos de saída é que o WRITE escreve os valores da lista e deixa que o próximo comando de saída (WRITE ou WRITELN) continue escrevendo na mesma linha, enquanto que o comando WRITELN escreve os valores da lista e muda de linha, de modo que o próximo comando de saída escreva na linha seguinte. 11.9. Formatação A formatação serve para formatar os dados de saída na tela ou na impressora. WRITE(X:m:n); WRITELN(X:m:n); onde: X é o valor a ser escrito podendo ser do tipo real, inteiro, string, etc. m é um número inteiro que indica o número mínimo de caracteres que serão utilizados para escrever o valor de X. n só deve ser utilizado se X for do tipo real, e especifica o número de casas decimais desejado. Instituto de Química – UNESP – Araraquara 27 Introdução à Computação Obs. Caso m seja insuficiente para representar o valor de X, então será alocado número de caracteres necessário para representá-lo. Caso m seja excessivo, o espaço excedente será preenchido com brancos antes do valor de X. Suponhamos que N := 13.58; WRITE(N) WRITE(N:7:2) WRITE(N:5:2) WRITE(N:5:1) WRITE(N:4:0) WRITE(N:0:1) WRITE(N:0:0) 1.3580000000E+01 13.58 13.58 13.6 14 13.6 14 Suponhamos que NOME := 'PAULO' WRITE(NOME) WRITE(NOME:8) PAULO PAULO 11.10. Estruturas Sequenciais São sequências de comandos de atribuição, comandos de entrada ou de saída. Exemplo 11.1. Programa para ler o consumo mensal de energia elétrica em kWh e imprimir o valor da conta de energia, supondo que 1 kWh custa R$ 3,00 e não há imposto nenhum envolvido no cálculo da conta. Program Energia_Eletrica; Var consumo: integer; conta: real; Begin readln(consumo); conta:= consumo*3.00; writeln('Valor da conta = R$ ', conta:0:2); readln; End. 11.11. Estruturas Condicionais 11.11.1. Estrutura Condicional Simples A estrutura condicional simples permite executar um comando (ou bloco de comandos) quando uma condição for verdadeira. Uma condição é uma comparação que pode ser verdadeira ou falsa. No trecho abaixo, se a condição1 for verdadeira, o comando1 será executado. IF condição1 THEN comando1; Exemplo 11.2. Instituto de Química – UNESP – Araraquara 28 Introdução à Computação Programa para ler a idade e imprimir a mensagem Menor de idade, caso a idade seja inferior a 18 anos. Program Menor_de_idade; Var idade: integer; Begin readln(idade); if idade < 18 then writeln('Menor de idade'); readln; End. Quando você deseja que mais que um comando sejam executados caso uma condição seja verdadeira, você deve utilizar Begin e End para delimitar os comandos que serão executados. No trecho a seguir, se a condição1 for verdadeira, então o comando1 e o comando2 serão executados. O comando3 será executado independentemente da condição1, porque ela está depois do End, e portanto fora da estrutura condicional. IF condição1 THEN Begin comando1; comando2; End; comando3; Abaixo, se a condição1 for verdadeira, o comando1 será executado. O comando2 e o comando3 sempre serão executados, independentemente da condição1. Isto é devido ao fato que não há a palavra Begin logo após a palavra THEN. Desta forma, o compilador interpretará que somente o comando1 faz parte da estrutura condicional e os demais comandos estão fora da estrutura condicional. Portanto, o comando2 e o comando3 serão executados independentemente da condição1, ou seja, sempre serão executados. IF condição1 THEN comando1; comando2; comando3; Exemplo 11.3. Programa para ler o raio e caso o raio lido seja positivo, calcular e imprimir a área do círculo. Program Area_do_Circulo; Var raio, area: real; Begin readln(raio); if raio > 0 then Begin area:= pi*sqr(raio); writeln('Area do circulo = ', area); End; readln; End. Instituto de Química – UNESP – Araraquara 29 Introdução à Computação 11.11.2. Estrutura Condicional Composta A estrutura condicional composta permite executar um comando (ou bloco de comandos) quando uma condição for verdadeira e outro comando (ou bloco de comandos) quando a condição for falsa. No trecho abaixo, caso a condição1 seja verdadeira, o comando1 será executado e caso contrário, isto é, se a condição1 for falsa, o comando2 será executado. IF condição1 THEN comando1 ELSE comando2; No trecho abaixo, caso a condição1 seja verdadeira, o comando1 será executado e caso contrário, o comando2 e comando3 serão executados. IF condição1 THEN comando1 ELSE Begin comando2; comando3; End; Exemplo 11.4. Programa para ler a nota da prova e do trabalho, e imprimir Reprovado, caso a nota da prova ou do trabalho seja menor do que 5 e caso contrário, imprimir Aprovado e a média dada pela fórmula: 4 P+ T M= . 5 Program Notas; Var prova, trabalho, media: real; Begin readln(prova, trabalho); if (prova < 5) or (trabalho < 5) then writeln(‘Reprovado’) else Begin writeln(‘Aprovado’); media:= (4*prova + trabalho)/5; writeln(‘Media = ‘, media); End; readln; End. 11.12. Estruturas de Repetição 11.12.1. Estrutura de Repetição WHILE (Enquanto) Esta estrutura de repetição permite que um comando (ou uma sequência de comandos) seja(m) repetido(s) enquanto uma condição for verdadeira. O teste da condição fica no início da repetição e portanto, existe a possibilidade da repetição não ser executada nenhuma vez, caso a condição assuma valor falso na primeira verificação. Instituto de Química – UNESP – Araraquara 30 Introdução à Computação No trecho abaixo, somente o comando1 será repetido enquanto a condição for verdadeira. O comando2 e o comando3 só serão executados uma vez, após terminar a repetição, isto é, após a condição assumir valor falso. WHILE condição DO comando1; comando2; comando3; Caso você queira que os 3 comandos (comando1, comando2 e comando3) sejam repetidos, você deve delimitá-los com as palavras Begin e End. No trecho a seguir, os comandos 1, 2 e 3 serão repetidos enquanto a condição for verdadeira e o comando4 só será executado após a condição tornar-se falsa. WHILE condição DO Begin comando1; comando2; comando3; End; comando4; Exemplo 11.5. Programa para imprimir a soma dos números pares positivos menores que 50. Program Soma_Pares; Var N, S: integer; Begin N:= 2; S:= 0; While N < 50 do Begin S:= S + N; N:= N + 2; End; writeln(‘Soma = ‘, S); readln; End. 11.12.2. Estrutura de Repetição REPEAT (Repita) Esta estrutura de repetição faz o teste da condição no final da repetição. Portanto, os comandos são repetidos até que uma condição seja satisfeita. Assim, quando a condição for verdadeira, a repetição é terminada e o comando situado abaixo da repetição é executado. Neste tipo de estrutura de repetição, os comandos delimitados pelas palavras REPEAT e UNTIL serão executados pelo menos uma vez. No trecho abaixo, os comandos 1, 2 e 3 serão repetidos até que a condição seja satisfeita. Quando a condição for satisfeita (verdadeira), o comando4 será executado. Instituto de Química – UNESP – Araraquara 31 Introdução à Computação REPEAT comando1; comando2; comando3; UNTIL condição; comando4; Exemplo 11.6. Programa para imprimir a soma dos números pares positivos menores que 50, análogo ao do exemplo anterior, porém usando a estrutura REPEAT. Program Soma_Pares; Var N, S: integer; Begin N:= 2; S:= 0; Repeat S:= S + N; N:= N + 2; Until N >= 50; writeln(‘Soma = ‘, S); readln; End. 11.12.3. Estrutura de Repetição FOR (Para) Esta estrutura de repetição só pode ser usada quando se conhece o valor inicial e o valor final que a variável (que controla a repetição) deve assumir. A variável muda de valor, do valor inicial até o valor final, de 1 em 1, incrementando automaticamente. Portanto, o valor inicial deve ser menor do que o valor final. FOR variável := valor inicial TO valor final DO BEGIN comando1; comando2; END; Exemplo 11.7. Programa para imprimir a soma dos números inteiros entre 20 e 40 (inclusive os extremos). Program Soma_inteiros; Var N, S: integer; Begin S:= 0; For N:= 20 to 40 do S:= S + N; writeln(‘Soma = ‘, S); readln; End. Quando é utilizado DOWNTO ao invés de TO, a variável, que controla a repetição, é decrementada automaticamente de 1 em 1. Neste caso, o valor inicial deve ser maior do que o valor final. Instituto de Química – UNESP – Araraquara 32 Introdução à Computação FOR variável := valor inicial DOWNTO valor final DO BEGIN comando1; comando2; END; Exemplo 11.8. Programa para imprimir a soma dos números inteiros entre 20 e 40 (inclusive os extremos), análogo ao do exemplo anterior, porém usando a estrutura de repetição FOR DOWNTO DO. Program Soma_inteiros; Var N, S: integer; Begin S:= 0; For N:= 40 downto 20 do S:= S + N; writeln(‘Soma = ‘, S); readln; End. 11.13. Declaração de Constantes Constantes são valores fixos que não são alterados durante a execução do programa. Podem ser associados identificadores (nomes) às constantes, e neste caso, as constantes devem ser declaradas antes das variáveis. Exemplo de declaração: CONST e = 2.718281828459; N = 50; salario = 800.00; Observação: Na declaração de constantes deve ser utilizado o sinal = (igual) e não : (dois pontos) como no caso de declaração de variáveis. 11.14. Comentários Os comentários são colocados nos programas para aumentar a clareza e são ignorados pelo compilador. Os comentários devem ser colocados entre chaves ou entre parênteses e asterisco. Exemplo: { Este é um exemplo de comentário } (* Este também é um exemplo de comentário *) 11.15. Estruturas de Dados Variável estruturada é um conjunto de dados, referenciável por um único identificador (nome). 11.15.1. Variáveis Compostas Homogêneas As variáveis compostas homogêneas são conjuntos de dados do mesmo tipo e podem ser unidimensionais ou multidimensionais. Essas variáveis são chamadas de Arrays. Instituto de Química – UNESP – Araraquara 33 Introdução à Computação 11.15.1.1. Variáveis Compostas Homogêneas Unidimensionais Variáveis Compostas Homogêneas Unidimensionais ou Vetores são variáveis capazes de armazenar vários elementos do mesmo tipo e necessitam de apenas 1 índice para individualizar um elemento do conjunto. Exemplo de declaração: VAR X: ARRAY[0..10] of integer; condutividade: ARRAY[-100..100] of real; nome: ARRAY[1..50] of string; nome nome[1] Ana nome[2] Denise nome[3] Milton ... nome[50] Tania Exemplo 11.9. Programa para ler 5 nomes e armazenar em um vetor e depois imprimir o conteúdo do vetor. Program Vetor; Const N=5; Var nome: array[1..N] of string; i: integer; Begin For i:= 1 to N do readln(nome[i]); For i:= 1 to N do writeln(nome[i]); readln; End. 11.15.1.2. Variáveis Compostas Homogêneas Bidimensionais Variáveis Compostas Homogêneas Bidimensionais são variáveis capazes de armazenar vários elementos do mesmo tipo e necessitam de 2 índices para individualização de um elemento. Essas variáveis são chamadas também de Matrizes. Exemplo de declaração: VAR tabela: ARRAY[1..5,1..3] of real; escaninho: ARRAY[1..8,1..8] of string; matriz: ARRAY[1..3,1..3] of integer; matriz[1,1] matriz[1,2] 6 -1 0 matriz 2 8 14 -5 9 7 matriz[1,3] matriz[2,3] matriz[3,3] matriz[3,1] matriz[3,2] Instituto de Química – UNESP – Araraquara 34 Introdução à Computação Exemplo 11.10. Programa para ler 12 números e armazenar em uma matriz 3x4 e depois imprimir os elementos desta matriz. Program Matriz; Var M: array[1..3,1..4] of integer; i,j: integer; Begin For i:= 1 to 3 do For j:= 1 to 4 do readln(M[i,j]); For i:= 1 to 3 do begin For j:= 1 to 4 do write(M[i,j]:6); writeln; end; Readln; End. Instituto de Química – UNESP – Araraquara 35 Introdução à Computação 12. Exercícios abaixo: 1. Considere os valores das variáveis a seguir e determine o resultado das expressões lógicas A 2 B -3 C 1.5 ano 1996 objeto ‘livro’ fim verdadeiro a) objeto = ‘computador’ ou A+B/A = C/B b) 3*A+B >= 2*C e ano = 2005 c) TRUNC(C) <= ABS(A+B) ou 8*C MOD 5 = A e SQR(B) > -A*B*C d) não(fim) ou ROUND(C) <= 2*A e) objeto = ‘livro’ e ABS(B+C) <> C f) SQRT(2*A-A*B*C+2*C) = 2-B e ano <> 2000 2. Determine os valores das variáveis numéricas X, Y e Z após a execução dos comandos abaixo: X 31 MOD 4 Y ROUND(4.5) Z TRUNC(2.6) -2*X X SQRT(X*Y-2*Z+2) + Z Y ROUND(ABS(Z) + Y/2) Z X + 3*Z MOD 8 3. Em quais dos seguintes pares é importante a ordem dos comandos? Isto é, em quais pares quando se muda a ordem dos comandos os resultados finais se alteram? a) A C BD b) B A CB c) B A BC d) A B BA 4. Baseado nos valores de entrada L1 e L2, que constituem a base e a altura de um triângulo, o que significa o valor de saída X? início L1, L2 X L1*L2/2 X fim 5. Elabore um fluxograma para ler uma temperatura dada na escala Celsius (C) e imprimir a equivalente temperatura em Fahrenheit (F). 9 F= C+32 5 Instituto de Química – UNESP – Araraquara 36 Introdução à Computação 6. Elabore um fluxograma para ler o raio (R) de um círculo e imprimir a sua área. Sabe-se que: Área = R2. 7. Elabore um fluxograma para ler a idade de um aluno e imprimir uma mensagem dizendo se ele é menor de idade ou maior de idade. 8. Elabore um fluxograma para ler um número e imprimir uma mensagem dizendo se o número lido é par ou ímpar. 9. Elabore um fluxograma para ler um número e imprimir uma mensagem dizendo se o número é positivo, negativo ou nulo. 10. Dado o seguinte fluxograma: início V V V F condição2 comando1 F condição1 comando2 condição3 F comando4 comando5 comando3 fim Responda : a) Se condição1 = V, condição2 = V e condição3 = F, quais os comandos executados ? b) Se condição1 = F, condição2 = V e condição3 = V, quais os comandos executados ? c) Se condição1 = V, condição2 = F e condição3 = F, quais os comandos executados ? d) Quais os valores de condição1, condição2 e condição3 para que nenhum comando seja executado ? 11. Elabore um fluxograma para ler um número e imprimir uma mensagem dizendo se o número lido é inteiro ou se o número tem a parte decimal. 12. Elabore um fluxograma para ler um ano e imprimir uma mensagem dizendo se o ano lido é bissexto ou não. Utilize a seguinte regra: Um ano é bissexto se: - é divisível por 4 e não é divisível por 100, ou - é divisível por 400. Exemplos: 2008 é bissexto porque 2008 é divisível por 4 e não é divisível por 100. 2000 é bissexto porque é divisível por 400. 1900 não é bissexto porque apesar de ser divisível por 4, é também divisível por 100, e por outro lado, não é divisível por 400. Instituto de Química – UNESP – Araraquara 37 Introdução à Computação 13. Elabore um fluxograma para ler os valores dos coeficientes a, b, e c de uma equação do segundo grau, e imprimir a única raiz real, ou as duas raízes reais, ou uma mensagem dizendo que as raízes são complexas. 14. Elabore um fluxograma para ler 3 números e imprimir o maior deles. 15. Uma empresa está dando um reajuste aos seus funcionários de acordo com o seguinte critério: 25% para os funcionários que recebem até R$ 500,00 (inclusive); 20% para os funcionários que recebem entre R$ 500,01 e R$ 1.000,00 (inclusive); 15% para os funcionários que recebem acima de R$ 1.000,00. Elabore um fluxograma para ler o salário de um funcionário e imprimir o seu salário reajustado. 16. O que faz o seguinte fluxograma ? início N1 N <= 15 F V N N N+2 fim 17. Elabore um fluxograma para imprimir os números pares positivos menores que 100. 18. O que será impresso ao final de cada um dos seguintes fluxogramas ? Instituto de Química – UNESP – Araraquara 38 Introdução à Computação a) b) início início X0 Y0 X0 Y0 X<2 F X >= 0 X X+1 Y Y+2 V X X+1 Y Y+2 Y Y fim fim V c) F F d) início início X0 Y0 X0 Y0 X X+1 Y Y+2 X X+1 Y Y+2 F X<2 X=3 V V Y Y fim fim 19. Elabore um fluxograma para imprimir os 10 primeiros números positivos múltiplos de 6. 20. Elabore um fluxograma para imprimir N termos de uma Progressão Aritmética (PA) de elemento inicial a e razão r. Os valores de N, a e r devem ser lidos inicialmente. 21. Elabore um fluxograma para ler a idade de 500 vestibulandos e imprimir quantos desses vestibulandos são menores de idade. Instituto de Química – UNESP – Araraquara 39 Introdução à Computação 22. Elabore um fluxograma para calcular e imprimir a soma dos números entre 1 e 10 inclusive. 23. Elabore um fluxograma para calcular e imprimir a soma dos números inteiros positivos ímpares inferiores ou iguais a um número N (positivo) lido inicialmente. 24. Elabore um fluxograma para calcular e imprimir o produto dos números inteiros entre 1 e 15 (inclusive). 25. Elabore um fluxograma para ler um número e calcular e imprimir o fatorial deste número. 26. Elabore um fluxograma para ler o saldo de 1500 clientes de uma agência bancária, e imprimir: a) o saldo médio desses clientes; b) a porcentagem de clientes com saldo devedor. 27. Elabore um fluxograma para ler 2 números e imprimir o Máximo Divisor Comum (MDC) entre esses números. Exemplo: MDC entre 15 e 54 é 3 pois: Quociente = 3 54 15 Resto = 9 1 9 6 1 6 3 2 3 0 MDC 28. Elabore um fluxograma para ler o nome e a nota de 70 alunos e imprimir: a) quantos alunos foram reprovados (nota inferior a 5,0). b) a maior nota e o nome do(a) aluno(a) que obteve essa nota. 29. Elabore um fluxograma para ler o nome, a idade e o sexo de 50 funcionários de uma empresa, e imprimir: a) a idade média dos funcionários do sexo masculino; b) a porcentagem de funcionários do sexo feminino, com idade superior a 30 anos; c) a menor idade e o nome do(a) funcionário(a) que possui essa idade. 30. Elabore um fluxograma para ler o saldo de 800 clientes de uma agência bancária e imprimir: a) a porcentagem de clientes com saldo devedor; b) o maior e o menor saldo. 31. Elabore um programa em Pascal para ler 2 números e calcular e imprimir a média aritmética destes números. 32. Elabore um programa em Pascal para ler a medida da base e da altura de um triângulo e imprimir a área deste triângulo. 33. Um marceneiro precisa cortar vários pedaços de madeira de comprimento = 45 cm cada um. Elabore um programa em Pascal para ler o comprimento da tábua (em metros) e imprimir a quantidade de pedaços e a sobra (em centímetros). Exemplo: Caso o comprimento da tábua seja 5 m, a quantidade de pedaços será 11 e a sobra será de 5 cm. 34. Uma entidade filantrópica faz sorteios cujos bilhetes contém números de 3 dígitos. O sorteio é baseado no primeiro prêmio da loteria federal, sendo o número sorteado formado pelos três últimos dígitos do primeiro prêmio na ordem inversa. Por exemplo, se o primeiro prêmio for 51782, o número sorteado será 287. Elabore um programa em Pascal para ler o número do primeiro prêmio da loteria federal (de 5 dígitos) e imprimir o número sorteado. Instituto de Química – UNESP – Araraquara 40 Introdução à Computação 35. Elabore um programa em Pascal para ler a nota de um aluno e imprimir uma mensagem dizendo se ele foi aprovado (nota 5,0) ou reprovado. 36. Elabore um programa em Pascal para ler 2 números, e escrever se o primeiro número é maior, menor ou igual ao segundo. 37. Elabore um programa em Pascal para ler o salário de um funcionário e imprimir o percentual de reajuste e o salário reajustado de acordo com a seguinte tabela: Salário até R$ 1.000,00 Reajuste 15% acima de R$ 1.000,00 até R$ 2.000,00 12,5% acima de R$ 2.000,00 10% 38. Um casal divide as despesas domésticas mensalmente. Durante o mês, cada um anota as despesas que paga e no final eles dividem a despesa total ao meio. Elabore um programa em Pascal para ler as despesas pagas por cada um e imprimir quem deve a quem e o valor da dívida. Lembre que pode acontecer de nenhum precisar pagar para o outro, caso já tenham pago exatamente a metade das despesas. Exemplo: ITEM Despesas Pagas Valor Devido Diferença MARIDO 2000,00 1700,00 300,00 ESPOSA 1400,00 1700,00 -300,00 TOTAL 3400,00 No exemplo acima, o programa deve imprimir a seguinte mensagem: A esposa deve pagar R$ 300,00 ao marido. 39. Elabore um programa em Pascal para ler os lados de um triângulo e testar inicialmente se é possível formar um triângulo. Caso seja possível formar um triângulo, o programa deve imprimir uma mensagem informando o tipo de triângulo formado: equilátero, isósceles ou escaleno. Caso contrário, o programa deve imprimir uma mensagem informando que não é possível formar um triângulo. 40. Um supermercado está dando descontos no valor das compras, segundo a tabela abaixo: Valor da compra Desconto até R$ 50,00 0% de R$ 50,01 a R$ 100,00 10% acima de R$ 100,00 15% Elabore um programa em Pascal para ler o valor da compra de 80 clientes e imprimir para cada cliente o valor a pagar com o desconto. 41. O que vai ser impresso no final de cada trecho do programa em Pascal abaixo: a) A := 0; B := 0; While A < 3 do B := B + 2; A := A + 1; writeln(A); b) A := 0; B := 0; While A < 2 do begin B := B + 2; A := A + 1; end; writeln(B); Instituto de Química – UNESP – Araraquara 41 Introdução à Computação c) A := 0; B := 0; Repeat A := A + 1; B := B + 2; until A > 2; writeln(B); d) A := 0; B := 0; Repeat A := A + 1; B := B + 2; until A < 3; writeln(B); e) B := 0; For A := 1 to 3 do B := B + 2; writeln(B); f) B := 0; For A := 4 downto 1 do B := B + 2; writeln(B); 42. Um atleta faz flexões em série, com quantidades crescentes: na primeira série faz 1 flexão, na segunda série faz 2 flexões, na terceira série faz 3 flexões e assim por diante. Ao final de algumas séries, ele quer saber a quantidade total de flexões que fez. Por exemplo, se ele fez 5 séries, fez ao todo 15 flexões (1+2+3+4+5). Elabore um programa em Pascal para ler o número de séries e imprimir o total de flexões. 43. Elabore um programa em Pascal para ler um número e calcular o fatorial deste número, usando a estrutura FOR DOWNTO DO. 44. Elabore um programa em Pascal para ler o nome, a nota da primeira prova (P1) e a nota da segunda prova (P2) de 50 alunos. O programa deve imprimir: a) a média (M) de cada aluno, onde M = 3P1 + 5P 2 ; 8 b) a porcentagem de alunos aprovados (M 5,0); c) a maior média e o nome do(a) aluno(a) que obteve essa média. 45. O que faz o seguinte programa em Pascal ? Program Exercicio45; var N, S : integer; begin S:= 0; writeln(´Digite um numero inteiro.´); readln(N); While N <> 0 do begin if (N>0) and (N mod 2 = 0) then S:= S + N ; writeln(´Digite outro numero inteiro, ou digite 0 para terminar.´); readln(N); end; writeln(S); readln; end. 46. Elabore um programa em Pascal para ler o nome e o preço de um número indeterminado de mercadorias, sendo o fim de dados identificado pelo nome = FIM. O programa deve imprimir: a) o preço médio dessas mercadorias; b) o maior preço e o nome da mercadoria de maior preço. Instituto de Química – UNESP – Araraquara 42 Introdução à Computação 47. Elabore um programa em Pascal para ler o nome, o sexo e o salário de um número indeterminado de funcionários de uma loja, sendo o fim de dados identificado pelo nome = FIM. O programa deve imprimir: a) o salário médio dos homens e o salário médio das mulheres; b) a porcentagem de funcionários do sexo masculino; c) o nome do(a) funcionário(a) que recebeu o maior salário, e o respectivo salário. 48. Elabore um programa em Pascal para ler o nome e saldo de um número indeterminado de clientes de um banco, sendo o fim de dados identificado pelo nome = FIM. O programa deve imprimir: a) o saldo médio dos clientes; b) a porcentagem de clientes com saldo devedor; c) o nome do cliente que possui o menor saldo e o respectivo saldo. 49. Elabore um programa em Pascal para ler 3 números (x, y, N) e imprimir os N primeiros números naturais que são múltiplos de x ou de y. Exemplo: caso x=3, y=7 e N=8, o programa deve imprimir: 3 6 7 9 12 14 15 18 50. Elabore um programa em Pascal para ler um número e imprimir uma mensagem dizendo se o número lido é primo ou não. Pode-se supor que o número lido é maior do que 1. Obs. Um número é primo se ele é divisível somente por 1 e por ele mesmo. 51. Elabore um programa em Pascal para imprimir os N primeiros números da Sequência de Fibonacci. O número N (N 2) deve ser lido inicialmente. A Sequência de Fibonacci é definida como tendo o primeiro termo igual a 0, o segundo termo igual a 1 e cada termo seguinte igual a soma dos dois termos imediatamente anteriores. Sequência de Fibonacci: 0 1 1 2 3 5 8 13 21 34 ... 52. Elabore um programa em Pascal para ler 10 números e armazená-los em uma variável composta unidimensional (vetor) e determinar o maior número. 53. Elabore um programa em Pascal para ler as temperaturas máximas registradas nos últimos 30 dias e imprimir: a) a menor temperatura registrada; b) a maior temperatura registrada; c) a temperatura média destes 30 dias; d) o número de dias em que a temperatura foi superior à temperatura média. 54. Um armazém trabalha com 250 mercadorias diferentes identificadas pelos números inteiros de 1 a 250. O dono do armazém possui 3 tabelas, uma com o nome de cada mercadoria, outra com o preço de cada mercadoria, e uma outra tabela com a quantidade de cada mercadoria vendida no mês. Elabore um programa em Pascal para ler o nome, o preço e a quantidade de mercadorias vendidas e armazená-los em variáveis compostas unidimensionais (vetores) denominadas MERCADORIA, PRECO e QUANTIDADE e imprimir: a) os nomes das mercadorias que possuem o maior preço; b) os nomes das mercadorias que não foram vendidas nenhuma unidade; c) o faturamento mensal do armazém. 55. Elabore um programa em Pascal para ler o nome e a nota de 60 alunos e armazenar os nomes dos alunos aprovados (nota 5,0) no vetor denominado APROVADO e os nomes dos alunos reprovados no vetor denominado REPROVADO. No final o programa deve imprimir: a) o número de alunos aprovados; b) a lista dos nomes dos alunos aprovados; c) o número de alunos reprovados; d) a lista dos nomes dos alunos reprovados. Instituto de Química – UNESP – Araraquara 43 Introdução à Computação 56. Elabore um programa em Pascal para ler o nome e o salário de um número indeterminado de funcionários de uma empresa, sendo o fim de dados identificado pelo nome = FIM. O programa deve imprimir: a) o salário médio; b) a porcentagem de funcionários que recebem acima de R$ 5.000,00; c) o maior salário e os nomes dos funcionários que recebem esse salário (usar vetor). 57. Elabore um programa em Pascal para imprimir o signo do zodíaco correspondente a uma data (dia e mês) lida. A tabela abaixo mostra o último dia de cada mês e o signo correspondente. mês 1 2 3 4 5 6 7 8 9 10 11 12 último dia 20 19 20 20 20 20 21 22 22 22 21 21 signo Capricórnio Aquário Peixes Áries Touro Gêmeos Câncer Leão Virgem Libra Escorpião Sagitário Obs: De 22/12 a 31/12 – Capricórnio 58. Elabore um programa em Pascal para ler o número do voo e a quantidade disponível de vagas de 30 voos diários de uma companhia aérea e armazenar em vetores denominados VOO e VAGAS. Em seguida o programa deve ler o número do voo e o número de vagas a reservar neste voo, de um número indeterminado de voos, sendo o fim dos dados identificado pelo número do voo = 0. Para cada número de voo, o programa deve atualizar o vetor VAGAS. No final, o programa deve imprimir todos os números de voos e as respectivas vagas. 13. Bibliografia ASCENCIO, A.F.G.; CAMPOS, E.A.V. Fundamentos da Programação de Computadores. Computadores. 3a ed. Pearson, 2012. 584 p. AVILLANO, I.C. Algoritmos e Pascal. Pascal. 2a ed. Ciência Moderna, 2006. 560 p. FARRER, H. et al. Algoritmos Estruturados. Estruturados. 3a ed. LTC, 1999. 260 p. FARRER, H. Pascal Estruturado. Estruturado. 3a ed. LTC, 1999. 300 p. Instituto de Química – UNESP – Araraquara 44