Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação 1
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 a c *Mg 4. Mostre o valor da variável a na tela 2
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
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
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 a c *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 a c : constante que representa o atrito cinético g: constante que representa a aceleração gravitacional 5
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
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
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
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
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
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
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
Descrição do algoritmo em pseudo-linguagem: INICIO FIM 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 13
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
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
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
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
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
Representação em fluxograma para se... então senão Não Condição Sim Sentenças Sentenças 19
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
Estruturas de controle: exemplo Determinar se um número é par ou ímpar: (fluxograma) 21
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, deve- se 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
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
Exercícios: 4) Traduza o fluxograma ao lado para Portugol. O que faz esse algoritmo? 24
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
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
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
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
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
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
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
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