Baixe o app para aproveitar ainda mais
Prévia do material em texto
0 Construção de Algorítmos 1 Autor(a): Simone de Abreu Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Coordenador: Emerson dos Santos Paduan São Paulo - 2016 2 Sumário Introdução à lógica de programação, tipos de dados, variáveis e comandos de entrada e saída 3 Introdução 3 Introdução à lógica de programação 4 Fases de um algoritmo 6 Tipos de Dados 7 Operadores 8 Variáveis 11 Atribuição 12 Comandos de Entrada e Saída 12 Bibliografia básica 18 Bibliografia complementar 18 3 Introdução à lógica de programação, tipos de dados, variáveis e comandos de entrada e saída Introdução O conteúdo apresentado nesta unidade tem como objetivo principal apontar os conceitos que serão abordados, direcionando-o para a consulta do material completo a ser estudado, por meio de acessos às Bibliotecas Virtuais disponí- veis na página da Universidade Anhembi Morumbi. Cada tópico aqui abordado deverá ser estudado conforme as indicações desta- cadas nos links. Siga os passos abaixo para acessar a Biblioteca da Universidade: Entre na página da Biblioteca da Universidade; Clique no ícone da Biblioteca Virtual 3.0/Ebrary/VTC, conforme figura 1; Faça o login, se necessário. Figura 1- Página da Biblioteca da Universidade 4 Introdução à lógica de programação Geralmente, ao se pensar em programação, tem-se uma ideia inicial de ser algo difícil, complicado e até mesmo chato. Mas programar é uma arte! E está dire- tamente relacionado a explorar a criatividade, a ter concentração, a aperfeiçoar uma habilidade com o passar do tempo e com a prática. Desde os tempos primitivos, o homem se utiliza do raciocínio lógico para a rea- lização de suas atividades. Isso é comprovado pelo fato de ele ter estabelecido sequências adequadas para a realização de suas tarefas com sucesso (PUGA & RISSETTI, 2009). Um algoritmo é uma sequência finita de ações (instruções) encadeadas se- gundo uma determinada lógica, com o objetivo de solucionar um problema es- pecífico. Ou seja, um algoritmo deve ter uma sequência de passos logicamente estabelecidas e com um início e um fim bem definidos. Já uma instrução é a informação que indica a um computador uma ação ele- mentar a ser executada. A instrução deve ser bem precisa para que o compu- tador consiga processá-la. Analise o seguinte cenário: Um robô está no início de um labirinto e precisa ser guiado até o fim dele. Ao formular algumas instruções para o robô começar a sua jornada, pode-se ter: Guia: vire à direita! Robô: virando para a direita, virando para a direita, virando para a direita... A instrução inicial que o guia deu ao robô não é precisa! Portanto, o robô ficará infinitamente girando para a direita. Uma instrução mais adequada do guia para o robô seria: vire 90o à direita. Perceba o quanto é importante ter clareza na definição das instruções de um algoritmo! 5 Agora, analise um exemplo clássico de algoritmo: como fazer um bolo de cho- colate? Para resolver esse problema, primeiro tem-se de saber o que é preciso para fazer um bolo de chocolate – quais ingredientes? Depois é preciso saber como preparar o bolo de chocolate – modo de fazer. Geralmente os ingredientes de um bolo de chocolate são: farinha, ovos, leite, açúcar, chocolate, manteiga, maisena e fermento. Mas quais passos devem ser seguidos para preparar o bolo? Essa ordem é o modo de preparo, ou o algo- ritmo para fazer um bolo de chocolate. Por exemplo: Bater os ovos com a manteiga Adicionar o açúcar e a farinha aos poucos Adicionar o leite e bater Adicionar o chocolate Misturar o fermento Despejar a mistura em uma forma untada Levar ao forno para assar por 30 minutos Retirar do forno e comer Os passos devem seguir uma sequência lógica! Se os passos forem invertidos, provavelmente, ao final, não haverá um bolo de chocolate. Bibliografia a ser acessada http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788576052074/pages/1 (Capítulo 1 do livro Lógica de programação e estruturas de dados com aplicações em Java, de Puga e Rissetti). http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788564574168/pages/1 (Capítulo 1 do livro Fundamentos da programação de computado- res, de Ascencio e Campus). http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/1 http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/1 http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/1 http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/1 6 Fases de um algoritmo A sequência de fatos que fundamentam a lógica computacional é: a entrada dos dados que serão processados para obter a saída. Os dados que entram em processamento sofrem transformações resultantes do processo e uma saída é produzida, representando a solução de um problema (PUGA & RISSETTI, 2009). Todo algoritmo atua em um princípio básico de três fases (figura 2). São elas: Figura 2 – Fases de um algoritmo Dado o seguinte problema: Calcular a média aritmética de duas notas. O que corresponde às fases do algoritmo? 1. Quais são as entradas? As entradas são as duas notas: nota1 e nota2. 2. Quais são as saídas, ou seja, aonde se quer chegar? O que o problema pede é o resultado do cálculo da média de duas notas. 3. Qual é o processamento? O próprio cálculo da média, onde média = (nota1 + nota2) / 2. Mas por que identificar primeiro a entrada e a saída? É simples: esses dados estarão bem explícitos no enunciado do algoritmo. Sabendo o ponto de partida e aonde se quer chegar, é só traçar o caminho mais adequado. Bibliografia a ser acessada http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788576052074/pages/49 (Capítulo 5 do livro Lógica de programação e estruturas de dados com aplicações em Java, de Puga e Rissetti). http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/49 http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/49 7 Tipos de Dados Para representar qualquer dado em um algoritmo, utilizam-se as constantes e os tipos de dados. Os dados são os valores que serão utilizados para a resolu- ção do problema, podendo ser: fornecidos pelo usuário do programa, origina- dos de processamentos (cálculos), entradas de outros programas, entre outros. Constantes são valores que não sofrem alterações ao longo do desenvolvi- mento do algoritmo ou da execução de um programa. Por exemplo, o valor 3,1415 representa a constante PI e permanecerá fixo até o final da execução do algoritmo (PUGA & RISSETTI, 2009). Outro exemplo seria o divisor 2 para calcular a média aritmética entre duas notas. Independentemente dos valores das no- tas, a divisão sempre será por dois. Os tipos de dados representam qualquer dado/informação em um algoritmo. São classificados como: literal, inteiro, real e lógico. A linguagem de programação Java será utilizada como ferramenta para a cons- trução de algoritmos. Sendo assim, é importante saber os tipos de dados mais utilizados da linguagem. São eles: char, String, int, float, double e boolean. A Tabela 1 apresenta exemplos de dados de um algoritmo e os tipos de dados relacionados. Bibliografia a ser acessada http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788576052074/pages/37 (Capítulo 4 do livro Lógica de programação e estruturas de dados com aplicações em Java, de Puga e Rissetti). Observe neste capítulo a tabela 4.1 – Tabela de tipos de dados que apresenta os tipos de dados primitivos e sua equivalência na lin- guagem Java. http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/37 http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/37 8 Tabela 1 – Representação de dados Dado/InformaçãoTipo de dado apropriado Nomes de empresas, nomes de pessoas e textos String - Uma cadeia de caracteres representada por aspas (“ ”) Sexo de pessoa, alternativas de uma questão char – único caractere represen- tado por apóstrofo (‘ ’) Idade de uma pessoa, número de uma residência ou qualquer valor pertencente ao conjunto dos números inteiros int Altura de uma pessoa, peso de um pro- duto e o preço de um carro ou qualquer valor pertencente ao conjunto dos núme- ros reais. double – utiliza notação ponto ( . ) para separar casas decimais Qualquer valor verdadeiro ou falso boolean Operadores Os operadores são utilizados para representar expressões de cálculos, compa- ração, condição e atribuição em um algoritmo. Os operadores aritméticos servem para representar qualquer tipo de cálculo matemático em um algoritmo. São muito parecidos com os operadores da ma- temática em si, mas existem algumas diferenças (PUGA & RISSETTI, 2009). Por exemplo, para representar a multiplicação, é utilizado o operador asterisco (*). Os operadores matemáticos mais comuns são: adição, subtração, multiplicação, divisão e módulo. O operador módulo (%) é utilizado para representar o resto de uma divisão en- tre valores inteiros. Por exemplo, a operação 23 % 4 tem como resultado 3, que é o resto da divisão de 23 por 4. 9 Os operadores relacionais são utilizados para estabelecer uma relação de com- paração entre valores ou expressões. O resultado dessa comparação é sempre um valor lógico (booleano) verdadeiro ou falso (true / false) (PUGA & RISSETTI, 2009). Como operadores relacionais, tem-se: maior, maior ou igual, menor, menor ou igual, igual a e diferente de. Bibliografia a ser acessada http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788576052074/pages/41 http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788576052074/pages/43 (Capítulo 4 do livro Lógica de programação e estruturas de dados com aplicações em Java, de Puga e Rissetti). Observe neste capítulo o tópico 4.4.2 – Operadores aritméticos. Co-nheça também os operadores de incremento e decremento. Atente-se às representações em Java. Observe também o Tópico 4.4.5 – Precedência dos operadores. Bibliografia a ser acessada http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788576052074/pages/41 (Capítulo 4 do livro Lógica de programação e estruturas de dados com aplicações em Java, de Puga e Rissetti). Observe neste capítulo o tópico 4.4.3 – Operadores relacionais. Ob-serve que a igualdade é representada pelo operador ( == ). Atente-se às representações em Java. http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/41 http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/41 http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/43 http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/43 http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/41 http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/41 10 Os operadores lógicos são utilizados para concatenar ou associar expressões que estabelecem uma relação de comparação entre valores. O resultado dessas expressões é sempre um valor lógico (booleano) verdadeiro ou falso (true / false) (PUGA & RISSETTI, 2009). A tabela-verdade é utilizada para avaliar uma expressão lógica. Segundo Forbel- lone e Eberspächer (2005), uma tabela-verdade é o conjunto de todas as possi- bilidades combinatórias entre os valores de diversas variáveis lógicas, as quais se encontram em apenas duas situações (V ou F – true ou false), e um conjunto de operadores lógicos. Como operadores lógicos tem-se: E – conjunção (representação em Java: && ): Se TODAS as expressões condicionais forem verdadeiras, o resultado é VERDADEIRO; OU – disjunção (representação em Java: ||): Se TODAS as expressões condicionais forem falsas, o resultado é FALSO; NÃO – negação (representação em Java: !): Se a expressão condicional for falsa, o resultado é VERDADEIRO. Caso contrário é FALSO. A figura 3 apresenta a tabela-verdade para os operadores && , || e !. Figura 3 – Tabela-verdade operadores &&, || e ! Bibliografia a ser acessada http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788576052074/pages/41 (Capítulo 4 do livro Lógica de programação e estruturas de dados com aplicações em Java, de Puga e Rissetti). Observe neste capítulo o tópico 4.4.4 – Operadores lógicos. Atente- se às representações em Java. http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/41 http://anhembi.bv3.digitalpages.com.br/users/publications/9788576052074/pages/41 11 Variáveis As variáveis são utilizadas para representar os dados necessários para a reso- lução de um problema. As variáveis permitem que dados de entrada ou dados gerados em um processamento sejam armazenados na memória principal do computador temporariamente. No decorrer da execução de um algoritmo, o valor de uma variável pode ser alterado. Daí o nome variável. Mas uma variável pode assumir apenas um único valor a cada instante de tempo. Uma variável pode ser usada para armazenar dados de entrada, então deve-se definir qual tipo de dado ela vai armazenar. Portanto, toda variável em um algo- ritmo deve corresponder a um tipo de dado. Assim, uma variável do tipo int só poderá armazenar valores do tipo inteiro. Para declarar uma variável, utilizar a seguinte sintaxe (figura 4): Figura 4 – Sintaxe de declaração de variáveis O primeiro exemplo de sintaxe é utilizado para declarar uma única variável. O segundo exemplo de sintaxe mostra como declarar várias variáveis de um mesmo tipo de dado. Bibliografia a ser acessada http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788564574168/pages/7 http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788564574168/pages/9 (Capítulo 1 do livro Fundamentos da programação de computado- res, de Ascencio e Campos). Observe neste capítulo o tópico 1.5 – Conceito de variável Observe também o tópico 1.7 – Formação de identificadores, para saber as regras de nomeação de variáveis. http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/7 http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/7 http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/9 http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/9 12 Atribuição O operador de atribuição ( = ) é responsável por armazenar um valor em uma variável declarada anteriormente. Quando um valor é atribuído a uma variável, ela irá guardar esse valor até que seja modificada. O valor fornecido para uma variável deve ser compatível com o tipo de dado usado na declaração da variável. Portanto, em uma variável do tipo int, somente se podem atribuir valores inteiros. A figura 5 apresenta alguns exemplos de atribuição. Supor que a variável nome é do tipo String, idade é int, preco é float, sexo é char, onibusLotado é boolean e soma é float. Figura 5 – Exemplos de atribuição de valores Comandos de Entrada e Saída Como Java é uma linguagem orientada a objeto, todo o código de um programa deve estar definido dentro de uma classe. Especificamente, deve estar definido Bibliografia a ser acessada http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788564574168/pages/31 (Capítulo 3 do livro Fundamen- tos da programação de computadores, de Ascencio e Campos). Observe neste capítulo o tópico 3.4.1 – Declaração de variáveis em Java. http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/31 http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/31 13 dentro de um método especialda classe chamado main(). Esse método é o ponto de partida na execução de um programa em Java. A figura 6 apresenta a estrutura básica de um algoritmo. Figura 6 – Estrutura de um algoritmo É dentro do bloco ( { } ) do método main() que devem estar as instruções para a resolução do algoritmo. O teclado é o dispositivo padrão de entrada de dados. Os dados lidos do teclado podem ser armazenados nas variáveis declaradas em um algoritmo. Para realizar a entrada de dados é necessário definir um buffer para guardar os dados digitados no teclado e depois transferi-los para a memória principal – as variáveis do algoritmo. Para usar a classe Scanner é preciso importar o pacote import Java.util.Scanner. A figura 7 apresenta a sintaxe para definir um buffer de entrada de dados. Bibliografia a ser acessada http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788564574168/pages/31 (Capítulo 3 do livro Fundamentos da programação de computado- res, de Ascencio e Campos). Observe neste capítulo o tópico 3.4 – Estrutura sequencial em Java. http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/31 http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/31 14 Figura 7 – Definição do buffer de teclado Para cada tipo de dado, existe um método para realizar a entrada de dados, conforme apresenta a tabela 2. Tabela 2 – Métodos para a entrada de dados Para exibir mensagens em um algoritmo, será utilizado o comando Sys- tem.out.println(“ ”). Esse comando permite imprimir no monitor dados de uma variável, frases, resultados de processamentos e também mensagens para soli- citar dados de entrada. A figura 8 apresenta a classe AloMundo, que exibe na tela duas Strings. Figura 8 – Impressão de Strings Bibliografia a ser acessada http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788564574168/pages/33 (Capítulo 3 do livro Funda- mentos da programação de computadores, de Ascencio e Cam- pos). Observe neste capítulo o tópico 3.4.4 – Comando de entrada em Java http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/33 http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/33 15 Após a execução do algoritmo AloMundo, tem-se a seguinte saída (figura 9). Figura 9 – Saída do algoritmo AloMundo Na String de impressão do comando println, pode-se utilizar o operador de con- catenação (+) para imprimir diferentes tipos de dados, conforme apresenta a figura 10. Figura 10 – Exemplo de concatenação na String de impressão Após a execução do algoritmo DadosCarro, tem-se a seguinte saída (figura 11): Figura 11 – Saída do algoritmo DadosCarro 16 A figura 12 apresenta um algoritmo completo, com entrada, processamento e saída. O algoritmo SomaDasIdades recebe os dados: nome e idade de dois ami- gos, calcula a soma das duas idades e imprime o resultado no final. Figura 12 – Exemplo de entrada/processamento/saída Após a execução do algoritmo SomaDasIdades, tem-se a seguinte saída (figura 13): Bibliografia a ser acessada http://anhembi.bv3.digitalpages.com.br/users/publica- tions/9788564574168/pages/33 (Capítulo 3 do livro Fundamen- tos da programação de computadores, de Ascencio e Campos). Observe neste capítulo o tópico 3.4.5 – Comando de saída em Java. http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/33 http://anhembi.bv3.digitalpages.com.br/users/publications/9788564574168/pages/33 17 Figura 13 – Saída do algoritmo SomaDasIdades 18 Bibliografia básica ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos de Programação de Compu- tadores. 2. ed. São Paulo: Pearson Prentice Hall, 2007. PUGA, S; RISSETTI, G. Lógica de programação e estruturas de dados com aplica- ções em Java. 2. ed. São Paulo: Pearson Prentice Hall, 2009. Bibliografia complementar FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de Programação: a construção de algoritmos e estruturas de dados. 2. ed. São Paulo: Prentice Hall, 2005.
Compartilhar