Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lógica de Programação Análise e Desenvolvimento de Sistemas 1º semestre 1º Semestre Sumário da Disciplina Análise e Desenvolvimento de Sistemas 1º semestre 1. Lógica e algoritmos .......................................................................11 Motivação ............................................................................................................ 11 1.1 Algoritmo ...................................................................................................... 11 1.2 O processo para resolver problemas computacionais .................. 14 1.3 Uma pitada de Python.............................................................................. 14 Lista de exercícios ............................................................................................. 15 2. Variáveis, tipos, entrada e saída de dados .............................17 Motivação ............................................................................................................ 17 2.1 Variáveis e identificadores ....................................................................... 17 2.1.1 Palavras reservadas em Python: ............................................................................18 2.2 Tipos de dados ............................................................................................ 19 2.3 Números ........................................................................................................ 20 2.4 Strings ............................................................................................................. 20 2.5 Entrada e saída de dados ......................................................................... 21 Exercícios propostos ........................................................................................ 23 Atividades de laboratório ............................................................................... 25 3. Operadores, expressões lógicas e estruturas sequenciais 27 3.1 Operadores aritméticos ........................................................................... 27 3.1.1 Expressões e tipos de dados ...................................................................................30 3.2 Tipo de dado ................................................................................................ 31 3.3 Funções matemáticas ............................................................................... 32 3.4 Estrutura sequencial .................................................................................. 34 Exercícios propostos ........................................................................................ 35 4. Operadores e expressões lógicas, estruturas condicionais simples e composta ...........................................................................39 Motivação ............................................................................................................ 39 4.1 O que é uma estrutura de controle? .................................................... 39 4.2 Expressões lógicas ..................................................................................... 39 4.3 Operadores relacionais ............................................................................ 40 4.4 Operadores lógicos .................................................................................... 41 4.5 Precedência dos operadores .................................................................. 43 4.6 Expressões booleanas equivalentes .................................................... 44 4.7 Estruturas de seleção ou condicional ................................................. 45 4.8 Estrutura condicional simples................................................................ 45 4.9 Estrutura condicional composta ........................................................... 46 4.10 Estrutura de seleção encadeada ........................................................ 47 4.11 Seleções aninhadas ou encadeadas (múltiplos if-else aninha- dos) ......................................................................................................................... 48 4.12 A estrutura encadeada if-elif-else ...................................................... 50 Atividades de laboratório ............................................................................... 51 Exercícios propostos ........................................................................................ 58 5. Estrutura de repetição ou laço indefinido - while .............64 Introdução ........................................................................................................... 64 5.1 Loop indefinido ou declaração while ................................................. 64 5.2 Variavel contador ........................................................................................ 66 5.3 Variável acumulador .................................................................................. 66 5.4 Loop infinito ................................................................................................. 67 Atividades de laboratório ............................................................................... 71 6. Estrutura de repetição ou laço definido - for .......................74 Introdução ........................................................................................................... 74 Sumário da Disciplina Análise e Desenvolvimento de Sistemas 1º semestre 6.1 Loop definido ou declaração for ........................................................... 74 Atividades de laboratório ............................................................................... 76 7. Funções em Python ......................................................................81 Introdução ........................................................................................................... 81 7.1 Rotina e funções ......................................................................................... 81 7.2 Solicitando a execução de uma rotina ............................................... 83 7.3 Retorno de função ..................................................................................... 85 8. Listas em Python ............................................................................98 Introdução ........................................................................................................... 98 8.1 O que é uma lista? ...................................................................................... 98 8.2 Operações em uma lista .......................................................................... 98 8.3 Listas em Python.......................................................................................101 8.4 O que é uma sequência?........................................................................105 8.5 O que é uma tupla?..................................................................................105 8.6 Operações em sequências.....................................................................106 8.7 Percorrendo uma sequencia.................................................................110 9. Busca e ordenação.......................................................................116 Introdução..........................................................................................................116 9.1 O que é uma algoritmo de busca?......................................................116 9.2 Métodos de ordenação...........................................................................119 Lista de exercícios............................................................................................120 Referências..........................................................................................121 Sumário da Disciplina Análise e Desenvolvimento de Sistemas 1º semestre Análise e Desenvolvimento de Sistemas 1º semestre O Professor 7 O professor ANA CRISTINA DOS SANTOS Doutora em Engenharia Elétrica na área de ComputaçãoGráfica e Processamento de Imagens pela Escola Politécnica da Universidade de São Paulo (POLI-USP). Mestre em Ciências de Computação e Matemática Computacional pela USP de São Carlos (ICMC-USP) e Licenciada em Matemática pela UNESP. Foi pesquisadora na Divisão de Informática do Instituto do Coração da Faculdade de Medicina da USP (INCOR-FMUSP). É sócia-diretora da empresa AiiA Serviços e Soluções na área de consultoria em Tecnologia da Informação. Possui experiência na gestão de cursos de graduação na área de Computação e como docente do ensino superior nas áreas de Computação, Engenharia e Tecnologia da Informação. VANDERSON BOSSI Mestrando em Ensino de Ciências pela Universidade Cruzeiro do Sul; Especialista em Engenharia de Software pela Faculdade Impacta de Tecnologia e Tecnólogo em Informática pelo Instituto de Ensino Superior de Santo André IESA. Com mais de 10 anos de experiência em Desenvolvimento de Sistemas e Arquitetura de Software utilizando tecnologias como Java, PHP, .NET (c#) e Banco de Dados SQL Server atuando em empresas como Ticket Serviços, ThyssenKrupp Metalúrgica e General Motors do Brasil como Arquiteto de software. Atualmente professor na Faculdade Impacta de Tecnologia. GILBERTO ALVES PEREIRA Mestre em Engenharia Elétrica pela Escola Politécnica da Universidade de São Paulo (POLI-USP). Bacharel Em Engenharia Elétrica Escola Politécnica da Universidade de São Paulo (POLI- USP). Bacharel em Administração de Empresas pela Faculdade de Economia e Administração da Universidade de São Paulo (FEA-USP). Atou em grandes empresas na área de Tecnologia da Informação – Desenvolvimento de Sistemas: Grupo Abril, Banco Santander, Banco Real, Banco Itau, Resource IT, BRQ, Claro-Net. Atuou como empreendedor, desenvolvendo e prestando consultoria de sistemas de gestão em empresas de pequeno e médio porte. Possui experiência como docente do ensino superior nas áreas de Sistemas de Informação e Tecnologia da Informação. Apresentação da Disciplina: Lógica de Programação Análise e Desenvolvimento de Sistemas 1º semestre 9 Apresentação Objetivos Competências da disciplina Entender o que é Linguagem de Programação, Paradigmas de Programação e diferenciar tipos de linguagem, compilação e interpretação. Compreender como a lógica está relacionada aos algoritmos, programas e linguagens de programação. Conhecer os principais componentes e estruturas de uma linguagem de programação, como variáveis, tipos primitivos, operadores aritméticos, coleções, estruturas de decisão, estruturas de repetição, módulos e classes. Saber compreender um problema e como resolvê-lo pela lógica e linguagem de programação Python. Conhecer a sintaxe da linguagem Python, e como escrever os principais componentes e estruturas nesta linguagem. Possibilitar ao aluno executar comandos para executar tarefas no shell na linguagem Python. Desenvolver algoritmos e programas de computador na linguagem Python, utilizando variáveis, tipos primitivos, operadores aritméticos, coleções, estruturas de decisão, estruturas de repetição, funções e listas lineares. Desenvolver a técnica de refinamentos sucessivos na solução de problemas, aprendendo a decompor um problema em sub- tarefas ou funções. Lógica de Programação é a técnica de dsenvolvimento de programas utilizando ferramentas de programação para atingir determinados objetivos dentro de regras baseadas na lógica matemática e em outras teorias básicas da Ciencia da Computação e que depois são portadas para a Linguagem de Programação possibilitando a construção de softwares. Lógica de Programação1º Semestre 10 Capítulo 1 - lógica e algoritmos 11 Análise e Desenvolvimento de Sistemas 1º semestre 11 1. Lógica e algoritmos Motivação A tecnologia computacional tem mudado e está continuamente mudando a vida das pessoas. Essencialmente todos os aspectos da vida têm sido impactados pela computação. Áreas relacionadas com computação estão emergindo em praticamente em todas as áreas de conhecimento: Exemplos: biologia, química, medicina, jornalismo, arquitetura, música, fotografia, matemática, ciências sociais, manufatura auxiliada por computador, inteligência computacional, têxtil, economia. O campo de ciência de computação é fundamentalmente resolver problemas computacionais e linguagens de programação e computadores são ferramentas, porém não transmite a sua extensão e diversidade, como as suas várias áreas de estudo: Engenharia de software (incluindo o projeto e implementação de sistemas de software), gerenciamento de banco de dados, redes de computadores, computação gráfica, segurança da informação, arquitetura de computadores, interação computador e homem, robótica, inteligência artificial, dentre outras. A definição de ciência da computação como resolução de problemas computacionais inicia com a definição de algoritmo. 1.1 Algoritmo O termo algoritmo pode ser visto desde o século ix. Foi nesta época que o cientista, astrônomo e matemático persa abū ‘abd allāh muhammad ibn mūsā al-khwārizmī usou pela primeira vez o termo para indicar regras de operações aritméticas utilizando algarismos indoarábicos. No século xii, adelardo de bath traduziu o termo para o latim algorithmi. De lá para cá, o termo evoluiu bastante incluindo todos os procedimentos definidos para resolver problemas ou realizar tarefas. A formalização da noção de algoritmo ocorreu em 1936 com os trabalhos de alan turing e alonzo church, que desenvolveram independentemente os modelos de máquinas de turing e cálculo lambda. Do ponto de vista computacional, um algoritmo pode ser visto como um conjunto de regras e procedimentos lógicos perfeitamente definidos que levam à solução de um problema em um número finito de passos. Donald knuth, um dos pesquisadores mais respeitados em algoritmos, indica uma lista de cinco propriedades que são requisitos para algoritmos: Finitude: um algoritmo deve sempre terminar após um número finito de etapas (ou passos). Definição: cada passo de um algoritmo deve ser definido com precisão. As ações a serem executadas deverão ser especificadas rigorosamente e sem ambiguidades. Entrada: valores que são dados ao algoritmo antes que ele inicie. Saída: os valores resultantes das ações do algoritmo a partir de uma determinada entrada. Eficácia: todas as operações a serem realizadas pelo algoritmo devem ser suficientemente básicas para poderem, em princípio, ser feitas com precisão e em um período de tempo finito por um homem usando papel e lápis. Lógica de Programação1º Semestre 12 Embora os requisitos de knuth sejam intuitivos, falta-lhes rigor formal. A formalidade pode ser conseguida com o uso de lógica. Assim, vamos exigir que um algoritmo seja uma sequência lógica de passos com começo, meio e fim. Comumente, esta lógica é conhecida como lógica de programação e isto ocupará grande parte de nossa disciplina. De um ponto de vista mais geral, podemos dizer que lógica é uma parte da filosofia que trata das formas do pensamento em geral (dedução, indução, hipótese, inferência, dentre outros) e das operações intelectuais que visam à determinação do que é verdadeiro ou falso. Dentre outras coisas, a lógica pode produzir algoritmos para estas formas e operações. A fim de resolver um problema computacionalmente, duas coisas são necessárias: uma representação que capta todos os aspectos relevantes do problema, e um algoritmo que resolve o problema pelo uso da representação. Vamos considerar o problema conhecido como o homem, o repolho, o bode e o lobo. Um homem vive no lado leste de um rio. Ele deseja trazer um repolho, um bode e um lobo a uma vila, no lado oeste do rio, para vender. Contudo, seu barco é grande o suficiente somente para ele e, ou o repolho, ou o bode, ou o lobo. Além disso, o homem não pode deixar o bode sozinho com o repolho porque o bode vai comer o repolho, e ele não pode deixar o lobo sozinho com o bode porque o lobo vai comer o bode.Como o homem pode resolver seu problema? Há uma forma algorítmica fácil para resolver este problema com simplicidade, tentando todas as combinações possíveis de itens que podem ser levados e trazidos de uma margem à outra do rio. Tentar todas as soluções possíveis para um determinado problema é referido como “abordagem de força bruta”. O que seria uma representação adequada para este problema? Uma vez que apenas os aspectos relevantes do problema precisam ser representados, todos os detalhes irrelevantes podem ser omitidos. A representação que deixa de fora detalhes do que está sendo representado é uma forma de abstração. O uso de abstração é prevalente em computação. Neste caso, a cor do barco é relevante? A largura do rio? O nome do homem? Não, a única informação relevante é onde cada item está a cada passo. A localização coletiva de cada item, neste caso, refere-se ao estado do problema. Assim, o estado inicial do problema pode ser representado como se segue. homem repolho bode lobo 0 0 0 0 Nesta representação, o número 0 indica que cada objeto correspondente está no lado leste do rio. Se o homem fosse atravessar o bode com ele, por exemplo, então a representação de o novo estado de problema seria 13 Análise e Desenvolvimento de Sistemas 1º semestre 13 homem repolho bode lobo 1 0 1 0 Em que o número 1 indica que o objeto correspondente está no lado oeste do rio. Neste caso, o homem e o bode. (As localizações do repolho e lobo são deixadas inalteradas.) Uma solução para este problema é uma sequência de passos que converte o estado inicial, 0 0 0 0 Em que todos os objetos estão no lado leste do rio, para o estado final, 1 1 1 1 Em que todos os objetos estão no lado oeste do rio. Cada etapa corresponde ao homem atravessando o rio com um objeto em particular (ou o homem atravessa sozinho). Exercício 1 A partir do estado inicial, com todos os elementos na margem leste do rio, escreva uma sequência de passos que leve todos os elementos para a margem oeste do rio, levando em consideração tudo o que foi descrito anteriormente. Lógica de Programação1º Semestre 14 Exercício 2 Um outro exemplo de problema computacional. Suponha que precisamos escrever um programa para exibir o calendário mensal de qualquer mês e ano. Representação: o mês e o ano, o número de dias de cada mês, os nomes dos dias da semana, o dia da semana e em qual dia da semana cai o primeiro dia do mês. Como obter essas informações? A maioria desses valores podem ser dados pelo usuário, tal como mês e o ano, ou serem determinados, por exemplo, o número de dias de um dado mês. A parte do problema que dá mais trabalho é determinar o dia da semana que uma dada data cai. Para isso você precisará de um algoritmo. Exercício proposto 1 Escreva uma sequência de passos para obter dois números, calcular e apresentar a soma dos dois números. 1.2 O processo para resolver problemas computacionais A resolução de um problema computacional não envolve simplesmente o ato de programar um computador. Ele é um processo, sendo que a programação é apenas um dos passos. Antes de escrever um programa é preciso entender e pensar a solução do problema, depois desenvolver o projeto, escrever e testar a solução encontrada. Uma vez que o algoritmo tenha sido definido, podemos simulá-lo com ferramentas como scratch, visualg ou raptor ou implementá-lo diretamente em alguma linguagem de programação (Python, c, c++, java, pascal, php, dentre outras). Nossa disciplina será focada em Python, uma das linguagens mais difundidas no mercado. Na realidade, vocês verão que a linguagem de programação (normalmente) é o que menos importa. Se a lógica do algoritmo for bem feita, poderemos implementá-lo na maioria das linguagens de programação conhecidas. 1.3 Uma pitada de Python... A linguagem Python foi escolhida por ser uma linguagem muito versátil, usada não só no desenvolvimento web, mas em muitos outros tipos de aplicações. Embora simples, é também uma linguagem poderosa, podendo ser usada para administrar sistemas e desenvolver grandes projetos. É uma linguagem clara e objetiva, pois vai direto ao ponto, sem rodeios. Na página oficial do Python no brasil (http://www.Python.Org.Br/wiki/empresasPython), é possível verificar algumas empresas que utilizam a linguagem. Então o leitor deste material estará aprendendo a programar em uma linguagem que poderá utilizar na prática e não ficará apenas na teoria. O nome Python é uma homenagem ao grupo humorístico inglês monty Python criadores e intérpretes da série cômica monty Python’s flying circus (sucesso na década de 1970). Apesar de sua sintaxe simples e clara, Python oferece muitos recursos disponíveis também em linguagens mais complexas como java e c++, como por exemplo: programação orientada a objetos, recursos avançados de manipulação de textos, listas e outras estruturas de dados, possibilidade http://www.python.org.br/wiki/EmpresasPython 15 Análise e Desenvolvimento de Sistemas 1º semestre 15 de executar o mesmo programa sem modificações em várias plataformas de hardware e sistemas operacionais. Python é software livre, ou seja, pode ser utilizado gratuitamente, graças ao trabalho da Python foundation (http://www.Python.Org/) e de inúmeros colaboradores. Python pode ser utilizada em praticamente qualquer arquitetura de computadores ou sistema operacional, como linux, microsoft windows ou mac os x. Vamos começar... Print(“hello, world!”) Temos uma linha de código onde a função print é usada para exibir a mensagem na tela: Hello, world! Ou ainda, usada para exibir o valor de uma variável: A = 10 Print(a) Neste caso, a variável a recebe o valor 10. Em seguida, o conteúdo de a é exibido na tela. Podemos, também, pedir uma informação ao usuário. A função input é usada para isto: Nome = input() Idade = int(input()) Exercício 3 Escrever, em Python, um programa que calcula e apresenta a soma de dois números. Exercício proposto 2 Escrever, em Python, um programa que calcula e apresenta o dobro, o triplo e o quadrado de um número. Lista de exercícios Faça um programa que peça as 4 notas de atividades contínuas e mostre a média. Lembrando que, o total de atividades contínuas consideradas para o cálculo da média será um total de sete). Faça um programa que converta metros para milímetros. Faça um programa que peça o raio de um círculo, calcule e mostre sua área. Faça um programa que calcule a área de um quadrado, em seguida mostre o dobro desta área para o usuário. Faça um programa que pergunte quanto você ganha por hora e o número de horas trabalhadas no mês. Calcule e mostre o total do seu salário no referido mês. http://www.python.org/ Lógica de Programação1º Semestre 16 Capítulo 2 - variáveis, tipos, entrada e saída de dados 17 Análise e Desenvolvimento de Sistemas 1º semestre 17 2. Variáveis, tipos, entrada e saída de dados Motivação A geração, coleção e análise de dados é a força motriz no mundo de hoje. A enorme quantidade de dados que está sendo criada é impressionante. Redes de lojas geram terabytes (tb = 1012 bytes) de informações do cliente, à procura de padrões de compra. Usuários do facebook criaram 40 bilhões de fotos que requerem mais que um petabyte (pb = 1015 bytes) de armazenamento. Certo radiotelescópio deverá gerar um exabyte (eb = 1018 bytes) de informações de quatro em quatro horas. A corrente quantidade de dados criados a cada ano é estimada como sendo quase dois zettabytes (zb = 1021 bytes), mais do que dobrando a cada dois anos. Fonte: Google Images Muitas vezes, em nossos programas precisamos reservar espaço na memória para guardar valores que o programa acessará e modificará. A este espaço de memória, devidamente rotulado por um nome (identificador), chamamos variável. Quando o espaço de memória possui um valor que não será modificado durante o programa, o chamamos de constante. Quando queremos guardar um dado na memória, devemos classificá-lo quanto ao seu tipo. Pense nosconjuntos matemáticos, tais como inteiros, reais... 2.1 Variáveis e identificadores Uma variável tem um nome (identificador) que está associado a um espaço em memória que armazena um valor. Uma variável pode receber diferentes valores durante a execução de um programa, por isso o nome “variável”. Exemplo: >>> Num = 1 >>> Num 1 >>> Num = 2 >>> Num 2 Lógica de Programação1º Semestre 18 num 1 num 2 >>> Mensagem = “alo, mundo!” >>> Mensagem ‘Alo, mundo!’ Valores são atribuídos às variáveis usando o operador de atribuição (=). Exercício 1 O que será exibido ao digitarmos as seguintes linhas de comando? >>> num = 10 >>> num >>> num = 20 >>> num >>> k = num >>> k >>> num >>> k = k + 1 >>> k >>> num Um nome ou identificador de uma variável é formado por uma sequência de um ou mais caracteres. Regras: Pode conter apenas letras, dígitos e underscores (sublinhas); Pode começar por uma letra ou underscore; Não é permitido o uso de outros caracteres especiais (por exemplo, espaço); Não é permitido o uso de palavras reservadas da linguagem a ser utilizada; O identificador deve ser conciso, porém descritivo (idade é melhor que i, tamanho_nome é melhor que tamanho_do_nome_da_pessoa). 2.1.1 Palavras reservadas em Python: and as assert break class continue def 19 Análise e Desenvolvimento de Sistemas 1º semestre 19 del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield False none True Exercício 2 Analise os identificadores e responda o motivo dos identificadores inválidos: Identificadores válidos Identificadores inválidos Motivo totalVenda ‘totalVenda’ totalvenda total venda venda2016 2016Venda Exercício proposto 1 O que será exibido ao digitarmos as seguintes linhas de comando? >>> and = 1000 >>> And = 1000 >>> print (“hello”) >>> print = 10 >>> print (“hello”) 2.2 Tipos de dados Saber qual é o tipo de dado mais adequado para ser armazenado em uma variável é muito importante para garantir a resolução de um problema. Há um conjunto predefinido de tipos de dados chamados de tipos embutidos. Vejamos alguns deles: Lógica de Programação1º Semestre 20 2.3 Números Um dado numérico é composto por uma sequência de dígitos (0 a 9), um sinal opcional (+ ou –) e um possível ponto decimal (usa-se o ponto e não a vírgula para separar a parte inteira da fracionária). São classificados como inteiro ou de ponto flutuante. Exemplos: Corretos IncorretosInteiro Ponto flutuante 5 5. 5.0 0.125 5,03 2500 2500. 2500.0 2500.125 2,500 2,500.125 +2500 +2500. +2500.0 +2500.125 +2,500 +2,500.125 -2500 -2500. -2500.0 -2500.125 -2,500 -2,500.125 Limite de variação e precisão na representação de números Para números inteiros, Python utiliza um sistema de precisão ilimitada. Já o número de ponto flutuante tem variação e precisão limitada – usa o formato padrão de dupla precisão – fornecendo uma variação de 10-308 a 10308 com 16 a 17 dígitos de precisão. Para indicar uma variação tão grande de valores, números de ponto flutuante podem ser representados em notação científica: 9.0045602E+5 (9.0045602 X 105, 8 dígitos de precisão) 1.006249505236801E8 (1.006249505236801 X 108, 16 dígitos de precisão) 4.239E-16 (4.239 X 10-16, 4 dígitos de precisão) 2.4 Strings Uma string representa uma sequência de caracteres (letras, dígitos, símbolos especiais). Em Python, as strings podem ser delimitadas por um par de aspas simples ( ’ ) ou duplas ( ” ). Exemplos: “Olá” ‘Faculdade impacta de tecnologia’ ‘Avenida rudge, 315’ Exercício 3 O que será exibido ao digitarmos as seguintes linhas de comando? 21 Análise e Desenvolvimento de Sistemas 1º semestre 21 >>> 0.1024 >>> .1024 >>> 1,024.00 >>> 1024 >>> 1,024 >>> -1024 >>> 1.2e200 >>> 10e3 >>> 10e-2 >>> ‘Let’s go!’ >>> “Let’s go!” 2.5 Entrada e saída de dados Os programas que iremos escrever poderão obter e apresentar dados aos usuários. Já vimos, em exemplos anteriores, a função print (saída de dados), que é usada para exibir informações na tela. Ela permite que seja exibida uma string, o conteúdo de uma variável, uma expressão matemática ou booleana. Se quisermos pedir ao usuário que forneça um valor, via teclado, usaremos a função input. Neste caso, um cursor será exibido, aguardando a digitação do dado (qualquer dado poderá ser digitado!). Para que o usuário saiba o que deve ser informado, podemos exibir uma mensagem da seguinte forma: Lógica de Programação1º Semestre 22 Aqui, o cursor será exibido logo após o texto nome: aguardando a digitação (agora o usuário tem uma ideia do que deve ser digitado!). Para guardar o dado digitado para ser usado posteriormente, faremos a entrada de dados ser atribuída a uma variável. Os dados digitados no teclado são sempre do tipo string. Para entrada de valor numérico, o dado deverá ser convertido para o tipo apropriado. Caso queira converter o dado de entrada em um número de ponto flutuante, utilize float. Para saber qual é o tipo de dado armazenado em uma variável use a função type. Exercício 4 1) Escreva linhas de comando para: A) receber um dado, exibindo a mensagem: qual a quantidade de alunos? B) exibir o conteúdo da variável. C) exibir o tipo da variável. 2) Escreva linhas de comando para: A) receber um dado, exibindo a mensagem: qual a nota do aluno? 23 Análise e Desenvolvimento de Sistemas 1º semestre 23 B) exibir o conteúdo da variável. C) exibir o tipo da variável. Exercícios propostos Exatamente qual será a saída, se o usuário digitar o valor 24 em resposta a solicitação de entrada? Para cada um dos identificadores abaixo, coloque v para os que são válidos e i para os que são inválidos. Para os inválidos, justifique a resposta. a. nome b. RETURN c. 100_ d. _nome e. return f. numeroDois g. Nome2 h. FaLSe i. A_______ j. 2nome k. __return+ l. ______a m. 1000 n. retorno o. nome@pessoa p. $nome q. (variavel) r. nome s. +nome- t. variavel u. *var v. __nome__ w. v_a_r_i_a_v_e_l x. var y. Variavel z. ___________ aa. new_var ab. Nome_variavel ac. _ ad. value ae. nome2 af. $_$ ag. while ah. False ai. _$_ aj. While ak. false al. _100 am. from an. _from ao. from2 ap. FROM_2 Lógica de Programação1º Semestre 24 aq. ^pessoa ar. nomeInvalido as. #hashtag at. hashtag au. Hashtag av. &hashtag aw. nome-pessoa ax. $ ay. a Escreva um programa, que receba o salário de um funcionário e o percentual de aumento a ser aplicado sobre o salário. Calcule e apresente o valor do aumento. Exemplo: para um salário de 2000.00 E um percentual de aumento de 15%, o valor do aumento será 300.00. Escreva os comandos abaixo e execute-os no shell do Python. Qual a resposta de casa um dos comandos? a) print(“Ola, mundão!”) b) print(“Ola”, “mundao”) c) print(3) d) print(3.0) e) print(2 + 3) f) print(2.0 + 3.0) g) print(“2” + “3”) h) print(“1 + 3 =”, 2 + 3) i) print(2 * 3) j) print(2 ** 3) k) print(2 / 3) l) type(3) m) type(“Tipo inteiro?”) n) type(“Tipo String”) o) type(3.0) p) type(4/2) q) type(“3”) r) type(“4/2”) s) type(“3.0”) Escreva um programa em Python que: Defina 3 variáveis com valores que armazenem O nome de uma fruta O nome de verdura O nome de um legume Mostre uma mensagem “aqui estão os nomes de uma fruta, uma verdura e um legume” Após essa mensagem, mostre, na ordem, o nome da fruta, da verdura e do legume Lembre-se de usar nomes válidos de variáveis e que definam o propósito do valor armazenado. Altere o programa anterior para conter mais três variáveis, com o preço unitário da fruta, verdura e legume. Estas variáveis devem armazenar números e não strings. Depois, mostre o preço de cada produto após o nome (nome ao lado do preço, por exemplo: “maça: 10”) 25 Análise e Desenvolvimento de Sistemas 1º semestre 25 Atividades de laboratório Sabe-se que o valor de cada 1000 litros de água corresponde a 2% do salário mínimo. Elaboreum programa que receba o valor do salário mínimo e a quantidade de água consumida em uma residência por mês. Calcule e mostre: O valor da conta de água. O valor a ser pago com desconto de 15%. Escreva um programa em Python que o usuário digita dois números inteiros e armazena em duas variáveis n1 e n2, o seu programa deve trocar os valores dessas variáveis, de maneira que o valor de n1 seja igual ao de n2 e vice-versa, e depois deve exibir os números lidos com valores trocados. Escreva um programa em Python que peça para o usuário digite um texto (mensagem: “digite um texto: ”) e depois para digitar um número (mensagem: “digite um número”). Depois, deve mostrar duas mensagens:1) “a primeira entrada é um dado do tipo <tipo>”; 2) “a segunda entrada é do tipo <tipo>”, em que <tipo> deve ser trocado pelo tipo dos dados de entrada do usuário. Escreva um programa que pergunte a quantidade de km percorridos por um carro alugado pelo usuário, assim como a quantidade de dias pelos quais o carro foi alugado. Calcule o preço a pagar, sabendo que o carro custa r$60,00 por dia e r$0,15 por km rodado. Faça um programa que receba o salário de um funcionário e o percentual de aumento, calcule e mostre o valor do aumento e o novo salário. Faça um programa para uma loja de tintas. O programa deverá pedir o tamanho em metros quadrados da área a ser pintada. Considere que a cobertura da tinta é de 1 litro para cada 3 metros quadrados e que a tinta é vendida em latas de 18 litros, que custam r$ 80,00. Informe ao usuário a quantidades de latas de tinta a serem compradas e o preço total. Lógica de Programação1º Semestre 26 Capítulo 3 - Operadores, Expressões lógicas e estruturas sequenciais 27 Análise e Desenvolvimento de Sistemas 1º semestre 27 3. Operadores, expressões lógicas e estruturas sequenciais Agora que conhecemos os tipos numéricos e string em Python, vamos ver como fazer operações com esses tipos. Um operador é um símbolo que representa a operação que pode ser realizada em um ou mais operandos. Operadores que atuam sobre um operando são chamados operadores unários. Operadores que atuam sobre dois operandos são chamados de operadores binários. 3.1 Operadores aritméticos Operadores Significado Exemplo Resultado -x negação -10 -10 x + y soma 2 + 4 6 x - y substração 2 - 4 -2 x * y multiplicação 2 * 4 8 x / y divisão 25 / 10 2.5 x // y divisão truncada 25 // 10 2 25 // 10.0 2.0 x % y módulo ou resto de divisão 25 % 10 5 x ** y exponenciação 2 ** 4 16 O operador (-) pode ser um operador unário (negação) ou um operador binário (subtração). Todos os outros operadores são binários. A exponenciação pode ser utilizada tanto para números inteiros quanto para números em ponto flutuante, tanto na base quanto no expoente. Lógica de Programação1º Semestre 28 Exemplos: Python possui dois operadores para divisão, a divisão dita normal e a divisão truncada, em que o tipo resultante depende dos operandos. Caso os operando sejam inteiros, o resultado da divisão truncada será um inteiro. Caso ao menos um dos operandos seja float, o resultado será um float. Exercício 1 Para cada tipo de divisão e dos tipos dos operandos, complete o resultado da divisão. Operandos Tipo resultante Exemplo Resultado / Operador divisão int, int float 7 / 5 int, float float 7 / 5.0 float, float float 7.0 / 5.0 // Operador divisão truncada int, int int truncado(divisão inteiro) 7 // 5 int, float float truncado 7 // 5.0 float, float Float truncado 7.0 // 5.0 Exercício 2 O que será exibido ao digitarmos as seguintes linhas de comando? >>> 1/3 >>> 1/3 + 1/3 >>> 3*(1/3) >>> 3*1/3 29 Análise e Desenvolvimento de Sistemas 1º semestre 29 Uma vez que qualquer representação do ponto flutuante contém apenas um número finito de dígitos, o que é armazenado para muitos valores do ponto flutuante são apenas uma aproximação do valor verdadeiro. O operador modulo ou resto de divisão (%), resulta em um ciclo de valores. Exercício 3 O que será exibido ao digitarmos as seguintes linhas de comando? >>> 10 + 35 >>> -10 + 35 >>> 4 * 2 >>> 4 ** 2 >>> 45 / 10 >>> 45 // 10 >>> 45 // 10.0 >>> 2025 % 10 >>> 2025 % 100 Exercícios propostos 1: 1. Dê o resultado para cada um dos seguintes: (A) 22 * 3 (b) 15 % 4 (c) 3 ** 2 2. Dê o resultado exato de cada uma das divisões seguintes: (A) 5 / 4 (b) 5 // 4 (c) 5.0 // 4 3. Quais das expressões do exercício 3 é um exemplo de divisão de inteiro? 4. Quais das expressões do exercício 3 fornecem o mesmo resultado? (Sim/não) 5. Quantos operandos existem na expressão aritmética seguinte? Lógica de Programação1º Semestre 30 2 * 24 + 60 - 10 (A) 4 (b) 3 (c) 7 6. Quantos operadores binários existem na expressão aritmética seguinte? - 10 + 25 / (16 + 12) (A) 2 (b) 3 (c) 4 3.1.1 Expressões e tipos de dados Uma expressão é uma combinação de símbolos que avalia um valor e consiste de uma combinação de operadores e operandos. Uma expressão pode conter também uma variável. Exemplo: 4 + ( 3 * k) Expressões que avaliam valores do tipo numérico são chamadas de expressões aritméticas. Exercício proposto 2: O que será exibido ao digitarmos as seguintes linhas de comando? >>> (2 + 3) * 4 >>> 2 + (3 * 4) >>> 2 + ((3 * 4) – 8) >>> 2 + 3 * (4 – 1) Para avaliarmos uma expressão é importante sabermos a precedência dos operadores. O natural seria considerar a precedência da matemática, porém cada linguagem de programação tem sua própria regra. Pode ser ou não igual a da matemática. A associatividade do operador é a ordem em que os operadores são aplicados quando têm o mesmo nível de prioridade. Operador Associatividade ** Direita para esquerda - (negação) Esquerda para direita * / // e % Esquerda para direita 31 Análise e Desenvolvimento de Sistemas 1º semestre 31 + e – (subtração) Esquerda para direita Exercício 4 Desenvolva a expressão primeiro e depois use a linguagem para avaliar o resultado. 4 + 2 ** 5 // 10 5 + 42 % 10 3.2 Tipo de dado Um tipo de dado é um conjunto de valores e um conjunto de operadores que podem ser aplicados a esses valores. Exemplo: o tipo int define o conjunto de números inteiros e as operações de adição, multiplicação, divisão, divisão truncada e resto de divisão que podem ser aplicadas no conjunto dos inteiros. Vimos os tipos int, float e string em Python. Mas tem-se também o tipo lógico ou tipo booleano, chamado bool, que pode assumir os valores true para verdadeiro e false para falso. Exemplo: Resultado = true Aprovado = false Observe que o valor booleano é diferente da string “true” ou “false”, por exemplo. Existem duas formas de tipo de dados em linguagem de programação: Tipagem estática: quando uma variável é declarada como um determinado tipo, antes de ser usada; Tipagem dinâmica: quando o tipo de dado da variável depende somente do tipo do valor que lhe é atribuído. Assim, a mesma variável pode ter atribuído valores de tipos diferentes durante a execução de um programa. Nesse caso, dizemos que a linguagem Python é tipada dinamicamente. Uma expressão tipo-misto pode conter operandos de diferentes tipos. Nesse caso, os operandos precisam ser convertidos para o mesmo. Os valores podem ser convertidos de duas maneiras: Coerção: é a conversão implícita ou automática de operandos para um tipo comum. Exemplo: 2 + 4.5 = 2.0 + 4.5 = 6.5 (Conversão automática de int para float) Conversão de tipo: é a conversão explícita de operandos para um tipo específico. Exemplo: Float(2) + 4.5 = 2.0 + 4.5 = 6.5 2 + Int(4.5) = 2+ 4 = 6 (Resulta em perda de informação) Lógica de Programação1º Semestre 32 Exercício proposto 3: Para cada tipo de conversão, determine o resultado convertido Função de conversão Resultado Função de conversão Resultado int( ) int(10.8) float( ) float(10) int(‘10’) float(‘10’) int(’10.8’) float(’10.8’) Observamos que uma string pode ser convertida para um tipo numérico.De fato, isso já estávamos fazendo para obter dados de entrada do tipo int ou float com a função input. Exemplo: Num_disciplinas = int(input(“quantas disciplinas você cursa?”)) Exercícios propostos 4 Quais das seguintes expressões realiza uma coerção na avaliação da expressão? (A) 4.0 + 3 (B) 3.2 * 4.0 Quais das expressões seguintes usa conversão explícita de tipo? (A) 4.0 + Float(3) (b) 3.2 * 4.0 (C) 3.2 + Int(4.0) Faça um Programa que peça a temperatura em graus Fahrenheit, transforme e mostre a temperatura em graus Celsius, sabendo que: c = 5*(f-32)/9 Fonte: google 3.3 Funções matemáticas Agora, vamos inserir funções e constantes matemáticas definidas em um módulo chamado math. Para usar as funções do módulo é necessário que ele seja importado da biblioteca padrão do Python: import math. Neste módulo, encontraremos um conjunto variado de funções como as trigonométricas (ex: sin, cos, tan, etc) e logarítmicas (ex: log) e também constantes matemáticas (ex: pi). 33 Análise e Desenvolvimento de Sistemas 1º semestre 33 Veja a seguir a tabela com algumas funções: Sintaxe Descrição math.acos(x) retorna o arco cosseno de x math.asin(x) retorna o arco seno de x math.atan(x) retorna o arco tangente de x math.ceil(x) retorna o menor inteiro maior ou igual a x como int math.cos(x) retorna o cosseno de x math.degrees(r) converte radianos para graus math.e constante e (aproximadamente 2.7182818284590451) math.exp(x) retorna o exponencial de x (ex) math.fabs(x) retorne o valor absoluto de x math.factorial(x) retorna x! math.floor(x) retorna o maior inteiro menor ou igual a x como um int math.log(x,b) retorna logb x (se b for omitido, retorna log x na base e) math.log10(x) retorna log10 x math.modf(x) retorna a parte fracionária e a parte inteira como dois floats math.pi constante p (aproximadamente 3.1415926535897931) math.pow(x,y) retorna xy Lógica de Programação1º Semestre 34 math.radians(g) converte graus para radianos math.sin(x) retorna o seno de x math.sqrt(x) retorna a raiz quadrada de x math.tan(x) retorna a tangente de x math.trunc(x) retorna a parte inteira de x como um int; igual a int(x) Exercício 5 Escreva as seguintes expressões matemáticas utilizando operadores e funções da linguagem Python: 3.4 Estrutura sequencial Nos programas que construímos anteriormente sempre utilizamos a mesma sequência de instruções: receber dados iniciais, realizar operações matemáticas e apresentar resultados finais. Esta estrutura de controle, caracterizada pela execução das instruções na ordem em que foram escritas é denominada de estrutura sequencial. Exercício 6 Escreva um programa que receba o raio de uma esfera, calcule e apresente o seu volume. Exercícios 7 Elabore os seguintes programas: Leia dois números inteiros e exiba o quadrado da diferença do primeiro valor pelo segundo. 35 Análise e Desenvolvimento de Sistemas 1º semestre 35 Receba o peso de uma pessoa, calcule e mostre: A) o novo peso, se a pessoa engordar 5% sobre o peso digitado; B) o novo peso, se a pessoa emagrecer 10% sobre o peso digitado. Leia um número inteiro de 3 dígitos, determine e apresente o número invertido (exemplo: número informado = 345, número apresentado = 543). Leia as coordenadas (x,y) de dois pontos no plano cartesiano, calcule e mostre a distância entre os dois pontos. Receba a quantidade de dinheiro, em reais, que uma pessoa tem para fazer uma viagem ao exterior. Receba, também, o valor da cotação do dólar do dia. Calcule e apresente o valor convertido em dólares. Exercícios propostos O que será exibido ao digitarmos as seguintes linhas de comando? (A)print(“hello, world!”) (B) print(“hello”, “world!”) (C) print(3) (D) print(3.0) (E) print(2 + 3) (F) print(2.0 + 3.0) (G) print(“2” + “3”) (H) print(“2 + 3 =”, 2 + 3) (I) print(2 * 3) (J) print(2 ** 3) (K) print(2 / 3) Escreva um programa que permite ao usuário digitar dois números inteiros e exibir o resultado para cada uma das seguintes operações: +, -, *, /, //, %, **. Por exemplo: se o usuário digitar 7 e 5, a saída do seu programa deverá ser: 7 + 5 = 12 7 - 5 = 2 7 * 5 = 35 7 / 5 = 1.40 7 // 5 = 1 7 % 5 = 2 7 ** 5 = 16807 Escreva as seguintes expressões matemáticas utilizando operadores e funções da linguagem Python: Lógica de Programação1º Semestre 36 Modifique o programa realizado anteriormente de conversão de temperatura, para converte de celsius para fahrenheit. A fórmula é conversão é: f = (c * 9/5) + 32 Faça programa que calcula a idade em segundos para que a idade seja exibida em número de dias, horas e minutos. Atividades de laboratório Escreva um programa que lê dois valores inteiros e exibe o resultado do primeiro número dividido pelo segundo número, com exatamente duas casas decimais. Escreva um programa que lê dois valores inteiros e exibe o resultado do primeiro número dividido pelo segundo número, com exatamente seis casas decimais. Escreva um programa que lê dois valores em ponto flutuante e exibe o resultado do primeiro dividido pelo segundo, com exatamente seis dígitos depois da vírgula. Calcule e apresente o volume de uma lata de óleo. Escreva um programa que receba três números quaisquer e apresente: A soma dos quadrados dos três números; O quadrado da soma dos três números. Faça um programa que receba o custo de um espetáculo teatral e o preço do convite desse espetáculo. Esse programa deve calcular e mostrar: A quantidade de convites que devem ser vendidos para que pelo menos o custo do espetáculo seja alcançado. A quantidade de convites que devem ser vendidos para que se tenha um lucro de 23%. Dado o preço de um produto (inteiro), elabore um programa que calcule e apresente a menor quantidade de notas (de cada valor) necessárias para efetuar o pagamento da compra desse produto. Considere como valores das notas atuais: 1, 2, 5, 10, 20, 50, 100. A fábrica de refrigerantes meia-cola vende seu produto em três formatos: lata de 350 ml, garrafa de 600 ml e garrafa de 2 litros. Se um comerciante compra uma determinada quantidade de cada formato, faça um algoritmo para calcular quantos litros de refrigerante ele comprou. Um hotel deseja fazer uma promoção especial de final de semana, concedendo um desconto de 25% na diária. Sendo informados, através do teclado, o número de apartamentos do hotel e o valor da diária por apartamento para o final de semana completo, elabore um algoritmo para calcular: O valor promocional da diária; O valor total a ser arrecadado caso a ocupação neste final de semana atinja 100%; O valor total a ser arrecadado caso a ocupação neste final de semana atinja 70%; O valor que o hotel deixará de arrecadar em virtude da promoção, caso a ocupação atinja 100%. Faça um programa que receba a medida do ângulo formado por uma escada apoiada no chão e a distância em que a escada está da parede, calcule e mostre a medida da escada. 37 Análise e Desenvolvimento de Sistemas 1º semestre 37 Três amigos, carlos, andré e felipe, decidiram rachar igualmente a conta em um bar. Faça um programa para lei o valor total da conta e imprimir quanto cada um deve pagar, mas faça com que carlos e andré não paguem centavos. Por exemplo: uma conta de r$101,53 resulta em r$33,00 para carlos, r$33,00 para andré e r$ 35,53 para felipe. A padaria hotpão vende uma quantidade de pães franceses e uma quantidade de broas a cada dia. Cada pãozinho custa r$0,12 e a broa custa r$1,50. Ao final do dia, o dono quer saber quanto arrecadou com a venda dos pães e broas (juntos), e quanto deve guardar numa conta de poupança (10% do total arrecadado). Você foi contratado para fazer os cálculos para o dono. Com base nestes fatos, faça um programa para ler as quantidades de pães e de broas, e depois calcular os dados solicitados. Lógica de Programação1º Semestre 38 Capítulo 4 - Operadores e Expressões lógicas, es- truturas Condicionais simples e composta 39 Análise e Desenvolvimento de Sistemas 1º semestre39 4. Operadores e expressões lógicas, estruturas condicionais simples e composta Motivação Os primeiros computadores eletrônicos com mais de sessenta anos foram referidos como “cérebros eletrônicos”. Deu-se a impressão enganosa de que os computadores poderia “pensar”. Embora possam ser complexos na sua design, computadores são máquinas que simplesmente fazem, passo a passo (instrução por instrução), o que eles são informados. Assim, não há mais inteligência em um computador do que o que é instruído fazer. O que os computadores podem fazer, no entanto, é executar uma série de instruções muito rapidamente e muito de forma confiável. É a velocidade em que as instruções podem ser executado que dá aos computadores o seu poder, uma vez que a execução de muitas instruções simples pode resultar em comportamento muito complexo. Vamos a partir de agora controlar a ordem em que as instruções são executadas no Python. 4.1 O que é uma estrutura de controle? A ordem em que as instruções de um programa são executadas é chamada de controle de fluxo. Existem três formas fundamentais de controlar o fluxo de um programa: estrutura de controle sequencial, estrutura de controle de seleção ou condicional e estrutura de controle de repetição, iterativo ou laço. Estrutura Sequencial Estrutura de Seleção Estrutura de Repetição, Laço ou Iterativo Estrturas de controle – fonte (dierbach) A estrutura de controle sequencial, caracteriza pelos problemas visto até agora, é uma forma implícita de controle, em que as instruções são executadas na ordem em que são escritas. Conheceremos o segundo tipo de controle de fluxo, a estrutura de seleção ou condicional. Porém, antes vamos saber o que é uma expressão lógica. 4.2 Expressões lógicas Nesta aula, vamos estudar dois operadores que são usados em expressões lógicas (booleanas): Lógica de Programação1º Semestre 40 operadores relacionais e operadores lógicos. Uma expressão lógica é uma expressão que resulta em um valor lógico true (verdadeiro) ou false (falso). 4.3 Operadores relacionais Os operadores relacionais são usados em comparações entre valores. O resultado da comparação será um valor lógico. São eles: Operadores Exemplo Resultado == igual a 10 == 10 True != diferente 10 != 10 False < menor que 10 < 20 True > maior que “Alan” > “Brenda” False <= menor ou igual a 10 <= 10 True >= maior ou igual a “A” >= “D” False Exercício 1 O que será exibido ao digitarmos as seguintes linhas de comando? >>> 10 == 20 >>> 10 != 20 >>> 10 <= 20 >>> ‘2’ < ‘9’ >>> ‘12’ < ‘9’ >>> ‘12’ > ‘9’ >>> ‘Hello’ == “Hello” >>> ‘Hello’ < ‘Zebra’ >>> ‘hello’ < ‘ZEBRA’ Exercício 2 Considerando a = 4, b = 10, c = 50, d = 1 e f = 5, qual será o resultado lógico (true/false) das 41 Análise e Desenvolvimento de Sistemas 1º semestre 41 seguintes expressões: Expressão Resultado a == c a < b d > b c != f a == b c < d b > a c >= f c <= c c <= f 4.4 Operadores lógicos Os operadores lógicos podem ser usados para construir expressões lógicas mais complexas combinando comparações. São eles: and (e), or (ou), not (não). O operador lógico and resulta verdadeiro somente quando seus operandos forem verdadeiros. O operador lógico or resulta verdadeiro quando, pelo menos, um dos seus operandos for verdadeiro. O operador lógico not inverte o valor do operando. Tabela verdade dos operadores lógicos: Lógica de Programação1º Semestre 42 x y x and y x or y not x False False False False True True False False True False False True False True True True True True É preciso ser cauteloso aos usar operadores lógicos. Por exemplo, na matemática, para indicar que um valor está dentro de um determinado intervalo escrevemos: 1 <= Num <= 10 No entanto, na maioria das linguagens de programação esta expressão não faz sentido. Para entender porque, vamos assumir que num tem o valor 15. 1 <= Num <= 10 ® 1 <= 15 <= 10 ® true <= 10 ® ??? Não faz sentido verificar se true é menor ou igual a 10. A maneira correta de escrever a expressão deve usar o operador lógico and 1 <= Num and num <= 10 Ou Num >= 1 and num <= 10 Exercício 3 O que será exibido ao digitarmos as seguintes linhas de comando? >>> True and False >>> True or False >>> not(True) and False >>> not(True and False) >>> (10 < 0) and (10 > 2) >>> (10 < 0) or (10 > 2) >>> not(10 < 0) or (10 > 2) >>> not(10 < 0 or 10 > 2) 43 Análise e Desenvolvimento de Sistemas 1º semestre 43 Exercício 4 Qual será o valor das seguintes expressões lógicas: A) ((5 > 3) or (4 < 2)) and (1 < 7) B) (not(5 > 3) or (1 < 2)) and (not(1<7)) 4.5 Precedência dos operadores A precedência dos operadores relacionais e lógicos, bem a associatividade dos operadores é dada conforme segue a tabela: Operador Associatividade <, >, <=, >=, !=, == Esquerda para direita not Esquerda para direita and Esquerda para direita or Esquerda para direita Uma vez que expressões lógicas, pode conter também operadores aritméticos, vistos na aula anterior, podemos estender para a tabela seguinte: Operador Associatividade ** Direita para esquerda - (negação) Esquerda para direita * / // e % Esquerda para direita + e – (substração) Esquerda para direita <, >, <=, >=, !=, == Esquerda para direita Lógica de Programação1º Semestre 44 not Esquerda para direita and Esquerda para direita or Esquerda para direita 4.6 Expressões booleanas equivalentes Assim como na matemática existe equivalência de expressões aritméticas. Por exemplo, x(y + z) é equivalente a xy + xz, para valores numéricos x, y e z. Existe equivalência lógica de expressões booleanas. Expressões Booleanas Equivalentes Logicamente é equivalente a Exercício 5 O que será exibido ao digitarmos as seguintes linhas de comando? 45 Análise e Desenvolvimento de Sistemas 1º semestre 45 >>> 10 < 20 >>> not (10 >= 20) >>> 10 != 20 >>> not(10 == 20) >>> not(10 < 20 and 10 < 30) >>> (not 10 < 20) or (not 10 < 30) >>> not(10 < 20 or 10 < 30) >>> (not 10 < 20) and (not 10 < 30) 4.7 Estruturas de seleção ou condicional A partir de agora vamos estudar as estruturas condicionais que permitem que o programa execute diferentes sequências de instruções em diferentes casos, dependendo da avaliação de uma expressão lógica. Uma expressão lógica é uma expressão cujos operadores são lógicos e/ou relacionais e cujos operandos são relações e/ou variáveis do tipo lógico. Em programação, o uso de condições para permitir a escolha de executar ou não um trecho de programa é muito utilizado, principalmente quando precisamos incluir no programa condições de controle, para evitar situações não permitidas, que podem resultar em erros. Por exemplo, para evitar divisões por zero. A estrutura lógica que permite que o fluxo de execução de um algoritmo possa sofrer desvios é conhecida como estrutura condicional ou de seleção. Quando temos apenas um bloco especial de comando ou instruções apenas para quando a expressão lógica for verdadeira, esse tipo de estrutura chama-se estrutura de condicional simples. 4.8 Estrutura condicional simples Sintaxe: If condição: Instrução(ões)_verdadeiro Lógica de Programação1º Semestre 46 Exemplo: If nota >= 6.0: Print(“aluno aprovado”) If nota < 6.0: Print(“aluno reprovado”) O texto “aluno aprovado” só será exibido se a condição nota >= 6.0 For verdadeira; caso contrário, o controle passa para a próxima instrução que tem outra condição nota < 6.0 A ser avaliada. Se o resultado for verdadeiro então será exibido o texto “aluno reprovado”. Uma característica singular da linguagem Python é que a quantidade de recuo (indentação) está associada à um bloco de instruções. Esta indentação é obrigatória para se definir qual instrução ou instruções devem ser executadas quando o resultado lógico da expressão for verdadeiro. Indentação válida Indentação inválida if condição: instrução instrução instrução if condição: instrução instrução instrução Analisando o exemploanterior, podemos perceber que para escrever apenas uma das mensagens foram necessárias duas condições. Existe outra estrutura, chamada de estrutura condicional composta, em que temos uma única condição e dois caminhos que podem ser seguidos – o caminho do resultado verdadeiro e o caminho do resultado falso. 4.9 Estrutura condicional composta Sintaxe: If condição: Instrução(ões)_verdadeiro Else: Instrução(ões)_falso Exemplo: If nota >= 6.0: Print(“aluno aprovado”) Else: Print(“aluno reprovado”) Neste caso, será avaliada a condição nota >= 6.0 E se o resultado for verdadeiro então será apresentado o texto “aluno aprovado”; caso contrário (else), será apresentado o texto “aluno reprovado”. 47 Análise e Desenvolvimento de Sistemas 1º semestre 47 Como na estrutura condicional simples, instrução(ões)_verdadeiro e instrução(ões)_falso devem ser indentadas adequadamente. Indentações válidas Indentações inválidas if condição: instrução instrução else: instrução instrução if condição: instrução instrução else: instrução instrução if condição: instrução instrução else: instrução instrução if condição: instrução instrução else: instrução instrução Exercício 5 Escreva a estrutura apropriada para cada um dos seguintes itens: Apresente “dentro do intervalo” se 1 <= num <= 100. Apresente “dentro do intervalo” se 30 < num < 70, caso contrário, apresente “fora do intervalo”. Exercício 6 Resolva as expressões lógicas abaixo: S = ((not (1 == 2)) and (3 < 4)) S = ((1 < 2) or (3 > 4)) S = (((2 == 2) and (3 > 4)) or (3 > 4)) Escreva um programa que leia um número inteiro e exiba se ele é um número par ou ímpar. Um comerciante comprou um produto e quer vendê-lo com um lucro de 45% se o valor da compra for menor que r$ 20,00; caso contrário, o lucro será de 30%. Escreva um programa que receba o valor do produto e exiba o valor da venda. As maçãs custam r$ 1,30 cada se forem compradas menos de uma dúzia, e r$ 1,00 se forem compradas pelo menos 12. Escreva um programa que leia o número de maçãs compradas, calcule e escreva o custo total da compra. 4.10 Estrutura de seleção encadeada Na estrutura de seleção simples, temos apenas um caminho ou uma possibilidade, para a condição ou expressão avaliada. Na seleção composta, temos duas possibilidades ou dois caminhos, um Lógica de Programação1º Semestre 48 caminho para a condição verdadeira, chamamos de bloco verdade e um bloco para a condição falsa, chamado de bloco da falsidade. A estrutura de seleção encadeada ocorre quando uma seleção tem como ação uma outra seleção ou quando temos mais de duas possibilidades para uma decisão. A seleção encadeada ou aninhada é o agrupamento de várias seleções (internas) a uma seleção. A linguagem Python nos fornece duas formas de estruturas com múltiplos possibilidades: Estrutura com múltiplas condições aninhadas ou encadeadas if-else Estrutura com uma única condição if e uso de múltiplas cláusulas elif Veremos primeiro, a primeira forma, com múltiplas condições aninhadas. 4.11 Seleções aninhadas ou encadeadas (múltiplos if-else aninha- dos) Quando temos mais de duas possibilidades ou múltiplos caminhos, temos a seleção encadeada, que não tem uma sintaxe fixa, mas uma combinação de estruturas simples e compostas, a depender da lógica do problema. Sintaxe: If condição: Bloco instruções Else: If condição: Bloco instruções Else: If condição: Bloco instruções ... Exemplo 1: Neste caso, será avaliada a condição nota >= 7.5 E frequência >=0.75 E se o resultado for verdadeiro então será apresentado o texto “aprovado direto”. Portanto o else, contendo o restante das outras condições, não será executado. Por outro lado, se a condição nota >= 7.5 E frequência >=0.75 For falsa, executaremos o bloco após o primeiro (else) mas, como ainda temos duas possibilidades, precisamos avaliar a condição nota >= 6.0 E frequência >=0.75 Será apresentado o texto “aprovado 49 Análise e Desenvolvimento de Sistemas 1º semestre 49 com exame”, caso essa segunda condição for verdadeira. Caso contrário será executado o bloco após o segundo (else), e será apresentada a mensagem de texto “reprovado”. Exemplo 2: nesse caso, temos 5 possibilidades para a variável grade. Observem que a última cláusula será executada somente se todas as outras falharem. As indentações tornam-se cruciais em uma estrutura encadeada, uma vez que cada declaração if- else é um bloco de código diferente e deve ter uma quantidade de espaços diferentes. Portanto, muita atenção! Exercício 7 Faça um programa que leia três números inteiros e encontra o menor deles. Sugestão: sejam 3 números a, b e c. A ideia principal é: verificar se a é menor que b e c e se não for, verificar entre b e c Exercício 8 Faça um programa que leia três números inteiros e colocá-los em ordem crescente. Sugestão: sejam 3 números a, b e c. A ideia principal é: Armazenar em a o menor valor Armazenar em b o valor intermediário Armazenar em c o maior valor Exercício 9 Faça um programa que faz a leitura de três valores reais (a, b e c), representando os coeficientes de uma equação do 2o. Grau, calcula o valor do delta e os valores das raízes reais, caso existam. Considere que: Se a for igual a zero, exiba a mensagem “não é equação de 2º grau!” E encerre; Se o delta for negativo, exiba a mensagem “não existem raízes reais” e encerre. Se o delta for zero ou positivo, exibe a raiz ou as raízes e encerre. Exercício 10 Ler três valores para os lados de um triângulo, considerando os lados como: a, b e c. Verificar se os lados fornecidos formam realmente um triângulo. Se afirmativo, deverá ser indicado qual tipo de triângulo foi formado: isósceles, escaleno ou equilátero. Orientações: Devemos saber primeiramente qual a definição de um triângulo. Triângulo é uma forma geométrica (polígono) composta de três lados, onde cada lado é menor que a soma dos outros dois lados. Perceba que isto é uma regra (uma condição) e deverá ser considerada. É um triângulo quando a < b + c, quando b < a + c e quando c < a + b. Lógica de Programação1º Semestre 50 Tendo certeza que os valores informados para os três lados formam um triângulo, serão então, analisados os valores para se estabelecer qual tipo de triângulo será formado: isósceles, escaleno ou equilátero. Isósceles quando possui dois lados iguais e um diferente, sendo a=b ou a=c ou b=c; Escaleno quando possui todos os lados diferentes, sendo a < > b e b < > c; e Equilátero quando possui todos os lados iguais, sendo a=b e b=c. Etapas principais do algoritmo: Ler três valores para os lados de um triângulo: a, b e c; Verificar se cada lado é menor que a soma dos outros dois lados Se sim, saber se a=b e se b=c, sendo verdade o triângulo é equilátero Se não, verificar se a=b ou se a=c ou se b=c, sendo verdade o triângulo é isósceles, caso contrário o triângulo é escaleno. Caso os lados fornecidos não caracterizem um triângulo, avisar a ocorrência. 4.12 A estrutura encadeada if-elif-else A linguagem Python nos fornece duas formas de estruturas com múltiplos possibilidades: Estrutura com múltiplas condições aninhadas ou encadeadas if-else Estrutura com uma única condição if e uso de múltiplas cláusulas elif Vimos a primeira forma com múltiplas condições aninhadas com if-else. O Python apresenta uma alternativa ao problema dos múltiplos ifs aninhados. A cláusula elif substitui um par de else-if, mas sem criar outro nível de estrutura, evitando problemas de indentações. Sintaxe: If <condição 1>: <Bloco de código if> Elif <condição 2>: <Bloco de código elif> Else: <Bloco de código else> Se condição 1 for verdadeira, executa bloco de código if. Senão, se condição 2 for verdadeira, executa bloco de código elif. Senão, executa bloco de código else. A declaração elif só pode existir se existir uma declaração if. A declaração do elif é opcional; pode existir if sem um elif (decisãosimples) else também continua sendo opcional. A declaração elif tem um teste lógico assim como if; ela é executada sempre que o teste do if for false. A indentação do elif deve ser a mesma da declaração if que está relacionada; if e seu elif devem ter a mesma quantidade de espaços a esquerda. Na declaração if-elif-else podem existir quantas declarações elif forem necessárias. Exemplo: vamos reescrever o trecho de código a esquerda, usando if-elif-else. 51 Análise e Desenvolvimento de Sistemas 1º semestre 51 Exercício 11 Vamos reescrever o trecho de código a esquerda, usando if-elif-else. Exercício 12 Reescreva os programas dos exercícios de 7 a 10, agora usando if-elif-else Atividades de laboratório Faça um programa que apresenta o maior de dois números lidos do usuário. Faça um programa que coloque dois nomes em ordem alfabética. Faça um programa que apresente se o número que o usuário digitou é divisível por 3 e por 5 ao mesmo tempo. Faça um programa que receba um ano (quatro dígitos) e informe se é um ano bissexto ou não. Pesquise quais as regras para o número ser bissexto. Elabore um programa que leia do teclado o sexo de uma pessoa. Se o sexo digitado for “m” ou “m” ou “f” ou “f”, escrever na tela “sexo válido!”. Caso contrário, exibir “sexo inválido!”. Num determinado estado, para transferências de veículos, o detran cobra uma taxa de 2,5% para carros fabricados antes de 2010 e uma taxa de 3,5% para os fabricados de 2010 em diante, taxa esta incidindo sobre o valor de tabela do carro. Escreva um programa lê o ano e o preço do carro e a seguir calcula e imprime a taxa a ser paga. Lógica de Programação1º Semestre 52 Elabore um programa que calcule o que deve ser pago por um produto, considerando o preço normal de etiqueta e a escolha da condição de pagamento. Utilize os códigos da tabela seguinte para ler qual a condição de pagamento escolhida e efetuar o cálculo adequado. Código Condições de pagamento 1 À vista em dinheiro ou cheque, recebe 10% de desconto 2 À vista no cartão de crédito, recebe 5% de desconto 3 Em 2 vezes, preço normal de etiqueta sem juros 4 Em 3 vezes, preço normal de etiqueta mais juros de 10% Resolver os problemas 19 a 23 de estruturas condicionais do site: Http://wiki.Maratona.Dcc.Ufmg.Br/index.Php/roteiro_2_-_aeds1 1) (Problema 19) - JSEDEX - Sedex A copa do mundo de 2018 será realizada na rússia. Bolas de futebol são muito fáceis de transportar, já que elas saem das fábricas vazias e só são enchidas somente pelas lojas ou pelos consumidores finais. Infelizmente o mesmo não pode ser dito das bolas de boliche. Como elas são completamente sólidas, elas só podem ser transportadas embaladas uma a uma, em caixas separadas. A sbc - só boliche cascavel - é uma fábrica de bolas de boliche que trabalha somente através de encomendas e envia todas as bolas por sedex. Como as bolas têm tamanhos diferentes, a sbc tem vários tamanhos de caixas diferentes para transportá-las Tarefa Escreva um programa que, dado o diâmetro de uma bola e as 3 dimensões de uma caixa (altura, largura e profundidade), diz se a bola de boliche cabe dentro da caixa ou não. Entrada A primeira linha da entrada contém um inteiro n (1 ≤ n ≤ 10.000) Que indica o diâmetro da bola de boliche. A segunda linha da entrada contém 3 números inteiros separados por um espaço cada: a altura a (1 ≤ a ≤ 10.000), Seguida da largura l (1 ≤ l ≤ 10.000) E da profundidade p (1 ≤ p ≤ 10.000). Saída Seu programa deve imprimir uma única linha, contendo a letra ‘s’ caso a bola de boliche caiba dentro da caixa ou ‘n’ caso contrário Exemplo 53 Análise e Desenvolvimento de Sistemas 1º semestre 53 Entrada 3 3 2 5 Saída N Entrada 5 5 5 5 Saída S Entrada 9 15 9 10 Saída S (Problema 20) – conta1 - conta de água A empresa local de abastecimento de água, a saneamento básico da cidade (sbc), está promovendo uma campanha de conservação de água, distribuindo cartilhas e promovendo ações demonstrando a importância da água para a vida e para o meio ambiente. Para incentivar mais ainda a economia de água, a sbc alterou os preços de seu fornecimento de forma que, proporcionalmente, aqueles clientes que consumirem menos água paguem menos pelo metro cúbico. Todo cliente paga mensalmente uma assinatura de r$ 7, que inclui uma franquia de 10 m³ de água. Isto é, para qualquer consumo entre 0 e 10 m³, o consumidor paga a mesma quantia de r$ 7 reais (note que o valor da assinatura deve ser pago mesmo que o consumidor não tenha consumido água). Acima de 10 m³ cada metro cúbico subsequente tem um valor diferente, dependendo da faixa de consumo. A sbc cobra apenas por quantidades inteiras de metros cúbicos consumidos. A tabela abaixo especifica o preço por metro cúbico para cada faixa de consumo: Faixa de consumo (m³) Preço (m³) até 10 11 a 30 31 a 100 101 em diante incluído na franquia R$ 1 R$ 2 R$ 5 Assim, por exemplo, se o consumo foi de 120 m³ , o valor da conta é: 7 Reais da assinatura básica; 20 Reais pelo consumo no intervalo 11 - 30 m³; 140 Reais pelo consumo no intervalo 31 - 100 m³; Lógica de Programação1º Semestre 54 100 Reais pelo consumo no intervalo 101 - 120 m³. Logo o valor total da conta de água é r$ 267. Tarefa Escreva um programa que, dado o consumo de uma residência em m3 , calcula o valor da conta de água daquela residência. Entrada A única linha da entrada contém um único inteiro n, indicando o consumo de água da residência, em m³ (0 ≤ n ≤ 10³). Saída Seu programa deve imprimir uma única linha, contendo o valor da conta de água daquela residência. Exemplo Entrada 8 Saída 7 Entrada 14 Saída 11 Entrada 42 Saída 51 (Problema 21) – jpneu - pneu Calibrar os pneus do carro deve ser uma tarefa cotidiana de todos os motoristas. Para isto, os postos de gasolina possuem uma bomba de ar. A maioria das bombas atuais são eletrônicas, permitindo que o motorista indique a pressão desejada num teclado. Ao ser ligada ao pneu, a bomba primeiro lê a pressão atual e calcula a diferença de pressão entre a desejada e a lida. Com esta diferença ela esvazia ou enche o pneu para chegar na pressão correta. Sua ajuda foi requisitada para desenvolver o programa da próxima bomba da sbc - sistemas de bombas computadorizadas Tarefa Escreva um programa que, dada a pressão desejada digitada pelo motorista e a pressão do pneu lida pela bomba, indica a diferença entre a pressão desejada e a pressão lida. Entrada A primeira linha da entrada contém um inteiro n que indica a pressão desejada pelo motorista (1 ≤ n ≤ 40). A segunda linha contém um inteiro m que indica a pressão lida pela bomba (1 ≤ m ≤ 40). Saída Seu programa deve imprimir uma única linha, contendo a diferença entre a pressão desejada e a pressão lida. Exemplo Entrada 30 18 Saída 12 Entrada 27 27 Saída 0 55 Análise e Desenvolvimento de Sistemas 1º semestre 55 Entrada 27 30 Saída -3 Lógica de Programação1º Semestre 56 (Problema 22) – URI 1041 Leia 2 valores com uma casa decimal (x e y), que devem representar as coordenadas de um ponto em um plano. A seguir, determine qual o quadrante ao qual pertence o ponto, ou se está sobre um dos eixos cartesianos ou na origem (x = y = 0). Se o ponto estiver na origem, escreva a mensagem “origem”. Se o ponto estiver sobre um dos eixos escreva “eixo x” ou “eixo y”, conforme for a situação. Entrada A entrada contém as coordenadas de um ponto. Saída A saída deve apresentar o quadrante em que o ponto se encontra. Exemplo de Entrada Exemplo de Saída 4.5 -2.2 Q4 0.1 0.1 Q1 0.0 0.0 Origem 57 Análise e Desenvolvimento de Sistemas 1º semestre 57 (Problema 23) – URI 1038 Com base na tabela abaixo, escreva um programa que leia o código de um item e a quantidade deste item. A seguir, calcule e mostre o valor da conta a pagar. Entrada A entrada contém dois valores inteiros correspondentes ao código e à quantidade de um item conforme tabela acima. Saída A saída deve conter a mensagem “total: r$ “ seguido pelo valor a ser pago, com 2 casas após o pontodecimal. Exemplo de Entrada Exemplo de Saída 3 2 Total: R$ 10.00 4 3 Total: R$ 6.00 2 3 Total: R$ 13.50 Lógica de Programação1º Semestre 58 Exercícios propostos Quais das seguintes expressões são avaliadas como true? (A) 10 >= 8 (b) 8 <= 10 (c) 10 == 8 (d) 10 != 8 (E) ‘8’ < ‘10’ Quais das seguintes expressões são avaliadas como true? (A) ‘dave’ < ‘ed’ (b) ‘dave’ < ‘ed’ (c) ‘dave’ < ‘dale’ Qual é o valor da variável num após a seguinte execução? >>> Num = 10 >>> Num = num + 5 >>> Num == 20 >>> Num = num + 1 Avalie as seguintes expressões lógicas usando as regras de precedência dos operadores: (A) 10 >= 8 and 5 != 3 (B) 10 >= 8 and 5 == 3 or 14 < 5 Qual das seguintes expressões lógicas não é logicamente equivalente às outras duas? (A) not(num <0 or num > 10) (b) num > 0 and num < 10 (c) num >= 0 and num <= 10 Determine os resultados obtidos na avaliação das expressões lógicas seguintes sabendo que a, b, c contém, respectivamente, 2, 7, 3.5, E que existem duas variáveis m e n cujos conteúdos são, respectivamente, false e true: B == a * c and (m or n) B > a or b == math.Pow(a,a) M and b // a >= c or not a <= c Not m or n and math.Sqrt(a + b) >= c B/a == c or b/a != C M or math.Pow(b,a) <= c * 10 + a * b Escreva um programa que leia um número e apresente a raiz quadrada caso seja positivo ou nulo, e o quadrado do número caso seja negativo. Elabore um programa que leia dois números reais e mostre o resultado da diferença do maior valor pelo menor. Escreva um programa que leia um número inteiro de 3 dígitos e imprima se o algarismo da dezena é par ou ímpar. Elabore um programa que leia notas de três avaliações de um aluno. A primeira avaliação tem peso 2, a segunda tem peso 3 e, a terceira, peso 5. Calcule a média do aluno. Se a média do aluno for maior ou igual a 6, o aluno está aprovado; caso contrário, o aluno está reprovado. Mostre o resultado da decisão. Um pescador comprou um computador para controlar o rendimento diário de seu trabalho. Toda vez que ele traz um peso de peixes maior que o estabelecido pelo regulamento de pesca do estado de são paulo (50 quilos), deve pagar uma multa de r$ 4,00 por quilo excedente. Escreva um programa que leia o peso de peixes, e verifique se há excesso. Se houver, determine o peso excedente e o valor da multa. Caso contrário, mostrar “dentro do regulamento”. 59 Análise e Desenvolvimento de Sistemas 1º semestre 59 Encadeada Considere o problema de conversão de temperatura: celsius para fahrenheit (usuário deve digitar “f”), fahrenheit para celsius (usuário deve digitar “c”) e a terceira possibilidade de digitar um valor inválido. Faça um programa que mostra a temperatura convertida ou uma mensagem de opção inválida. Um posto de combustível vende três tipos de combustível: álcool, diesel e gasolina. O preço de cada litro dos combustíveis é apresentado na tabela abaixo. Faça um programa que leia um caracter que representa o tipo de combustível comprado (a, d ou g) e a quantidade em litros. O programa deve imprimir o valor em reais a ser pago pelo combustível. Combustível Preço por Litro A – Álcool 1,7997 D – Diesel 0,9798 G – Gasolina 2,1009 Um banco concederá um crédito especial aos seus clientes de acordo com o saldo médio no último ano. Receba o saldo médio de um cliente, calcule e mostre o valor do crédito, de acordo com a tabela a seguir. Saldo Médio Percentual Acima de R$ 4.000,00 30% do saldo médio De R$ 3.000,01 a R$ 4.000,00 25% do saldo médio De R$ 2.000,01 a R$ 3.000,00 20% do saldo médio Até R$ 2.000,00 10% do saldo médio Escreva um programa que tendo como entrada o tipo do vôo (‘n’ para noturno / ‘d’ para diurno) e a quantidade de pessoas; calcula e mostra a tarifa e o total a pagar de acordo com as condições abaixo: Lógica de Programação1º Semestre 60 Tipo de Vôo Quantidade Tarifa Diurno <= 50 R$ 200,00 > 50 R$ 120,00 Noturno <= 50 R$ 100,00 > 50 R$ 80,00 Total a pagar = quantidade de pessoas x tarifa Faça um programa para resolver o valor de f(x) dependendo da entrada do usuário. Um endocrinologista deseja controlar a saúde de seus pacientes e, para isso, utiliza o índice de massa corpórea (imc). Sabendo-se que o imc é calculado através da seguinte fórmula: imc = peso/ (altura)2 , em que: peso é dado em kg e altura é dada em metros. Escreva um programa que, tendo do informação de entrada o peso e a altura, apresenta o imc da pessoa e sua faixa de risco, baseando- se na seguinte tabela: IMC Faixa de risco Abaixo de 20 Abaixo do peso A partir de 20 até 25 Normal Acima de 25 até 30 Excesso de peso Acima de 30 até 35 Obesidade Acima de 35 Obesidade mórbida 61 Análise e Desenvolvimento de Sistemas 1º semestre 61 Escreva um programa que recebe dois números, executa e mostra o resultado das operações listadas a seguir de acordo com a escolha do usuário. Opção Operação 1 Média entre os números digitados 2 Diferença do maior pelo menor 3 Produto entre os números digitados 4 Divisão do primeiro pelo segundo Se a opção digitada for inválida, mostrar uma mensagem de erro e encerrar a execução do programa. Lembre-se de que, na opção 4, o segundo número deve ser diferente de zero. Um hospital precisa de um programa para calcular e imprimir os gastos de um paciente. A tabela de preços do hospital é a seguinte: Quartos: Particular – r$ 360,00 Semi-particular – r$ 210,00 Coletivo – r$ 185,00 Wifi: r$ 3,00 Tv a cabo: r$ 4,00 Escreva um programa que leia: o número de dias gastos no hospital; o tipo de quarto; se usou ou não o wifi (sim, não); se usou ou não a tv a cabo (sim, não). Então emita um relatório, como por exemplo o seguinte: Hospital comunitário Número de dias no hospital : 5 Tipo de quarto : particular Diárias :............... R$ 1800,00 Wifi :..... ....... R$ 3,00 Tv a cabo :........... R$ 4,00 Total :................... R$ 1807,00 Faça um programa que tendo como dados de entrada o código de região de localização do cliente, o nome do cliente, o número de peças vendidas e o nome do vendedor; calcule e informe o valor do frete, a comissão do vendedor e o lucro obtido com a venda. Sabendo-se que: O valor do frete depende da quantidade transportada e da região; Comissão do vendedor = 6,5 % do valor total da venda; Lucro = valor total venda – custo total – comissão do vendedor; Custo por peça = r$ 7,00; Custo total = custo por peça * número de peças vendidas; Valor total da venda = custo total acrescido em 50%; Lógica de Programação1º Semestre 62 Valor do frete por região: Código da Região Nome da Região Valor do frete por peça (até 1.000 peças) R$ Valor do frete por peça (acima de 1.000 peças) R$ 1 Sul 1,00 10% 2 Norte 1,10 8% 3 Leste 1,15 7% 4 Oeste 1,20 11% 5 Noroeste 1,25 15% 6 Sudeste 1,30 12% 7 Centro-Oeste 1,40 18% 8 Nordeste 1,35 15% Deseja-se fazer uma pesquisa a respeito do consumo mensal de energia elétrica em uma determinada cidade. Para isso são fornecidos os seguintes dados: o preço de kw/hora consumido; para cada consumidor a sua identificação, a quantidade de kw/hora consumida durante o mês e o tipo de consumidor (industrial, comercial, residencial). Dependendo do tipo de consumidor a conta mensal sofre um acréscimo: industrial – 15% e comercial – 5% (residencial não tem acréscimo). O programa deverá calcular e exibir a conta mensal de cada consumidor igual a 0 (zero). 63 Análise e Desenvolvimento de Sistemas 1º semestre 63 Capítulo 5 - estrutura de repetição ou laço indefinido - while Lógica de Programação1º Semestre 64 5. Estrutura de repetição ou laço indefinido - while Introdução Já vimos duas formas de controlar o fluxo de um programa: estrutura de controle sequencial, estrutura de controle de seleção ou condicional. Estrturas de controle – fonte (dierbach) Vamos iniciar as estruturas de repetição, também conhecidos por loop (laço) e iterativo, que, junto com as demais
Compartilhar