Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação 1 Lógica de Programação Estruturas de dados ● ● ● Representação computacional das informações do problema ser resolvido Informações podem ser de diferentes tipos, então implicam diferentes representações Ex: Identifique os dados de entrada e saída neste algoritmo para calcular a aceleração de um corpo: 1. Leia para variável M a massa do corpo em kg 2. Leia para variável F força a ser aplicada ao corpo 3. Calcule aceleração: a = F / M – ac*Mg 4. Mostre o valor da variável a na tela 2 Lógica de Programação Tipos primitivos de dados ● São os tipos de informação que o computador manipula: ● ● Numéricos: ● Inteiros: um subconjunto dos números inteiros, podendo ser sinalizados ou não (ex: 4, -5, 1034, 0) ● Reais: um subconjunto dos números reais, com determinada precisão (ex: 1.34, 2.7828) Não-numéricos: ● Alfanuméricos: sequências de letras, algarismos e símbolos (ex: “ABCDEF”, “FX90”, “R$ 10,00”) ● Booleanos: valores que representam verdadeiro ou falso (ex: TRUE, FALSE) 3 Lógica de Programação Constantes e variáveis ● Informações podem estar guardadas em constantes ou variáveis ● Constantes: valores que não mudam ao longo do tempo ● Variáveis: guardam valores que podem mudar ● Conteúdo: valor da variável ● Identificador: o nome da variável ● Do ponto de vista computacional, uma variável é uma área de memória RAM 4 Lógica de Programação Constantes e variáveis ● Ex: Algoritmo para calcular a aceleração de um corpo: 1. Leia para variável M a massa do corpo em kg 2. Leia para variável F força a ser aplicada ao corpo 3. Calcule aceleração: a = F / M – ac*Mg 4 Mostre o valor da variável a na tela constantes F: variável que representa a força aplicada M: variável que representa a massa do corpo a: variável que representa a aceleração resultante ac: constante que representa o atrito cinético g: constante que representa a aceleração gravitacional 5 Lógica de Programação Constantes e variáveis ● Ex: Algoritmo para formatar o nome de uma pessoa: 1. Leia para variável nome o primeiro nome de uma pessoa 2. Leia para variável sobrenome seu sobrenome 3. Faça variável NomeCompleto = nome + “ “ sobrenome 4. Mostre o valor da variável NomeCompleto na tela Variáveis: nome, sobrenome, NomeCompleto Constantes: “ “ Obs: todas variáveis e constantes são alfanuméricas 6 Lógica de Programação Constantes e variáveis ● ● O identificador é o nome de um local onde se podem guardar valores de determinado tipo de dados A definição de identificadores possui regras (sendo algumas de bom senso): ● Devem iniciar com caractere alfabético ● Segundo caractere em diante pode ser numérico ● Pode-se usar símbolo “_” como parte do identificador ● Devem ajudar a lembrar do que se trata a informação guardada (i.e: mnemônico) ● Ex: nome, sobrenome, a, F, lista, ... 7 Lógica de Programação Declaração de variáveis ● As variáveis necessárias em um algoritmo devem ser previamente declaradas Assim se reserva memória para guardar seus conteúdos A declaração inclui o tipo de dados da variável e seu identificador, na forma: Tipo variável1, variável2, ...; Exemplos: real x, y; // coordenadas de um ponto texto Nome; inteiro Dia, mes, ano; logico Sucesso; /* verificação do nome bem sucedida */ ● ● ● 8 Lógica de Programação Declaração de variáveis ● Ao serem declaradas as variáveis não estão inicializadas Quer dizer, não possuem valor inicial A declaração ocorre antes das ações do algoritmo Os comentários representam qualquer explicação inserida no algoritmo, para ajudar seu entendimento ● Comentários são precedidos por // ● ... ou delimitados por /* e */ (neste caso, podem ocupar mais de uma linha) ● ● ● 9 Lógica de Programação Operações básicas: atribuição ● Atribuir ou associar um valor a uma variável ● Sintaxe genérica: identificador ← expressão; ● Expressão depende do tipo da variável: ● Numéricas: expressão pode conter constantes, variáveis numéricas, expressões aritméticas, funções matemáticas ● Lógicas: expressão deve resultar em Verdadeiro ou Falso ● Texto: expressão deve resultar em um texto ● Exemplos: x ← 10 // variável x é do tipo Inteiro sucesso ← (x < 20) E (y > 10); // sucesso é do tipo 10 Lógica de Programação Operações básicas: operadores usados em expressões ● Aritméticos (somente com variáveis numéricas): +, - Adição e subtração (unários) +, - Adição e subtração (binários) * Multiplicação / Divisão div Divisão inteira ou truncada mod Resto da divisão inteira 11 Lógica de Programação Operações básicas: operadores usados em expressões ● Relacionais (usados para comparações): ● ● ● Somente com dados numéricos: >, >=, <, <= Com quaisquer tipos de dados: = (igual), =/= (diferente) Lógicos ou Booleanos (usados para combinar condições): ● E (conjunção). Ex: (x > 0) E (x < 10) ● OU (disjunção). Ex: (idade < 5) OU (idade >= 65) ● NOT (negação). Ex: NOT (opcao = “”) 12 Lógica de Programação Descrição do algoritmo em pseudo-linguagem: INICIO Declaração de variáveis e constantes Inicialização de variáveis e constantes Comandos de entrada de dados Processamento / cálculo Comandos de saída de dados FIM 13 Lógica de Programação Descrição do algoritmo em pseudo-linguagem: Ex: cálculo de média INICIO Real P1, P2, P3, P4, M; Ler P1 Ler P2 Ler P3 Ler P4 M ← (P1 + P2 + P3 + P4) / 4 Escrever “Media final = “, M FIM 14 Lógica de Programação Exercícios: 1) Faça um algoritmo para ler dados pessoais (nome, ano de nascimento, endereço, sexo), e mostre esses dados da seguinte forma: Nome: nome completo Nascimento: ano de nascimento Idade: idade Sexo: M ou F Maior de idade: Verdadeiro ou Falso 15 Lógica de Programação Exercícios: 2) Faça um algoritmo para calcular e mostrar o perímetro de um polígono qualquer. 3) Faça um algoritmo para calcular e mostrar a área de um polígono qualquer. 4) Faça um algoritmo para mostrar de forma separada o valor inteiro de um número real e sua parte fracionária. 16 Lógica de Programação Exercícios: 5) Faça um algoritmo para calcular a resistência equivalente para um circuito com duas resistências em paralelo. 6) Faça um algoritmo para calcular o desvio padrão de um conjunto de 8 valores reais. 7) Em um cinema as cadeiras são numeradas sequencialmente, começando no canto esquerdo próximo à tela. Essas cadeiras estão organizadas em 40 fileiras de 20 cadeiras. Faça um algoritmo que informe que que fileira se encontre determinada cadeira, e sua posiçõa em relação ao início da fileira. 17 Lógica de Programação Estruturas de controle: Condicional: faz a escolha de ações a serem executadas, dependendo de condições definidas. ● ● ● Condições são dadas por expressões booleanas, que resultam em Verdadeiro ou Falso. Sintaxe geral: Se condição entao Bloco de comandos FimSe ou Se condição entao Bloco de comandos Senao Bloco de comandos FimSe 18 Lógica de Programação Representação em fluxograma para se ... então … senão Não Sentenças Condição Sim Sentenças 19 Lógica de Programação Estruturas de controle: exemplo ● Determinar se um número é par ou ímpar: INICIO Inteiro numero Escrever “Digite um numero: “ Ler numero Se (numero % 2 = 0) entao Escrever “Numero “, numero, “ é par” Senao Escrever “Numero “, numero, “ é ímpar” FimSe FIM 20 Lógica de Programação Estruturas de controle: exemplo Determinar se um número é par ou ímpar: (fluxograma) ● 21 Lógica de Programação Exercícios: 1) Faça um algoritmo para fazer a divisão de dois números reais. Antes de dividi-los deve ser feito um teste de validade. Caso não seja possível dividi-los, deve ser mostrada uma mensagem de erro. Se for possível, devese mostrar o resultado da divisão. 2) Faça um algoritmo para fazer a divisão de dois números inteiros. No entanto, antes de efetuar a divisão deve-se verificar se é possível fazer a divisão sem resto, gerando-se uma mensagem de erro caso contrário. 22 Lógica de Programação Exercícios: 3) Tendo como dados de entrada o sexo e a altura de uma pessoa, faça um algoritmo que calcule o peso ideal usando estas fórmulas (h = altura): Homens: 72.7 * h – 58 Mulheres: 62.1 * h - 44.7 23 Lógica de Programação Exercícios: 4) Traduza o fluxograma ao lado para Portugol. O que faz esse algoritmo ? 24 Lógica de Programação Condições: expressões que resultam em Verdadeiro ou Falso Condições simples: apenas uma comparação. Ex: Idade < 18 // Verdadeiro se pessoa for menor de idade Sexo = “M” // Verdadeiro se pessoa for do sexo feminino Condições compostas: combinam condições usando operadores lógicos (NAO, E, OU). Ex: Idade > 18 E sexo = “F” // mulheres maiores de idade X > 0 E x < 10 // valor da variável x está entre 0 e 10 25 Lógica de Programação Condições: exercício 1) Um edifício possui dois elevadores. Quando alguém chama um elevador, o sistema de controle seleciona o mais adequado. As regras de seleção para o melhor elevador são as seguintes (em ordem de preferência): i) Aquele que estiver indo na mesma direção do chamado, e indo para o andar de onde ele se originou. ii) Aquele que estiver parado e mais próximo do andar de onde veio o chamado. (continua ...) 26 Lógica de Programação Cada elevador é descrito pelas variáveis (N é 1 ou 2): Logico paradoN, subindoN Inteiro andarN O chamado é descrito pelas variáveis: Inteiro chamadoAndar Logico chamadoSubindo a) Escreva a condição que expresse a regra de seleção i) b) Escreva a condição que expresse a regra de seleção ii) c) Escreva a condição escolha o elevador adequado 27 Lógica de Programação Estrutura condicional: Escolhe … caso Mais prática para comparar uma variável (ou expressão) com múltiplos valores INICIO Inteiro opcao Escrever “Digite uma opcao entre 1 e 3: “ Ler opcao Escolhe opcao Caso 1: escrever “opcao 1” Caso 2: escrever “opcao 2” Caso 3: escrever “opcao 3” Defeito: escrever “opcao desconhecida !” FimEscolhe FIM 28 Lógica de Programação Estrutura condicional: Escolhe … caso Equivalente a se .. então … senão aninhados: INICIO Inteiro opcao Escrever “Digite uma opcao entre 1 e 3: “ Ler opcao Se opcao = 1 entao escrever “opcao 1” Senao Se opcao = 2 entao escrever “opcao 2” Senao Se opcao = 3 entao escrever “opcao 3” Senao escrever “opcao desconhecida !” FimSe FimSe FimSe FIM 29 Lógica de Programação Estrutura condicional: Escolhe … caso Podem-se especificar múltiplos valores em cada teste: INICIO Inteiro opcao Escrever “Digite uma opcao entre 1 e 10: “ Ler opcao Escolhe opcao Caso 1, 3, 5, 7, 9: escrever “opcao ímpar” Caso 2, 4, 6, 8, 10: escrever “opcao par” Defeito: escrever “opcao desconhecida !” FimEscolhe FIM 30 Lógica de Programação Exercícios 1) Refaça o programa da calculadora, mas desta vez usando a estrutura escolhe … caso. 2) Faça um algoritmo que mostre qual o último dia de um determinado mês informado pelo teclado. Caso seja informado o mês 2 (fevereiro), seu algoritmo deve identificar se é ano bissexto (assim o mês tem 29 dias), ou não (mês tem 28 dias). Obs: anos bissextos são dados pelas regras (segundo o calendário Gregoriano): i) De 4 em 4 anos é ano bissexto. ii) De 100 em 100 anos não é ano bissexto. iii) De 400 em 400 anos é ano bissexto. iv) Prevalecem as últimas regras sobre as primeiras. 31 Lógica de Programação Exercícios 3) A previsão do tempo na costa brasileira pode ser feita de forma aproximada usando-se um barômetro e um termômetro. Uma estimativa com boa chance de acerto se baseia na tabela abaixo (obtida em http://www.popa.com.br/meteorologia/pressao&temperatura.htm): Faça um algoritmo que forneça uma estimativa da previsão do tempo, usando a tabela acima. 32