Baixe o app para aproveitar ainda mais
Prévia do material em texto
. COMPUTAÇÃO BÁSICA E PROGRAMAÇÃO Prof. MSc. Oscar Neves Júnior Capivari de Baixo-SC 2018 2 Sumário Capítulo I ................................................................................................................................. 4 1 Sistema .................................................................................................................................. 4 1.1 Abordagem sociotécnica dos sistemas de informação. ........................................................ 5 1.1.1 Organizações .......................................................................................................................... 5 1.1.2 Pessoas .................................................................................................................................... 6 1.1.3 Tecnologia .............................................................................................................................. 6 1.2 Subsistemas .......................................................................................................................... 6 1.3 Organização versus sistema .................................................................................................. 7 1.4 Características de um sistema de informações? .................................................................. 7 1.5 Fases dos Sistemas de Informação ....................................................................................... 8 Capítulo II ............................................................................................................................. 17 2 Algoritmo e Lógica de Programação ............................................................................... 17 2.1 - Algoritmos Não Computacionais ..................................................................................... 17 2.2 - Algoritmos Computacionais ............................................................................................. 19 2.3 Ferramentas ........................................................................................................................ 19 2.4 Tipos de Algoritmos ........................................................................................................... 20 2.4.1 Descrição Narrativa .............................................................................................................. 20 2.4.3 Pseudocódigo ........................................................................................................................ 20 2.4.2 Fluxograma ........................................................................................................................... 21 ....................................................................................................................................................... 21 2.4.2.1 Símbolos utilizados no Fluxograma .................................................................................. 21 2.5 Forma Geral de um Algoritmo .......................................................................................... 22 2.6 Exercícios de Fixação ......................................................................................................... 22 3 Linguagens de Programação ............................................................................................ 23 3.1 Classificação das Linguagens ............................................................................................. 23 3.1.1 Quanto ao paradigma ............................................................................................................ 23 3.1.2 Quanto a estrutura de tipos ................................................................................................... 23 3.1.3 Quanto ao grau de abstração ................................................................................................. 24 3.1.4 Quanto à geração .................................................................................................................. 24 4 Conceito de Variável ......................................................................................................... 24 4.1 Tipos de Variáveis .............................................................................................................. 25 4.2 Formação de Identificadores .............................................................................................. 26 4.3 Estrutura Sequencial ........................................................................................................... 27 4.4 Operadores Lógicos ............................................................................................................ 31 Atualizada em fevereiro de 2016 3 5 Comandos de E/S (Entrada/Saída) .................................................................................. 31 5.1 - Construindo os Primeiros Algoritmos: Estruturas sequenciais ........................................ 32 5.2 Exercícios ................................................................................................................................ 34 6 - Estrutura Condicional (IF) ............................................................................................. 35 Exercícios Propostos ............................................................................................................. 36 7 Escolha...Caso (Case) ........................................................................................................ 37 7.1 Exercícios Propostos .......................................................................................................... 38 8 - Testando o Algoritmo (Teste de Mesa) .......................................................................... 39 9 - Estrutura de Repetição ................................................................................................... 40 9.1 Comando para. . faca (For) ................................................................................................ 41 9.1.1 Exercícios Propostos ............................................................................................................ 42 9.2 - Comando repita. . .Ate (Repeat) ....................................................................................... 42 9.2.1 Exercícios Propostos ............................................................................................................ 44 9.3 Comando Enquanto. . faca (While) ................................................................................... 45 9.3.1 Exercícios Propostos ............................................................................................................ 45 10 Variáveis Compostas Homogêneas (Array) .................................................................. 46 10.1 Variáveis Indexadas Unidimensionais (Vetores) ............................................................. 46 10.1.1 Exercícios Propostos .......................................................................................................... 47 10.2 Variáveis Indexadas Bidimensionais (Matrizes) .............................................................. 47 10.2.1 Exercícios Propostos .......................................................................................................... 48 11 - Subalgoritmos ................................................................................................................ 49 12 Biblioteca de Funções ...................................................................................................... 49 13 Função (Function) ........................................................................................................... 51 14 Procedimento (Sub_rotinas)Procedures ....................................................................... 52 14.1 Exercícios Propostos ........................................................................................................ 53 15 ARDUINO ........................................................................................................................ 53 15 Referências Bibliográficas .............................................................................................. 56 4 Capítulo I 1 Sistema A teoria geral dos sistemas foi formulada pelo biólogo alemão Ludwig Von Bertalanffy no início da década de 1930, mas foi publicada apenas em 1968. A partir de sua formulação, diversos outros autores desenvolveram o tema e a Teoria dos Sistemas é hoje uma formulação teórica que atende às mais diversas ciências. Veja como ele definiu sistema: Um sistema pode ser definido como um complexo de elementos em interação. Veja aqui alguns conceitos de Sistemas, quadro 1: Autor Definição O´Brien (1995) Sistema é um conjunto de partes coordenadas, que concorrem para a realização de um conjunto de objetivos. Foina (2007) Sistema é um conjunto de elementos interdependentes, ou um todo organizado, ou partes que interagem formando um todo unitário e complexo Rezende (2002) Sistema é um conjunto de componentes e processos que visam transformar determinadas entradas em saídas Nunes (2009) Assim, um SI pode ser definido como um conjunto de elementos, relacionados entre si, atuando num determinado ambiente com o fim de alcançar objetivos comuns e, com capacidade de autocontrole. Oliveira (2002) Sistema é um conjunto de partes interagentes e interdependentes que, conjuntamente, formam um todo unitário com determinado objetivo e efetuam determinada função”. A formação de um sistema se dá pela união de diversas partes interdependentes que conjuntamente visam atingir um objetivo comum. Batista (2004) Disposição das partes de um todo que, de maneira coordenada, formam a estrutura organizada, com a finalidade de executar uma ou mais atividades ou, ainda, um conjunto de eventos que repetem ciclicamente na realização de tarefas predefinidas. Quadro 1: Principais conceitos de SI Fonte: Elaborado pelo autor Esses conceitos são bastante abrangentes e podem ser aplicados a inúmeras situações do mundo real. São úteis e genéricos o bastante para definir sistemas orgânicos, sociais, econômicos, políticos, matemáticos, físicos e outros. Assim, pode-se chamar tanto um organismo vivo, como uma fábrica, um modelo matemático ou um programa de computador de sistema, afinal todos são compostos por diferentes elementos que interagem entre si e geram algum tipo de resultado. Esses elementos e a relação que se estabelece entre eles que determina como o sistema funciona. Observe ... ... o quanto à palavra sistema é utilizada em nosso linguajar cotidiano. Preste atenção em jornais, revistas, documentos e também na linguagem falada como essa palavra é de uso freqüente. Veja algumas aplicações: sistema solar, sistema viário, sistema de busca na internet, eco-sistema, sistema de vigilância, sistema social, sistema imunológico, sistema econômico, etc. Atualizada em fevereiro de 2016 5 Exemplo: Processo de assar um bolo. As entradas são: farinha, ovos, açúcar e manteiga. Tempo e energia também podem ser considerados como entradas do sistema. O mecanismo de processamento consiste em combinar os ingredientes em uma vasilha de modo a se obter a mistura correta para que se possa assá-la na temperatura adequada e no tempo certo. A saída será um bolo acabado. A realimentação é a constatação de um bolo doce demais, muito mole, sem gosto ou cru. Isso provocará uma nova entrada no sistema de modo a alterar sua receita inicial. 1.1 Abordagem sociotécnica dos sistemas de informação. No passado, quando os computadores começaram a ser utilizados para dar suporte a sistemas de informação, a abordagem de sistemas era essencialmente técnica. Era essa uma época em que o indivíduo deveria adaptar-se ao que a máquina era capaz de fazer. A principal preocupação dos profissionais de tecnologia estava em como programar computadores de modo a levá-los a processar dados e informações. Ao usuário restava a oportunidade de poder usar o que o computador era capaz de oferecer. Hoje, essa perspectiva, apesar de importante, é insuficiente para que se possa garantir que o sistema seja bem-sucedido. Um sistema de informações é um produto de três componentes: tecnologia, organizações e pessoas. Essa visão mais abrangente dos sistemas de informação é conhecida como abordagem sociotécnica, figura 4. Figura 4: Componentes de sistemas de informações Fonte: Elaborado pelo autor 1.1.1 Organizações As organizações podem ser vistas como uma grande coleção de processos operacionais e administrativos. Os processos operacionais são aqueles que criam, produzem e entregam os bens e serviços que são consumidos pelo mercado, enquanto os processos administrativos são responsáveis pelo planejamento e controle da condução dos negócios. Esses processos seguem uma série de procedimentos que podem estar formalizados e escritos, ou compor práticas de trabalho informais. Muitos desses procedimentos organizacionais são incorporados aos sistemas de informação, como por exemplo, pagar um fornecedor ou corrigir uma fatura errada. Pense em uma organização governamental, em uma pequena indústria ou uma grande rede de lojas, e você visualizará sistemas de informações muito diferentes entre si. 6 1.1.2 Pessoas As pessoas são os usuários efetivos, que usam as informações de um sistema para executar seu trabalho. São as pessoas que possibilitam as entradas no sistema, utilizam suas saídas, enfim, tornam o sistema produtivo. Nesse contexto, esses indivíduos devem ser preparados para realizar suas tarefas e usar eficientemente os sistemas de informação. A atitude das pessoas perante as organizações podem afetar profundamente o seu desempenho no uso dos sistemas de informação. Indivíduos desmotivados, sem capacitação ou ainda inseridos em um ambiente em que não têm clareza sobre o que se espera de seu trabalho provavelmente não serão usuários produtivos de um sistema de informações. Condições adequadas, conforto, um ambiente saudável de trabalho, representam forte suporte para a moral, a produtividade e a receptividade dos indivíduos aos sistemas de informação. Deve-se portanto, ter a preocupação de construir sistemas adequados às necessidades daqueles que os utilizam, e não o contrário. 1.1.3 Tecnologia A tecnologia é o meio pelo qual os sistemas de informação podem ser implementados. Deve ser vista como ferramenta e não ter um fim em si mesma. A tecnologia envolve o computador propriamente dito e demais equipamentos (hardware), os programas de computadores (software), as tecnologias de armazenamento para organizar e armazenar os dados (bancos de dados) e os recursos de telecomunicações que interconectam os computadores em rede. Para refletir Observe este depoimento... ”Eu não quero usar um computador. Eu não quero fazer processamento de texto. O que eu quero é escrever uma carta, olhar a previsão do tempo, pagar uma conta ou jogar um game”. (Donald Norman, no livro The invisible computer). O que essa frase revela? Qual sua relação com a abordagem sociotécnica? Para finalizar esta seção lembramos que o estudo de sistemas de informação deve sempre contemplar as três diferentes perspectivas sugeridas pela abordagem sociotécnica: organizações, pessoas e tecnologias. Dessa forma haverá melhores condições para garantir o sucesso dos sistemas de informaçãonas organizações. 1.2 Subsistemas Sim, um sistema pode ser dividido em subsistemas. Cada subsistema possui seus elementos, e pode ser decomposto até o nível desejado de detalhamento. Um sistema pode compor-se, sucessivamente, de subsistemas que se relacionam entre si, compondo um sistema maior. No exemplo do bolo, podemos considerar como um subsistema a etapa inicial de mistura dos ingredientes antes mesmo de assá-los, nesse caso a saída desse subsistema é a massa ainda crua. A etapa seguinte pode ser considerada outro subsistema, que consiste exclusivamente em assar o bolo, tendo como entrada a massa crua. Essa visão de sistemas e subsistemas contribui para que sistemas grandes possam ser melhor compreendidos quando seus subsistemas forem estudados separadamente. Por exemplo, para entender o funcionamento do corpo humano (um sistema orgânico) pode ser primeiro conveniente compreender profundamente o funcionamento da célula (um subsistema) e depois compreender sua relação com as outras partes do sistema (órgãos e estruturas), quadro 2. Atualizada em fevereiro de 2016 7 Quadro 2: Composição dos Sistemas de Informação Fonte: Elaborado pelo autor É importante frisar que por mais que possamos fragmentar sistemas em subsistemas, não se deve perder a visão do sistema como um todo. Um sistema não é a soma de partes, mas sim o resultado da interação entre elas. Os profissionais que lidam com sistemas de informações, sejam eles usuários ou projetistas de sistemas, com freqüência precisam definir sistemas e seus subsistemas de modo a transformar problemas complexos em problemas de menor complexidade, mais fáceis de serem solucionados. Assim já dizia o general romano Júlio César: dividir para conquistar! 1.3 Organização versus sistema Uma organização é uma estrutura social formal e estável, que emprega recursos do ambiente e os processa para produzir saídas. Toda organização tem como entradas: capital, trabalho e insumos para a transformação (processamento) em produtos ou serviços (saídas), que serão consumidos por agentes externos encontrados no ambiente em que essa se insere. Observe que essa definição de organização a caracteriza como um sistema. Essa é, portanto, uma visão sistêmica de organização. Por conseqüência, podemos considerar um departamento como um subsistema. Todo sistema deve ter um objetivo. Os subsistemas, por sua vez, têm também objetivos que contribuem para o objetivo maior do sistema em que estão inseridos. Veja o quadro 3 com exemplos de sistemas organizacionais. SISTEMA OBJETIVO ENTRADA PROCES. SAÍDA Fábrica de bicicleta Fabricar e comercializar bicicletas de melhor qualidade. Armação. Componentes. Trabalho. Suprimentos. Solda. Pintura. Montagem. Bicicletas acabadas. Universidade Aquisição e desenvolvimento de conhecimento. Estudantes. Professores. Administradores Livros. Equipamentos. Ensino. Pesquisa. Serviços. Estudantes cultos. Pesquisa significativa. Serviços à comunidade. Quadro 3: Exemplos de Sistemas Organizacionais Fonte: Elaborado pelo autor 1.4 Características de um sistema de informações? Enfim chegamos à definição dos sistemas de informação (SI). Leia atentamente as duas definições a seguir: 8 Baseado nos diversos conceitos apresentados no quadro 1 sobre Sistemas, podemos afirmar que Sistema de Informação é um conjunto de componentes inter-relacionados, desenvolvidos para coletar, processar, armazenar e distribuir informação para facilitar a coordenação, o controle, a análise, a visualização e o processo decisório, ou ainda, é uma combinação estruturada de informação, recursos humanos, tecnologias de informação e práticas de trabalho, organizado de forma a permitir o melhor atendimento dos objetivos da organização. Observe que ambas as definições estão de acordo com a definição inicial de sistema, agora expressa de modo mais específico, pois descrevem um pouco mais o que esse sistema faz (manipula a informação), para que ele serve (tomada de decisão) e a quem ele pode servir (às organizações ou aos indivíduos). Elas introduzem também outros elementos como as práticas de trabalho, as pessoas e a tecnologia que as organizações fazem uso. Os sistemas de informação podem ser manuais ou computadorizados. Muitos sistemas de informação começam como sistemas manuais e se transformam em computadorizados que estão configurados para coletar, manipular, armazenar e processar dados. Sistemas de informação baseados em computadores, são compostos: Hardware: consiste no equipamento, o computador usado para executar as atividades de entrada, processamento e saída. Software: consiste nos programas e nas instruções dadas ao computador. Banco de Dados: é uma coleção organizada de fatos e informações. Telecomunicações: permitem às empresas ligar os sistemas de computador em verdadeiras redes de trabalho. Pessoas: consiste no elemento mais importante na maior parte dos sistemas de informação. Incluem todas as pessoas que gerenciam, executam, programam e mantêm o sistema de computador. Procedimentos: incluem as estratégias políticas, métodos e regras usadas pelo homem para gerenciar o computador. Ex: descrevem quando cada programa deve ser executado, quem tem acesso a certos fatos em um BD, etc. Figura 2: SI baseados em arquiteturas de Computadores Fonte: Elaborado pelo autor 1.5 Fases dos Sistemas de Informação Quanto às atividades de um sistema são definidas (entrada, processamento, saída e realimentação) podemos assim associá-las ao sistema de informações, figura 3. Atualizada em fevereiro de 2016 9 Entrada – em sistemas de informação a entrada é a atividade de captar e juntar dados primários. Ao se produzir cheques de pagamento por um sistema informatizado, por exemplo, as horas trabalhadas de cada empregado devem ser informadas antes que o cheque seja efetivamente calculado e emitido. Independentemente do sistema envolvido, o tipo de entrada é determinado pela saída desejada do sistema; Processamento – envolve a conversão ou transformação dos dados nas saídas úteis e desejadas pelo usuário. Um exemplo tradicional é o cálculo de folha de pagamento. Nele as horas trabalhadas de cada empregado junto com o valor da hora de trabalho devem ser multiplicadas e calculadas o pagamento líquido, as horas-extras e os descontos, segundo as regras; Saída – envolve a etapa na qual a informação propriamente dita é emitida. É a etapa que realmente interessa ao usuário do sistema. Se uma saída gerada por um sistema não for útil para algum propósito, então se deve fazer uma crítica ao sistema para avaliar sua real necessidade. Por mais simples que isso possa parecer, há muitos sistemas que geram saídas desnecessárias; Realimentação (feedback) – a realimentação é uma saída usada para fazer ajustes ou modificações nas atividades de entrada ou no processamento. Erros de digitação, por exemplo, podem fazer com que dados de entrada tenham que ser corrigidos antes de seu processamento. A realimentação também ocorre quando o sistema gera saídas que demandam uma tomada de decisão que provocará uma nova entrada no sistema. Um sistema que indique que os níveis de estoque de uma empresa estão baixos poderá provocar uma decisão de aquisição, que por sua vez gerará a atualização dos produtos em estoque, ou seja, uma nova entrada no sistema. Figura 3: Fases do Sistema de Informação Fonte: Adaptado do modelo de O´Brien, 2007. 10 2. Classificação dos Sistemas de Informação 2.1 Sistema Aberto A interação da empresa com a sociedade e o ambiente onde ela atua caracterizaessencialmente o chamado sistema aberto. BIO (1985), propõe que os sistemas abertos envolvem a idéia que determinados inputs são traduzidos no sistema e, processados, geram certos outputs. Com efeito, a empresa vale-se de recursos materiais, humanos e tecnológicos, de cujo processamento resultam bens ou serviços a serem fornecidos ao mercado. A empresa busca recursos no ambiente, processa-os com ajuda dos recursos internos e devolve ao ambiente na forma de bens ou serviços. A relação de troca é natural no desenvolvimento de qualquer atividade, assim como a empresa busca no fornecedor a matéria-prima, precisa estar preparada internamente com recursos humanos e tecnológicos, para transformar essa matéria-prima e devolver à sociedade em forma de produto acabado. 2.2 Sistema Fechado O sistema fechado independe do meio externo para o desenvolvimento das suas funções. CORNACHIONE (1998), afirma que os sistemas fechados são entendidos como os que não mantém relação de interdependência com o ambiente externo. Padoveze (2000), cita como exemplo de sistema fechado o relógio, onde o seu mecanismo trabalha em conjunto sem precisar do meio externo para o seu funcionamento. A interação ocorre entre as partes que compõem o sistema, não se tornam menos importantes, apenas não interagem com o meio externo. 3. Aplicações dos SI dentro dos Níveis Organizacionais De acordo com Bateman e Snell (1998), as organizações podem ser divididas em três níveis: estratégico, tático e operacional, de acordo com o tipo de trabalho que é desenvolvido por cada nível (figura 4). • Sistemas Nível-Operacional - suporte aos gerentes organizacionais no desenvolvimento de atividades elementares e transacionais na organização TPS. • Sistemas Nível-tático - suporte ao monitoramento, controle, tomada de decisões e atividades administrativas de gerentes middle DSS (Sistemas de Suporte a Decisão - Decision Support Systems) MIS (Sistemas de Informações Gerenciais - Management Information Systems) • Sistemas Nível-Estratégico - auxiliam gerentes sêniores a manipular e situar questões estratégicas e tendências de longo-prazo, ambas na organização e no ambiente externo. „ ESS (Sistemas de Suporte Executivo - Executive Support Systems) • Sistemas Nível-Conhecimento - suporte ao negócios para integrar novos conhecimentos e auxiliar a organização controlar o fluxo de papéis. „ KWA (Sistemas de Conhecimento do Trabalho - Knowledge Work Systems) „ OAS (Sistemas de Automação de Escritório - Office Automation Systems) „ Data Warehouse (organizar dados corporativos) „ Data Mining - Mineração de dados „ Workflow é definido como uma coleção de tarefas organizadas Atualizada em fevereiro de 2016 11 Figura 4: Níveis organizacionais Fonte: Bateman e Snell (1998) 4 Principais Tipos de Sistemas de Informação 4.1 Sistemas de Informações Gerenciais (SIG): Busca planejar sistemas de informações gerenciais integrando uma estrutura de sistemas que proporcione o maior benefício possível à empresa e que a ajude a operar de maneira eficaz. Para isso, é necessário o perfeito entendimento do negócio da empresa, dos seus objetivos, do seu estilo administrativo e do ambiente empresarial. O SIG deve focar prioritariamente as áreas e os fatores críticos para o sucesso da empresa. Ex: relatório de custos totais da folha de pagamento Um SIG inteligente tem alguns objetivos, tais como: • Evitar supressas para a empresa • Identificar oportunidades e ameaças • Consolidar vantagens competitivas • Facilitar o planejamento de curto, médio e longo prazo. 4.2 Sistemas de Apoio à Decisão SAD: Tem como objetivo dar apoio e assistência em todos os aspectos da tomada de decisões sobre um problema específico, sugerindo alternativas e dando assistência à decisão final. Um SAD se diferencia de outros sistemas existentes nas organizações basicamente por: 12 - Manipular grandes volumes de dados; - Obter dados de fontes diferentes (internas e externas); - Flexibilidade de relatórios gerenciais; - Execução de rotinas de otimização e heurística; - Execução de análises de simulação; - Suporte para diversos níveis na tomada de decisão; Com a utilização de um SAD as organizações têm melhores condições de, por exemplo: - Decidir sobre fazer ou não uma promoção, de qual produto e quando; - Projetar o risco ou o sucesso do investimento em determinado empreendimento ou do lançamento de um produto; - Decidir se deve contratar ou não novos funcionários no próximo mês; Como exemplo temos, quando o software auxilia a determinar a melhor localização para construir uma nova instalação industrial. 4.3 Sistemas Especialistas e Inteligência Artificial SE: Ser capaz de fazer sugestões e checar as conclusões, tal como um especialista no assunto. Uma de suas vantagens é a capacidade explicativa das conclusões às quais chega. Ex: Previsões de aplicações no mercado financeiro. Com este sistema os gestores têm condições de tomar decisões não apenas Atualizada em fevereiro de 2016 13 Para Fischler e Firschein sugerem três requisitos para que um Sistema Computacional seja considerado inteligente, quais sejam: i) O sistema deve ser capaz de resolver uma ampla gama de problemas, incluindo formulações para as quais não foi projetado. ii) O sistema deve ser capaz de explicitar informações implícitas, ou seja, de uma informação qualquer ele deve ser capaz de derivar todas as suas representações equivalentes. iii) O sistema deve ter uma estrutura de controle que determine que transformações aplicar, quando obteve uma informação ou quando um esforço adicional será inútil. 4.4 Planejamento de recursos empresariais (ERP): O sistema de planejamento de recursos empresariais (ERP – enterprise resource planning) é uma aplicação transacional, que integra e automatiza muitos dos processos operacionais realizados pelas funções de produção, logística, distribuição, contabilidade, finanças e de recursos humanos de uma empresa. O software ERP consiste normalmente de vários módulos que apóiam as atividades da empresa envolvidas nesses processos vitais internos, como, por exemplo, expedição, estoques, faturamento, planejamento das necessidades de matérias-prima e recursos humanos, e registros contábeis. Alguns dos benefícios esperados pela utilização de sistemas ERP são: integração das operações internas da empresa, ganhos de eficiência, aumento de controle sobre os processos da empresa e acesso a informações de qualidade sobre a operação dos negócios, no momento necessário para a tomada de decisões. A implementação dos sistemas ERP nas empresas não é uma tarefa simples, pois exige um processo de mudança cultural. A integração das atividades operacionais em tempo real impõe uma visão de processos àquelas empresas que os implementam, obrigando-as a compreender e transpor suas barreiras. 14 4.5 Gerenciamento do relacionamento com o cliente (CRM) - O sistema de gerenciamento do relacionamento com o cliente (CRM – customer relationship management) pode ser descrito como uma aplicação que integra e automatiza processos de atendimento ao cliente em vendas, marketing direto e satisfação, contabilidade e gerenciamento de pedidos, e atendimento e suporte ao consumidor no pós-venda. Algumas das vantagens do uso desse tipo de sistema, para os negócios, incluem a identificação dos clientesmais lucrativos, personalização em tempo real de produtos e serviços, e acompanhamento dos contatos do cliente com a empresa, independentemente do meio utilizado. CRM é uma combinação de processos de negócio e tecnologias. Isso quer dizer que, embora uma ferramenta de TI possa ser bastante útil para a melhoria do contato da empresa com seu cliente, ou cliente em potencial, a simples utilização de uma tecnologia desse tipo não significa, por si só, agregação de mais valor no relacionamento com o cliente, se os produtos e serviços oferecidos pela empresa não o estiverem satisfazendo. Para um melhor desempenho o CRM precisa de um sistema que automatize seus processos, controlando e compartilhando informações entre usuários de forma mais produtiva e efetiva. A figura mostra que funções tais como Recursos Humanos, Gerenciamento da Cadeia de Suprimento, Relacionamento com Clientes e Fornecedores, Gestão, Finanças, Contabilidade, entre outros... até tempos atrás eram autónomas, geralmente alojadas O CRM une todas as informações sobre clientes para serem usadas por 3 áreas da Atualizada em fevereiro de 2016 15 4.6 Gerenciamento da cadeia de suprimentos (SCM) - Os sistemas de gerenciamento da cadeia de suprimentos (SCM – supply chain management) reestruturam e agilizam os processos tradicionais da cadeia de suprimentos. Eles são voltados ao planejamento da atividade produtiva e da cadeia de suprimento em sua totalidade, englobando aspectos como previsão e gerenciamento de demanda e de alocação de capacidade produtiva. Os benefícios esperados a partir da implementação deste tipo de sistema são redução dos custos, aumento da eficiência e melhoria dos prazos no ciclo da cadeia de suprimentos. O objetivo é permitir um maior controle sobre as atividades de suprimento, produção e distribuição, de forma a alcançar agilidade no atendimento das demandas dos clientes de uma empresa, e das necessidades de seus parceiros de negócios. 4.7 BI – Business intelligence – A inteligência empresarial, o BI trata-se de um conjunto de ferramentas e aplicativos que transforma grandes quantidades de dados em informações de qualidade para a tomada de decisões. As ferramentas de BI permitem cruzar dados, visualizar informações em vários cenários e analisar os principais indicadores de desempenho empresarial. As quatro principais ferramentas do conjunto de inteligência empresarial, segundo Batista (2004), são o data warehouse, as ferramentas OLAP, o data mining e as ferramentas de modelagem analítica e de previsões. É fundamental saber o significado de BI Business (negócio) e 16 4.8 Os sistemas de informação geográficas (geographic information systems – GIS) - utilizam bancos de dados georreferenciados, desenham e exibem mapas e outros demonstrativos gráficos, que apóiam decisões concernentes à distribuição geográfica de pessoas e outros recursos. Esses sistemas podem, por exemplo, ajudar na seleção de novos pontos de lojas de varejo, otimizar roteiros de distribuição, ou analisar fatores demográficos de um determinado público-alvo. Sistema GIS É um sistema computacional composto de softwares e hardwares, que permite a integração entre bancos de dados alfanuméricos (tabelas) e gráfico (mapas), para o processamento, análise e saída de dados georreferenciados. Os produtos criados são arquivos digitais contendo Mapas, Gráficos, Tabelas e Relatórios convencionais. 5 Avaliação dos Sistemas de informações Se as organizações despendem preciosos esforços e recursos para a implantação de sistemas de informação, certamente elas esperam obter algum retorno. Os sistemas bem-sucedidos devem proporcionar ganhos que, no mínimo, devem equivaler aos esforços despendidos. Deve-se então ter a preocupação com o desempenho dos sistemas de informação. Veja a seguir uma forma de realizar essa avaliação por meio de alguns indicadores de sucesso: rentabilidade – existe quando os benefícios do sistema ultrapassam seus custos; desempenho – ocorre quando o sistema melhora a qualidade das decisões de seu usuário; áreas de aplicação – um sistema é bem-sucedido quando é aplicado aos problemas de maior importância na organização. Isso contribui significativamente para justificar seu custo; satisfação dos usuários – como o sistema é um instrumento de auxílio ao usuário, sua satisfação indica que as funções esperadas pelo usuário são atendidas. Mesmo sendo uma avaliação subjetiva, essa pode ser considerada válida se estiver associada a outros indicadores de sucesso; utilização generalizada – o fato de o sistema ser amplamente utilizado é um indicador de sucesso na medida em que possui a aprovação de várias pessoas. Essas características são, em sua maioria, de difícil mensuração. Entretanto, se elas puderem ser observadas, objetiva ou intuitivamente, serão indicadoras de um sistema bem-sucedido. Atualizada em fevereiro de 2016 17 Capítulo II 2 Algoritmo e Lógica de Programação O uso corriqueiro da palavra lógica está normalmente relacionada à coerência e à racionalidade. Frequentemente se associa lógica apenas à matemática, não se percebendo sua aplicabilidade e sua relação com as demais ciências. Podemos relacionar a lógica com a “correção do pensamento”, pois uma de suas preocupações é determinar quais operações são válidas e quais não são, fazendo análises das formas e leis do pensamento. Como filosofia, ela procura saber por que pensamos assim não de outro jeito. Com arte ou técnica, ela nos ensina a usar corretamente as leis do pensamento. Poderíamos dizer também que a lógica é a “arte de pensar”, que é a “ciência das formas do pensamento”. Visto que a forma mais complexa do pensamento é o raciocínio (FORBELONI, 2005). Exemplo: Todo mamífero é um animal. Todo cavalo é um mamífero. Portanto, todo cavalo é um animal. Quando queremos criar ou desenvolver um software para realizar determinado tipo de processamento de dados, devemos escrever um programa ou vários programas interligados. No entanto, para que o computador compreenda e execute esse programa, devemos escrevê-lo usando uma linguagem que tanto o computador quanto o criador de software entendam. Essa linguagem é chamada de linguagem de programação (ASCENCIO & CAMPOS, 2008). 2.1 - Algoritmos Não Computacionais Um algoritmo é uma seqüência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. São exemplos de algoritmos instruções de montagem, receitas, manuais de uso, etc. Um algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo; um algoritmo é um caminho para a solução de um problema. Em geral, existem muitos (senão infinitos) caminhos que levam a uma solução satisfatória. Um algoritmo não computacional é um algoritmo cuja seqüência de passos, a princípio, não pode ser executada por um computador. Abaixo é apresentado um algoritmo não computacional cujo objetivo é usar um telefone público. Provavelmente você "executou" o algoritmo deste exemplo diversas vezes. O termo algoritmo está muito ligado à Ciência da Computação, mas, na realidade, ele pode ser aplicado a qualquer problema cuja solução possa ser decomposta em um grupo de instruções. 18 Um outro exemplo típico de algoritmo é uma receita culinária, como no exemplo abaixo. Algoritmo para fritar um ovo Colocar um ovo na frigideira Esperar o ovo ficar frito Remover o ovo da frigideira O algoritmo acima, no entanto, poderia ser mais detalhado e completo. Uma versão mais aceitávelseria: Exemplo Algoritmo para fritar um ovo Retirar um ovo da geladeira Colocar a frigideira no fogo Colocar óleo Esperar até o óleo ficar quente Quebrar o ovo separando a casca Colocar o conteúdo do ovo na frigideira Esperar um minuto Retirar o ovo da frigideira Apagar o fogo Essa segunda versão é mais completa e detalhada que a anterior. Nela, várias ações que estavam subentendidas foram explicitadas. No entanto, para que o algoritmo possa ser útil, é necessário ainda que quem faz uso dele conheça os termos utilizados nas instruções. O algoritmo do exemplo só será útil para alguém que seja fluente na língua portuguesa e conheça o significado dos verbos Retirar, Colocar, Esperar assim como dos substantivos utilizados no contexto de uma receita culinária. Em outras palavras, é preciso que a linguagem utilizada no algoritmo seja conhecida tanto por quem o escreveu quanto por quem vai executá-lo. Para que o algoritmo possa ser executado por uma máquina é importante que as instruções sejam corretas e sem ambigüidades. Portanto, a forma especial de linguagem que utilizaremos é bem mais restrita que o Português e com significados bem definidos para todos os termos utilizados nas instruções. Essa linguagem é conhecida como Português Estruturado (às vezes também chamada de Portugol). O português estruturado é, na verdade, uma simplificação extrema do Português, limitada a umas poucas palavras e estruturas que têm um significado muito bem definido. Ao conjunto de palavras e regras que definem o formato das sentenças válidas chamamos sintaxe da linguagem. Durante este texto, a sintaxe do Português Estruturado será apresentada progressivamente e a utilizaremos em muitos exercícios de resolução de problemas. Aprender as palavras e regras que fazem parte dessa sintaxe é fundamental; no entanto, não é o maior objetivo deste curso. O que realmente exigirá um grande esforço por parte do estudante é aprender a resolver problemas utilizando a linguagem. Para isso, há somente um caminho: resolver muitos problemas. O processo é semelhante ao de tornar-se competente em um jogo qualquer: aprender as regras do jogo (a sintaxe) é só o primeiro passo, tornar-se um bom jogador (programador) exige tempo, muito exercício e dedicação. Embora o Português Estruturado seja uma linguagem bastante simplificada, ela possui todos os elementos básicos e uma estrutura semelhante à de uma linguagem típica para programação de computadores. Além disso, resolver problemas com português estruturado, pode ser uma tarefa tão complexa quanto a de escrever um programa em uma linguagem de programação qualquer. Portanto, neste curso, estaremos na verdade Atualizada em fevereiro de 2016 19 procurando desenvolver as habilidades básicas que serão necessárias para adquirir-se competência na programação de computadores. 2.2 - Algoritmos Computacionais O computador, a princípio, não executa nada. Para que ele faça uma determinada tarefa - calcular uma folha de pagamento, por exemplo -, é necessário que ele execute um programa. Um programa é um conjunto de milhares de instruções que indicam ao computador, passo a passo, o que ele tem que fazer. Logo, um programa nada mais é do que um algoritmo computacional descrito em uma linguagem de programação. Uma linguagem de programação contém os comandos que fazem o computador escrever algo na tela, realizar cálculos aritméticos, receber uma entrada de dados via teclado, e milhares de outras coisas, mas estes comandos precisam estar em uma ordem lógica. O termo processamento de dados é muitas vezes utilizado em conjunto com computadores, pois, em geral, é isto o que eles fazem: processar dados. Daí podem extrair os dois componentes básicos de um algoritmo computacional (de agora em diante, esta palavra sempre utilizada no contexto de algoritmos computacionais): dados e código. Dados são os valores (números, nomes, etc.) de que precisamos para resolver o problema, e código são os comandos ou instruções que usaremos para manipular e "processar" os dados. 2.3 Ferramentas A ferramenta que auxilia a lógica de programação na resolução dos problemas são os algoritmos. A palavra algoritmo pode ter várias definições, entre elas: • Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido (FORBELLONE, 2005). • Algoritmo é a descrição de uma sequência de passos que deve ser seguida para a realização de uma tarefa (ASCENCIO, 1999). • Algoritmo é uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância (SALVETTI, 1999). Analisando as definições, podemos concluir que algoritmos não são somente utilizados em problemas computacionais, mas podem ser aplicados a qualquer situação do dia a dia. No exemplo abaixo, vê-se um algoritmo para a troca de uma lâmpada. Algoritmo Trocar Lâmpada. 1. Pegar uma lâmpada nova. 2. Pegar uma escada. 3. Posicionar a escada embaixo da lâmpada queimada. 4. Subir na escada com a lâmpada nova na mão. 5. Retirar a lâmpada queimada. 6. Colocar a lâmpada nova. 7. Descer da escada. 8. Testar o interruptor. 9. Guardar a escada. 10. Jogar a lâmpada velha no lixo. 20 Assim como as várias atividades podem ser realizadas de formas diferentes, também não existe somente um algoritmo correto. Algoritmos diferentes, desde que resolvam o problema proposto, estão corretos. Para se construir um algoritmo, alguns passos são importantes. São eles: • Compreender o problema a ser resolvido. • Definir os dados de entrada, quais destes dados serão fornecidos e quais já fazem parte do cenário. • Definir os processamentos necessários para se resolver o problema. O processamento transforma os dados de entrada nos dados de saída. • Definir os dados de saída, ou seja, quais informações precisarão ser mostradas. • Construir o algoritmo, utilizando uma das formas disponíveis (serão mostradas mais adiante). • Testar o algoritmo utilizando simulações. Vale destacar que os algoritmos devem ser genéricos para o problema proposto, não importando quais serão os dados de entrada fornecidos. 2.4 Tipos de Algoritmos Os três tipos de algoritmos mais utilizados são: descrição narrativa, fluxograma e pseudocódigo. Logo abaixo estão as características de cada um. 2.4.1 Descrição Narrativa Consiste em analisar o enunciado do problema e escrever, utilizando uma linguagem natural, os passos a serem seguidos para sua resolução. Uma vantagem deste tipo de algoritmo é sua facilidade, pois não há necessidade de novos conhecimentos para empregá- lo. Uma desvantagem é a abertura para várias interpretações que a linguagem natural proporciona. 2.4.3 Pseudocódigo Consiste em analisar o problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para a resolução. Uma vantagem é a facilidade de transcrição para a linguagem de programação, bastando conhecer as palavras reservadas da linguagem a ser utilizadas. Uma desvantagem é a necessidade de aprender as regras de pseudocódigo. Exemplo: algoritmo media_final declare inteiro: P1, P2, P3, P4; real: media; Inicio Leia(P1, P2, P3, P4); Media (P1+P2+P3+P4)/4; Escreva(media); fim fim_algoritmo Atualizada em fevereiro de 2016 21 2.4.2 Fluxograma Consiste em analisar o enunciado do problema e escrever, utilizando símbolos gráficos definidos, os passos para a solução do problema. Uma vantagem é a simplicidade que os elementos gráficos proporcionam para o entendimento. Uma desvantagem é a necessidade de aprender a simbologia do fluxograma. Para conhecimento da simbologia, vide tabela 1. 2.4.2.1 Símbolos utilizados no Fluxograma Os símbolos de identificaçãográfica representam sempre uma operação ou conjunto de operações similares, podendo ser identificados por um rótulo relacionado à própria ação do símbolo em uso, somente quando necessário. Os símbolos devem ser conectados uns com outros por linhas de setas que mostrem explicitamente a direção do fluxo a ser executado pelo programa, procurando sempre que possível manter uma hierarquia de cima para baixo e da direita para esquerda (figura x). 22 Figura 5: Tipos de símbolos Fonte: Manzano (2012) 2.5 Forma Geral de um Algoritmo Nessa seção vamos conhecer os primeiros elementos que compõem o Português Estruturado e escrever alguns algoritmos. A estrutura geral de um algoritmo é: Algoritmo "<nome do algoritmo>" var < declaração de variáveis> inicio < lista de comandos> fimalgoritmo onde as palavras algoritmo e fimalgoritmo fazem parte da sintaxe da linguagem e sempre delimitam o inicio e fim de um algoritmo; a < declaração de variáveis> é a seção ou parte do algoritmo onde descrevemos os tipos de dados que serão usados na lista de comandos. Por exemplo, poderíamos definir que fruta é um tipo de dado que pode assumir apenas os valores maçã, pêra, banana, abacaxi e outras frutas, sobre os quais podemos efetuar as operações comparar, comprar, comer e servir; inicio indica o fim das declarações e o início da seção de comandos; < lista de comandos > é apenas uma indicação de que entre as palavras inicio e fimaigoritmo podemos escrever uma lista com uma ou mais instruções ou comandos. É importante salientar que, quando um algoritmo é "executado", as instruções ou comandos de um algoritmo são sempre executados na ordem em que aparecem no mesmo. As palavras que fazem parte da sintaxe da linguagem são palavras reservadas, ou seja, não podem ser usadas para outro propósito em um algoritmo que não seja aquele previsto nas regras de sintaxe. A palavra algoritmo, por exemplo, é uma palavra reservada. Neste texto, as palavras reservadas sempre aparecerão em negrito. 2.6 Exercícios de Fixação 1) Três senhoras – dona Branca, dona Rosa e dona Violeta – passeavam pelo parque quando dona Rosa disse: - Não é curioso que estejamos usando vestidos de cores branca, rosa e violeta, embora nenhuma de nós esteja usando um vestido de cor igual ao seu próprio nome? - Uma simples coincidência - respondeu a senhora com o vestido violeta. Qual a cor do vestido de cada senhora? 2) Um homem precisa atravessar um rio com um barco que possui capacidade apenas para carregar ele mesmo e mais uma de suas três cargas, que são: um lobo, um bode e um maço de alfafa. O que o homem deve fazer para conseguir atravessar o rio e sem perder suas cargas? Escreva um algoritmo mostrando a resposta, ou seja, indicando todas as ações necessárias para efetuar uma travessia segura. 3) Três jesuítas e três canibais precisam atravessar um rio; para tal, dispõem de um barco com capacidade para duas pessoas. Por medida de segurança, não se deve permitir que em alguma margem a quantidade de jesuítas seja inferior à de canibais. Qual a solução para efetuar a Atualizada em fevereiro de 2016 23 travessia com segurança? Elabore um algoritmo mostrando a resposta, indicando as ações que concretizam a solução deste problema. 4) João tem três barris. No barril A, que está vazio, cabem 8 litros. No barril B, 5. No barril C, 3 litros. Que deve ele fazer para deixar os barris A e B com 4 litros cada e o C vazio? 3 Linguagens de Programação Uma linguagem de programação é um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador (WIKIPEDIA, 2010). O conjunto de palavras (tokens), composto de acordo com essas regras, constituem o código fonte de um software. Linguagens de programação são importantes para que programadores e engenheiros de software possam escrever programas mais organizados e com maior rapidez. Elas também tornam os programas menos dependentes de computadores ou ambientes computacionais específicos. Isso porque os programas escritos podem ser traduzidos para o código de máquina do computador ou do ambiente específico onde será executado. 3.1 Classificação das Linguagens As linguagens podem ser classificadas quanto à várias características. Logo abaixo ve-se alguns exemplos (Wikipedia, 2010). 3.1.1 Quanto ao paradigma Diferentes linguagens de programação podem ser agrupadas segundo o paradigma que seguem para abordar a sua sintaxe: • Linguagem funcional • Linguagem natural • Programação lógica • Programação imperativa • Programação estruturada • Linguagem orientada a objetos 3.1.2 Quanto a estrutura de tipos • Fracamente tipada, como Smalltalk, onde o tipo da variável muda dinamicamente conforme a situação. • Fortemente tipada, como Java, Ruby, onde o tipo da variável, uma vez atribuído, se mantém o mesmo até ser descartada da memória. • Dinamicamente tipada, como Perl, Python ou Ruby, onde o tipo da variável é definido em tempo de execução. • Estaticamente tipada, como Java e C, onde o tipo da variável é definido em tempo de compilação. 24 3.1.3 Quanto ao grau de abstração • Linguagem de programação de baixo nível, cujos símbolos são uma representação direta do código de máquina que será gerado, onde cada comando da linguagem equivale a um "opcode" do processador, como Assembly. • Linguagem de programação de médio nível, que possui símbolos que podem ser convertidos diretamente para código de máquina (goto, expressões matemáticas, atribuição de variáveis), mas também símbolos complexos que são convertidos por um compilador. Exemplo: C, C++. • Linguagem de programação de alto nível, composta de símbolos mais complexos, inteligível pelo ser humano e não-executável diretamente pela máquina, no nível da especificação de algoritmos, como Pascal, Fortran, ALGOL e SQL. 3.1.4 Quanto à geração • Primeira geração, as linguagens de baixo nível (Assembly) • Segunda geração, as primeiras linguagens (Fortran, ALGOL,...) • Terceira geração, as procedurais e estruturadas (Pascal, C). • Quarta geração, linguagens que geram programas em outras linguagens (Java, C++), linguagens de consulta (SQL). • Quinta geração, linguagens lógicas (Prolog). As etapas para o desenvolvimento de um programa são (ASCENCIO & CAMPOS, 2008): 1. Análise - Nesta etapa, estuda-se o enunciado do problema para definir os dados de entrada, o processamento e os dados de saída. 2. Algoritmo - Ferramentas do tipo descrição narrativa, fluxograma ou português estruturado são utilizadas para descrever o problema com suas soluções. 3. Codificação - O algoritmo é transformado em códigos da linguagem de programação escolhida para se trabalhar. Portanto, um programa é a codificação de um algoritmo em uma linguagem de programação (ASCENCIO, 1999). Para que se desenvolva esses programas, é necessário usar o que se chama lógica de programação. Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. 4 Conceito de Variável Os algoritmos e programas recebem dados que precisam ser armazenados para posteriormente poderem ser processados. Esse armazenamento é feito na memória do computador, quando os algoritmos se transformam em programas. Atualizada em fevereiro de 2016 25 Dessa forma, uma variável é uma posição (ou endereço) de memória do computador. Possui um tipo e um nome, podendo o seu conteúdo variar ao longo da execução do programa. Embora uma variável possa assumir vários valores ao longo da execução do algoritmo ou programa, ela só pode armazenar um único valor em determinado instante. Uma variável pode ser vista como uma caixa com um rótulo ou nome colado a ela, que num dado instanteguarda um determinado objeto. O conteúdo desta caixa não é algo fixo, permanente. Na verdade, essa caixa pode ter seu conteúdo alterado diversas vezes. Contudo, o conteúdo deve ser sempre do mesmo tipo. Na figura abaixo, a caixa (variável) rotulada com FATOR contém o valor 5. Como seu tipo é numérico, em um determinado instante essa caixa poderá conter qualquer valor numérico (inteiro ou fracionário; positivo, negativo ou zero). Entretanto, em um determinado instante, ela conterá um, e somente um, valor. Os tipos de dados mais comuns são: • Numéricos - Dividem-se em dois grupos: reais e inteiros. Os inteiros podem ser positivos ou negativos e não possuem parte decimal. Os reais podem ser positivos ou negativos e possuem parte decimal. Exemplo de números inteiros: 3 -45 98 -423 34 -9 Exemplo de números reais: 45,2 -90,56 158,26 -324,8 • Literais ou caracteres - São dados formados por um único caractere ou por uma cadeia de caracteres. Podem ser letras (maiúsculas ou minúsculas), caracteres especiais (* & % $ # @ ? ,) ou números (que, nesse caso, não podem ser utilizados para operações matemáticas). • Lógicos - Também são chamados de booleanos e só podem assumir um de dois valores: verdadeiro ou falso. 4.1 Tipos de Variáveis • Os tipos de variáveis mais utilizados são: Inteiro, Real, Caractere, Cadeia de Caracteres e Lógicos para algoritmos. Em Pascal estes tipos ficam, respectivamente: Integer, Real, Char, String e Boolean. • A tabela 2 mostra quais os tamanhos e faixa de valores dessas e de outras variáveis. • Tabela 2: Tipos de variáveis em Algoritmo e em C++ Tipo Extensão Escala Numérica em bits char 8 0 a 255 int 16 -32768 a 32767 float 32 3.4E-38 a 3.4E+38 double 64 1.7E-308 a 1.7E+308 26 void 0 sem valor 4.2 Formação de Identificadores Identificadores são nomes de variáveis, dos programas, das constantes, das rotinas, etc. Existem algumas regras básicas para criação desses nomes devem ser seguidas, principalmente quando estivermos lidando com a linguagem de programação Pascal, para evitar problemas. ✓ Os caracteres que podem ser utilizados são: letras maiúsculas e minúsculas, números underline. ✓ O primeiro caractere do nome não pode ser um número, deve ser uma letra. ✓ Não podem ser utilizados espaços em branco e caracteres especiais. ✓ Não podem ser utilizadas palavras reservadas da linguagem utilizada. ✓ O nome do programa não poder ter o mesmo nome de qualquer variável utilizada. PALAVRAS RESERVADAS aleatorio e grauprad passo abs eco inicio pausa algoritmo enquanto int pi arccos entao interrompa pos arcsen escolha leia procedimento arctan escreva literal quad arquivo exp log radpgrau asc faca logico raizq ate falso logn rand caracter fimalgoritmo maiusc randi caso fimenquanto mensagem repita compr fimescolha minusc se copia fimfuncao nao sen cos fimpara numerico senao cotan fimprocedimento numpcarac timer cronometro fimrepita ou tan debug fimse outrocaso verdadeiro declare função para xou Obs.: Importante ressaltar que estas palavras referem-se a linguagem VisualG, no entanto, outras linguagens possuem suas próprias palavras reservadas. Pensando na resolução dos algoritmos voltados para posterior implementação em C++, estamos pensando em soluções de problemas seguindo o paradigma estruturado, ou imperativo. Para soluções deste tipo, é necessário detalhar as ações para se chegar à resposta necessária. Exercícios Propostos a) Faça um algoritmo que calcule a média aritmética de um aluno, dadas as notas de trabalho e de prova de um determinado bimestre. b) Faça um algoritmo que receba dois números e mostre as quatro operações básicas (soma, subtração, multiplicação e divisão) realizadas com eles. Atualizada em fevereiro de 2016 27 c) Duas variáveis (A e B) possuem valores distintos (A=5; e B=10). Crie um algoritmo que armazene esses dois valores nessas duas variáveis e efetue a troca dos valores de forma que a variável A passe a possuir o valor da variável B e que a variável B passe a possuir o valor da variável A. Por fim, apresentar os valores trocados. A seguir vemos como calcular a área e o perímetro de um retângulo seguindo esses passos. 1. Obter o valor da altura do retângulo. 2. Obter o valor da largura do retângulo. 3. Calcular a área. 4. Calcular o perímetro. 5. Mostrar os cálculos realizados. Em algoritmo: Algoritmo Retângulo Declaração de variáveis Real Alt,Lar,Area,Per Início Escrever "A altura e a largura do retângulo" Leia Alt,Lar Area <— Alt*Lar Per «- 2*Alt + 2*Lar Escrever Area,Per Fim 4.3 Estrutura Sequencial Pelo paradigma estruturado, qualquer problema pode ser resolvido utilizando três estruturas: sequencial, condicional e iterativa (repetição). Na estrutura sequencial, os passos para a resolução do problema são executados em sua integridade, um por um, sequencialmente. A estrutura sequencial em algoritmo segue o seguinte formato: Algoritmo nome 28 Declaração de Variáveis variá veis Início Bloco de instruções Fim Em Pascal essa estrutura se transforma em: Program nome; Var variá veis; Begin Bloco de instruções; End. Comando de atribuição O comando de atribuição é utilizado para conceder valores ou operações a variáveis, sendo representado pelo símbolo <- em algoritmos e por := em Pascal. Exemplos de atribuição: x ^ 4*2 x := x + 2 y ^ "aula" y := 'resposta' A tabela 3 mostra quais as palavras reservadas em Linguagem C++. Atualizada em fevereiro de 2016 29 auto break case char const double else enum extern float int long register return short struct switch typedef union unsigned Continue Default Do For Goto While Static Void Sizef If Tabela 4: Tabela de operadores para cálculos matemáticos Op. em Algoritmo Op. em C++ Exemplo e comentário <— = x ^ y ou x := y (o conteúdo da variável y é atribuído para a variável x) + + x + y (Soma o conteúdo de x e de y) - - x — y (Subtrai o conteúdo de y do conteúdo de x) * * x * y (Multiplica o conteúdo de x pelo conteúdo de y) / / x / y (Obtém o quociente da divisão de x por y) Resto mod Resto(x,y) ou x mod y (Obtém o resto da divisão de x por y) Divide div Divide(x,y) ou x div y (Obtém o quociente inteiro da divisão de x por y) Observações: Os operadores div e mod só podem ser aplicados com operandos do tipo inteiro. O operador / sempre conduz a um resultado real. Com os operadores +, - e *, se pelo menos um dos operandos for real, então o resultado será real. Tabela 5: Tabela de operadores comparativos Op. em Algoritmo Op. em C++ Exemplo e comentário = == x = y (Compara se o conteúdo de x é igual ao conteúdo de y) * !> x ^ y ou x <> y (Compara se o conteúdo de x é diferente do conteúdo de y) < <= x < y ou x <= y (Compara se o conteúdo de x é menor ou igual ao conteúdo de y) > >= x > y ou x >= y (Compara se o conteúdo de x é maior ou igual ao conteúdo de y) < < x < y (Compara se o conteúdo de x é menor do que o conteúdo de y) > > x > y (Compara se o conteúdo de x é maior do que o conteúdo de y) 30 Tabela 6: Funções matemáticas Observação: • Por não existir operador de potenciação, tem-se: AB = Exp(B * Ln(A)) Exemplo: 510 = Exp(l0 * Ln(5)) As prioridades entre operadores, incluindo as funções, são: 1. ( ) - parênteses 2. funções 3. * , / , div , mod 4. + , - Quando se tem, em uma mesma expressão, vários operadores com a mesma prioridade, a expressão é resolvida da esquerda para a direita. Funções Matemáticas Função Exemplo Comentárioabs abx(x) Obtém o valor absoluto de x. log log(x) Obtém o logaritmo natural de x. trunc trunc(x) Obtém a parte inteira do número real armazenado em x. frac frac(x) Obtém a parte fracionária do número real armazenado em x. round round(x) Arredonda x. sin sin(x) Calcula o seno de x (x deve ser passado em radianos) cos cos(x) Calcula o co-seno de x (x deve ser passado em radianos) pi pi Retorna o valor de n. sqrt sqrt(x) Calcula a raiz quadrada de x. sqr sqr(x) Calcula x elevado ao quadrado. inc inc(x,y) Incrementa a variável x com o valor da variável y. dec dec(x,y) Decrementa a variável x com o valor da variável y. Atualizada em fevereiro de 2016 31 4.4 Operadores Lógicos AND OR XOR NOT X1 X2 X1ANDX2 X1 X2 X1ORX2 X1 X2 X1XORX2 X1 NOTX1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 Exemplo usando operadores lógicos: Expressão/ Quando eu não saiu? Se chover e relampejar, eu não saiu Somente quando chover e relampejar ao mesmo tempo (apenas 1 possibilidade) Se chover ou relampejar, eu não saiu. Somente quando chover, somente quando relampejar ou quando chover e relampejar ao mesmo tempo (3 possibilidades). Se chover xou relampejar, eu não saiu. Somente quando chover, ou somente quando relampejar (2 possibilidades). 5 Comandos de E/S (Entrada/Saída) Em geral, um programa que faz seu processamento e não tem como mostrar seus resultados é inútil (imagine, por exemplo, uma calculadora que realiza uma infinidade de operações matemáticas, mas não tem um display para mostrar os resultados!). Portanto, em algum ponto do algoritmo geralmente deve ocorrer à exibição de valores, e todas as linguagens de programação têm comandos para este fim. Em Português Estruturado algoritmos usamos o comando escreva para isto. A sintaxe desse comando tem a seguinte forma: Escreva (<expressão ou identificador ou constante>, <expressão ou identificador ou constante>, ..., <expressão ou identificador ou constante>) OBS.: No Visualg existem dois comandos escreva com finalidades diferentes quando usado consecutivamente. Escreval (<expressão ou identificador ou constante>) //Mostra o primeiro resultado na mesma linha depois em linhas diferentes. Escreva (<expressão ou identificador ou constante>) //Mostra o resultado na mesma linha, mas em colunas diferentes. Exemplo X <- 3.5 Y <- 4 Escreva ("O valor de X é", X) Escreva (" E o valor de Y é ", Y) Escreval (" A soma de X e Y é", X+Y) Escreval ("O valor de X é", X) Escreval ("E o valor de Y é ", Y) Escreval ("A soma de X e Y é", X+Y) Faria com que aparecesse na tela: 32 O valor de X é 3.5 E o valor de Y é 4 A soma de X e Y é 7.5 Nem todos os dados que um algoritmo manipula são gerados por ele. Um algoritmo de caixa automático, por exemplo, tem que obter do usuário o número da conta, a senha, a opção de serviço desejada, etc. Assim, deve haver um meio para que sejam digitados (ou fornecidos de outra maneira) dados para o algoritmo. Mais uma vez, todas as linguagens de programação permitem isto, e no nosso Português Estruturado usamos o comando leia. A sintaxe deste comando é: Leia (<identificador>) Exemplo leia (NumeroConta) leia (NumeroAgenci a) leia (NomeCliente) Você pode mandar uma mensagem antes para o usuário, assim ele sabe qual é o conteúdo que deve ser colocado, ou seja, digitado. Exemplo Escreva ("Digite seu nome: ") Leia (nome) Escreva ("Digite sua agencia: ") Leia (NumeroAgencia) Escreva ("Digite sua conta: ") Leia (NumeroConta) Deve estar claro que sempre à direita do comando leia haverá um identificador de variável. Assim, são incorretos os seguintes comandos: Exemplo "são incorretos" leia (NumeroConta+6 0) leia (12345) leia (NomeCliente+Sobrenome) 5.1 - Construindo os Primeiros Algoritmos: Estruturas sequenciais De forma genérica, a construção de um algoritmo se resume às seguintes etapas: a) entendimento do problema; b) elaboração da solução algorítmica; e Atualizada em fevereiro de 2016 33 c) codificação da solução no Português Estruturado; Geralmente a etapa 2 é a mais complexa, pois depende da engenhosidade e experiência do "construtor". Exemplo Enunciado: Faça um programa que leia dois valores numéricos, e calcule e exiba a sua média aritmética. Etapa 1 Simples, hein? Dos tempos de escola lembramos que a média aritmética de dois valores é calculada como (a+b)/2, e sendo assim a primeira etapa já está pronta. Etapa 2 Os dados necessários serão os dois valores, que colocaremos em duas variáveis A e B, do tipo numérico, e uma terceira variável, que chamaremos Média, que armazenará a média aritmética calculada. Etapa 3 A obtenção dos dados neste programa é simples e direta. Basta pedir ao usuário que digite os valores. Etapa 4 O processamento aqui é o cálculo da média, usando o método citado acima, na etapa 1. O resultado do cálculo será armazenado na variável Média. Etapa 5 Basta exibir o conteúdo da variável Média. Solução: 1. Algoritmo “Cálculo de Média Aritmética” 2. Var 3. A, B, Media : Real 4. Inicio 5. Escreva (“Programa que calcula a média aritmética de dois nºs”) 6. Escreva (“Digite o primeiro valor: “) 7. Leia (A) 8. Escreva (“Digite o segundo valor: “) 9. Leia (B) 10. Media (A+B)/2 11. Escreva (“A média dos valores é : “, Media) 12. FimAlgoritmo Comentários Você deve ter notado que colocamos na tela instruções para o usuário usando o comando Escreva. Esta é uma boa técnica de programação, mesmo hoje em dia, com o ambiente do Windows, etc. Da mesma forma, ao imprimir o resultado, não mostramos simplesmente a média, mas explicamos ao usuário o que aquele valor significa. Como pode ser analisado no tópico anterior todo programa possui uma estrutura seqüencial determinada por um INÍCIO e FIM. Em um algoritmo, estes limites são definidos com as palavras Algoritmo e FimAlgoritmo. Exemplo: Enunciado: Algoritmo que lê o nome de um aluno, as notas de suas três provas e calcule e exibe a média harmônica das provas. 34 Etapa 1: a média harmônica de três provas a, b e c é dada pela fórmula — + --- + --- a b c Etapa 2: os dados necessários serão o nome do aluno e os valores das provas. O algoritmo limita-se basicamente à própria fórmula. 1. Algoritmo “MédiaHarmonica” 2. Var 3. A, B, C, Mh : Real 4. Nome : caracter 5. Inicio 6. Escreva (“Entre com o nome dos alunos: ”) 7. Leia (nome) 8. Escreva (“Digite a primeira nota: “) 9. Leia (A) 10. Escreva (“Digite a segunda nota: “) 11. Leia (A) 12. Escreva (“Digite a terceira nota: “) 13. Leia (C) 14. Mh 3/(1/a+1/b+1/c) 15. Escreva (“A média harmônica do aluno : “, Nome, “==”, Mh) 16. FimAlgoritmo 5.2 Exercícios 1) Faça um algoritmo que lê o valor do raio e calcule a área do círculo correspondente. Etapa 1: o cálculo da área do círculo é Pi*R1. Etapa 2: o dado necessário é o valor do raio, que será lido (colocado) na variável Raio. Obs.: Você não precisa declarar o pi, pois já é uma função definida pelo programa Visualg. 2) Construa um algoritmo que calcule a quantidade de latas de tinta necessárias e o custo para pintar tanques cilíndricos de combustível, em que são fornecidos a altura e o raio desse cilindro: Sabendo que: a) A lata de tinta custa R$ 50,00; b) Cada lata contém 5 litros; c) Cada litro de tinta pinta 3 metros quadrados; Obs.: Dados de entrada : altura(h) e raio (r). Dados de saída: custo(c) e quantidade (qtde). Atualizadaem fevereiro de 2016 35 3) Construa um algoritmo para calcular as raízes de uma equação do 2ºgrau (Ax2+Bx+C), sendo que os valores A, B, e C são fornecidos pelo usuário (considere que a equação possui duas raízes reais). 4) Faça um algoritmo para calcular o volume de uma esfera de raio R, em que R é um dado fornecido pelo usuário. O volume de uma esfera é dado por V = 4/3 piR2. 6 - Estrutura Condicional (IF) Exemplo se Dinheiro >= 10 entao Ir_ao_Cinema <- VERDADEIRO Ver_TV <- FALSO Fimse se Dinheiro < 10 entao Ir_ao_Cinema <- FALSO Ver_TV <- VERDADEIRO Fimse É importante frisar que sempre à direita do comando se deverá parecer uma expressão lógica, e uma expressão cujo resultado é VERDADEIRO ou FALSO. Assim, os seguintes comandos são incorretos: Exemplo se A <- B entao // É uma atribuição e não uma expressão fimse se A + B entao // É uma expressão aritmética e não uma expressão fimse Po outro lado, estão corretos os seguintes comandos: Exemplo se (A > B) e (A > C) e (B <> C) entao fimse se nao Achou entao // Correto se Achou foi declarada como logico fimse Seja o algoritmo abaixo: Faça um Algoritmo para calcular a área de um circulo, fornecido o valor do raio, que deve ser positivo. 1. Algoritmo "Calcula Area do Circulo" 2. VAR 3. Area, Raio: Real 4. inicio 5. Escreval ("Entre com raio do círculo") 6. Leia (Raio) 7. Se Raio > 0 entao 8 . Area <- PI*(Raio^2) 9. Escreva ("A área do círculo de raio ", Raio, " é ", Area) 10. fimse 11. Se Raio <= 0 entao 12. Escreva ("Raio não pode ser nulo ou negativo!") 13. fimse 14. Em Português, a sintaxe para tal é a seguinte:fimalgoritmo 36 Observe que se a condição do primeiro é verdadeira, a segunda condição é falsa e vice-versa, e o conjunto de instruções a ser executado se Raio <= 0 (apenas a instrução escreva ("Raio não pode ser nulo ou negativo!")) é uma alternativa para a condição Raio > 0. Para expressar isso mais facilmente, a maioria das LP permitem associar um conjunto de instruções a ser executado se a condição do comando resultar em FALSO. Utilizando o senao, o algoritmo para calcular a área de um circulo, ficaria assim: Exemplo 1. Algoritmo "Calcula Area do Circulo" 2. VAR 3. Area, Raio: Real 4. inicio 5. Escreval ("Entre com raio do círculo") 6. Leia (Raio) 7. Se Raio > 0 entao 8. Area <- PI*(Raio^2) 9. Escreva ("A área do círculo de raio ", Raio, " é ", Area) 10. senao 11. Escreva ("Raio não pode ser nulo ou negativo!") 12. fimse 13. fimalgoritmo Exemplo Algoritmo que peça ao usuário a quantia em dinheiro que tem sobrando e sugira, caso ele tenha 10 ou mais reais, que vá ao cinema, e se não tiver, fique em casa vendo TV. 1. Algoritmo "AconselhaPrograma" 2. Var 3. Dinheiro: REAL 4. inicio 5. Escreval ("*** Serviço Informatizado de Sugestões ***") 6. Escreva ("Quanto dinheiro você tem sobrando?") 7. Leia (Dinheiro) 8. Se Dinheiro >= 10 entao 9. Escreval ("Vá ao cinema hoje à noite.") 10. Senao 11. Escreval ("Fique em casa vendo TV.") 12. Fimse 13. Escreva ("Obrigado e volte sempre.") 14. Fimalgoritmo Exercícios Propostos 1. Faça um programa que leia 3 valores inteiros, determine e imprima o menor deles. 2. Faça um Programa que peça um valor e mostre na tela se o valor é positivo ou negativo. 3. Dados três valores distintos, fazer um programa que, após a leitura destes dados, coloque-os em ordem crescente. se <condição> entao <ações (uma ou mais) a serem realizadas se a condição for verdadeira> <ações (uma ou mais) a serem realizadas se a condição for falsa> Atualizada em fevereiro de 2016 37 4. Faça um Programa que peça 2 números inteiros e um número real. Calcule e mostre: a. o produto do dobro do primeiro com metade do segundo . b. a soma do triplo do primeiro com o terceiro. c. o terceiro elevado ao cubo. 5. Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas: d. Para homens: (72.7*h) - 58 e. Para mulheres: (62.1*h) - 44.7 (h = altura) f. Peça o peso da pessoa e informe se ela está dentro, acima ou abaixo do peso. 6. Dados três valores A, B, C, verificar se eles podem ser os comprimentos dos lados de um triângulo, se forem, verificar se compõem um triângulo eqüilátero, isósceles ou escaleno. Informar se não compuserem nenhum triângulo. 7 Escolha...Caso (Case) Em algumas situações é necessário termos várias soluções ligadas a respostas diferentes, neste caso o comando de alternativa simples ou composta não é uma solução prática, isto porque obrigará o programador a escrever muitas linhas de programa, além de ter que criar vários comandos de alternativas compostas e verificar a validade de suas condições para que o comando execute o caminho correto para uma determinada condição. Temos então o comando de alternativa de múltipla escolha. O funcionamento deste comando obedece a seguinte regra: Exemplo Um determinado clube de futebol pretende classificar seus atletas em categorias e para isto ele contratou um programador para criar um programa que executasse esta tarefa. Para isso o clube criou uma tabela que continha a faixa etária do atleta e sua categoria. A tabela está demonstrada abaixo: IDADE CATEGORIA De 05 a 10 Infantil De 11 a 15 Juvenil De 16 a 20 Junior De 21 a 25 Profissiona. Construa um programa que solicite o nome e a idade de um atleta e imprima a sua categoria.Algoritmo "CLASSIFICAÇÃO DE ATLETAS 1. var 2. nome, categoria : caractere escolha < expressão-de seleção > caso < exp 1 > , < exp 2 >, ... , < exp n > < lista-de-comandos- 1 > caso < exp 1 > , < exp 2 >, ... , < exp n > < lista-de-comandos- 2 > outrocaso < lista-de-comandos- 3 > fimescolha 38 3. idade : inteiro 4. inicio 5. Escreva("Nome do Atleta = ") 6. Leia (nome) 7. Escreva("Idade do Atleta = ") 8. Leia (idade) 9. Escolha idade 10. caso 5,6,7,8,9,10 11. categoria <- "Infantil" 12. caso 11,12,13,14,15 13. categoria <- "Juvenil" 14. caso 16,17,18,19,20 15. categoria <- "Junior" 16. caso 21,22,23,24,25 17. categoria <- "Profissional" 18. outrocaso 19. categoria <- "INVALIDO" 20. Fimescolha 21. Escreva ("Categoria = ",categoria) 22. Fimalgoritmo 7.1 Exercícios Propostos 1. Faça um programa para a leitura de duas notas parciais de um aluno. O programa deve calcular a média alcançada por aluno e apresentar: A mensagem "Aprovado", se a média alcançada for maior ou igual a sete; A mensagem "Reprovado", se a média for menor do que sete; A mensagem "Aprovado com Distinção", se a média for igual a dez. 2. Faça um Programa que verifique se uma letra digitada é "F" ou "M". Conforme a letra escrever: F - Feminino, M - Masculino, Sexo Inválido. 3. Faça um programa que lê as duas notas parciais obtidas por um aluno numa disciplina ao longo de um semestre, e calcule a sua média. A atribuição de conceitos obedece à tabela abaixo: Média de Aproveitamento Conceito Entre 9.0 e 10.0 A Entre 7.5 e 9.0 B Entre 6.0 e 7.5 C Entre 4.0 e 6.0 D Entre 4.0 e zero E O algoritmo deve mostrar na tela as notas, a média, o conceito correspondente e a mensagem 4. Construa um algoritmo que, tendo como dados de entrada o preço de um produto e seu código de orem, mostre o preço junto de sua procedência. Caso o código não seja nenhum dos especificados, o produto dever ser encarado como importado. Siga a tabela de códigos a seguir: Código de Origem Procedência 1 Sul 2 Norte 3 Leste 4 Oeste 5 ou 6 Nordeste Atualizada em fevereiro de 2016 39 7, 8 ou 9 Sudeste 10 até 20 Centro-Oeste 25
Compartilhar