Prévia do material em texto
MCG114 – Programação de Computadores I UFRJ Campus Macaé 116:09:20 Objetivos • Desenvolver Algoritmos • Implementar Algoritmos em uma linguagem de programação (Python) • Executar programas • Avaliar seus Resultados 2UFRJ - MACAÉ16:09:20 Bibliografia 316:09:20 Introdução à Programação com Python: algoritmos e lógica de programação para iniciantes Nilo Ney Coutinho Menezes Algoritmos e Programação: Teoria e Prática Marco Medina e Cristina Fertig Bibliografia 416:09:20 01 – Introdução 516:09:20 616:09:20 716:09:20 Mas… o que é Algoritmo? Algoritmo • Procedimento definido passo a passo para a solução de um problema • Uma sequência detalhada de ações a serem executadas para realizar uma tarefa. 816:09:20 Algoritmo • Em matemática: “sequência finita de regras, raciocínios, ou operações que, aplicada a um número finito de dados, permite solucionar classes semelhantes de problemas.” • Em informática: “conjunto de regras e procedimentos lógicos perfeitamente definidos que levam à solução de um problema em um número finito de etapas.” 916:09:20 Trocar lâmpada • Passo 1: Pegar a lâmpada nova • Passo 2: Pegar a escada • Passo 3: Posicionar a escada embaixo da lâmpada queimada • Passo 4: Subir na escada coma lâmpada nova • Passo 5: Retirar a lâmpada queimada • Passo 6: Colocar a lâmpada nova • Passo 7: Descer da escada • Passo 8: Ligar o interruptor • Passo 9: Guardar a escada • Passo 10: Jogar a lâmpada velha no lixo 1016:09:20 Exemplo de algoritmos Sacar dinheiro • Passo 1: Ir até o caixa eletrônico • Passo 2: Colocar o cartão • Passo 3: Digitar a senha • Passo 4: Solicitar o saldo • Passo 5: Se o saldo for maior ou igual à quantia desejada, • sacar a quantia desejada; • caso contrário sacar o valor do saldo • Passo 6: Retirar dinheiro e cartão • Passo 7: Sair do caixa eletrônico 1116:09:20 Exemplo de algoritmos 12 Bolo de Chocolate Ingredientes • 4 xícaras (chá) de farinha de trigo. • 2 xícaras (chá) de açúcar cristal. • 2 xícaras (chá) de achocolatado. • 2 colheres (sopa) de fermento em pó. • 1 pitada de sal. • 3 ovos. • 2 xícaras (chá) de água morna. • 1 xícara (chá) de óleo. • Óleo para untar. • Farinha de trigo para polvilhar. Modo de preparo • Numa vasilha, misture 4 xícaras (chá) de farinha de trigo, 2 xícaras (chá) de açúcar cristal, 2 xícaras (chá) de achocolatado, 2 colheres (sopa) de fermento em pó e 1 pitada de sal • Junte 3 ovos, 2 xícaras (chá) de água morna e 1 xícara (chá) de óleo. • Misture bem. • Unte uma forma retangular de 25 cm x 37 cm com óleo • Polvilhe farinha de trigo sobre a forma untada • Despeje a massa na forma • Asse em temperatura média (de 170°C a 180° C) por 30 minutos. • Sirva o Bolo ao Professor na próxima aula. 16:09:20 Exemplo de algoritmos Exemplo de algoritmos Algoritmo Euclidiano: algoritmo para obter o máximo divisor comum (mdc) entre dois número inteiros. MDC(a,b), pode ser resumido em: 1. Dividir um número a por b, o resto é r 2. Substituir a por b 3. Substituir b por r 4. Continuar a divisão de a por b até que não possa mais ser dividido pelo outro. Neste caso, a é o mdc 1316:09:20 Como escrever algoritmos 14 • Alternativas para expressar algoritmos para computador: – Fluxograma – Pseudocódigo 16:09:20 Fluxograma 1516:09:20 Pseudocódigo 1616:09:20 1716:09:20 Programas de Computador • Programa de Computador = Conjunto de instruções que será executado pelo processador em uma determinada sequência. • Um programa é que um tipo de algoritmo. • Suas operações são específicas para o computador e restritas ao conjunto de instruções que o processador pode executar. 1816:09:20 Programa • Algoritmo = método para solucionar um problema • Um algoritmo passa a ser chamado de programa depois de convertido para linguagem aceita por um computador • Todas as tarefas executadas pelo computador são realizados por programas 1916:09:20 Por que aprender a programar? 2016:09:20 Por que programar? • Aprender a programar é uma atividade básica de um cientista ou engenheiro da computação. • Eu não sou da computação!!! Por que programar? 2116:09:20 Por que programar? Eu sou das engenharias! Como engenheiro: – ser capaz de automatizar algum processo. – criar programas para gerenciar e automatizar algum processo que hoje é manual – desenvolver novas ferramentas ou protótipos – criar ferramentas/protótipos você deverá fazer simulações computacionais para fazer testes preliminares – enxergar situações onde uma solução computacional pode trazer benefícios. – mesmo que você não implemente (programe) a solução você poderá propô-la e será capaz de “conversar” com o pessoal de TI para implementar a solução. 2216:09:20 02 – Introdução ao Python, tipos de dados e variáveis 2316:09:20 2416:09:20 A linguagem: Python • Site Oficial: http://www.python.org/ • Site para Download: http://www.python.org/downloads/ • Versão Base para as aulas: Python 3.8 2516:09:20 http://www.python.org/ http://www.python.org/download/ Por que Python? Produtividade! • Reduz tempo de desenvolvimento – Código em Python é 2-10x menor do que em C, C++ e Java • Melhora a manutenção no programa – O código é bem mais fácil de ler/entender • Menos treino – A linguagem é mais fácil de aprender 2616:09:20 Por que Python? 2716:09:20 2816:09:20 Como começar? 2916:09:20 Como representar os dados? Manipulação de dados 3016:09:20 • Computador é responsável pela manipulação de informações • É necessário que haja formas de se trabalhar com diferentes tipos de dados em um programa • Apesar de internamente o computador manipular números, as linguagens de programação permitem que utilizemos outros tipos de informação Tipos de Dados Definições: • São categorias de valores que são processados de forma semelhante • Um conjunto de objetos que tem em comum o mesmo comportamento diante um conjunto definido de operações Ex. números inteiros são processados de forma diferente dos números de ponto flutuante e dos números complexos 3116:09:20 Tipos de Dados • Tipos primitivos: são aqueles já embutidos no núcleo da linguagem – Simples: números (int, float, complex) e cadeias de caracteres (strings) – Compostos: listas, dicionários, tuplas e conjuntos • Tipos definidos pelo usuário: são correspondentes a classes (orientação objeto) 3216:09:20 Tipos Primitivos De Dados • Inteiro: Admite somente números inteiros. Utilizado para representar uma contagem (quantidade). 3316:09:20 Operações Comparações Adição (+) Igual (==) Subtração (-) Diferente (!=) Multiplicação (*) Maior (>) Divisão (/) Menor (<) Potenciação (**) Maior ou igual (>=) Raiz (sqrt) Menor ou igual (<=) Resultado inteiro de uma divisão (//) Resto da divisão por inteiro (%) Tipos Primitivos De Dados • Inteiro: Admite somente números inteiros. Utilizado para representar uma contagem (quantidade). 3416:09:20 Tipos Primitivos De Dados • Float (Real): Admite números reais. Geralmente é utilizado para representar uma medição 3516:09:20 Operações Comparações Adição (+) Igual (==) Subtração (-) Diferente (!=) Multiplicação (*) Maior (>) Divisão (/) Menor (<) Potenciação (**) Maior ou igual (>=) Raiz (Sqrt) Menor ou igual (<=) Tipos Primitivos De Dados • Floats são implementados usando tipicamente 2 palavras de memória. • Devem possuir um ponto decimal ou escritas em notação científica com a letra “e” precedendo a potência de 10. >>> 10 # inteiro 10 >>> 10.0 # ponto flutuante 10.0 >>> 99e3 99000.0 >>> 99e-3 0.09900000000000000 3616:09:20 George Boole Conhecem? 37 George Boole • O matemático britânico George Boole nos mostrou como as coisas podem ser simplesmente relativas. • Pioneiro no desenvolvimento da lógica e matemática • Quaisquer valores podem ser reduzidos a sim ou não, verdadeiro ou falso, ou 0 ou 1 • Seu sistema binário “booleano”foi detalhado em An Investigation of the Laws of Thought ( 1854) 38 Tipos Primitivos De Dados • Boolean: As constantes True e False são apenas símbolos convenientes, qualquer valor não nulo é visto como verdadeiro enquanto que 0 ou vazio é visto como falso. >>> a = 4 >>> b = 4 >>> c = a == b >>> c True >>> b = 5 >>> c = a == b >>> c False 39 Expressões Booleanas • Também chamadas de expressões lógicas • Resultam em verdadeiro (True) ou falso (False) • São usadas em comandos condicionais e de repetição • Servem para analisar o estado de uma computação e permitir escolher o próximo passo • Operadores mais usados o Relacionais: > , < , ==, !=, >=, <= o Booleanos: and, or, not 4016:09:20 Expressões Booleanas • Tabela Verdade 4116:09:20 AND V F V V F F F F OR V F V V V F V F NOT V F F V Obs: Unário XOR V F V F V F V F Expressões Booleanas 4216:09:20 Expressões Booleanas 4316:09:20 Expressões Booleanas 4416:09:20 Expressões Booleanas 4516:09:20 Link: https://www.google.com/doodles/george-booles-200th-birthday?doodle=1861 0284&domain_name=google.com.br&hl=pt-BR Expressões Booleanas • Avaliação feita em “Curto-circuito” – Expressão avaliada da esquerda para a direita – Se o resultado (verdadeiro ou falso) puder ser determinado sem avaliar o restante, este é retornado imediatamente 4616:09:20 Expressões Booleanas Complete a tabela a seguir utilizando: a = True, b = False e c = True 4716:09:20 Expressão Resultado a and a ☐True ☐False b and b ☐True ☐False not c ☐True ☐False not b ☐True ☐False not a ☐True ☐False a and b ☐True ☐False b and c ☐True ☐False a or c ☐True ☐False b ^ c ☐True ☐False a or c ☐True ☐False c ^ a ☐True ☐False Expressões Booleanas Complete a tabela a seguir utilizando: a = True, b = False e c = True 4816:09:20 Expressão Resultado a and a 🗷True ☐False b and b ☐True 🗷False not c ☐True 🗷False not b 🗷True ☐False not a ☐True 🗷False a and b ☐True 🗷False b and c ☐True 🗷False a or c 🗷True ☐False b ^ c 🗷True ☐False a or c 🗷True ☐False c ^ a ☐True 🗷False Expressões Booleanas • Qual é a expressão correta em Python para verificar se um número armazenado na variável x está entre 0 e 5. a) x > 0 and < 5 b) 0 < x < 5 c) x > 0 or x < 5 d) x > 0 and x < 5 4916:09:20 Expressões Booleanas • Qual é a expressão correta em Python para verificar se um número armazenado na variável x está entre 0 e 5. a) x > 0 and < 5 b) 0 < x < 5 c) x > 0 or x < 5 d) x > 0 and x < 5 5016:09:20 Expressões Booleanas Precedência: • Quando uma expressão tiver mais de um operador lógico, avalia-se o operador not primeiramente, seguido do operador and e finalmente o operador or. True or False and not True True or False and False True or False True 5116:09:20 Expressões Booleanas Precedência: • Os operadores lógicos relacionais também podem ser utilizados em expressões com operadores lógicos • Nesses casos, os operadores relacionais devem ser avaliados primeiramente. salario > 1000 and idade > 18 350 > 1000 and 20 > 18 False and True False 5216:09:20 Expressões Precedência das Operações 5316:09:20 Expressões • Quais das seguintes expressões corresponde, usando parênteses, à seguinte expressão: 5*3 > 10 and 4 + 6 == 11 a) ((5*3) > 10) and ((4+6) == 11) b) (5*(3 > 10)) and (4 + (6 == 11)) c) ((((5*3) > 10) and 4)+6) == 11 d) ((5*3) > (10 and (4+6))) == 11 5416:09:20 Expressões • Quais das seguintes expressões corresponde, usando parênteses, à seguinte expressão: 5*3 > 10 and 4 + 6 == 1 a) ((5*3) > 10) and ((4+6) == 11) b) (5*(3 > 10)) and (4 + (6 == 11)) c) ((((5*3) > 10) and 4)+6) == 11 d) ((5*3) > (10 and (4+6))) == 11 5516:09:20 Expressões Exercício: Calcule o resultado da expressão A>B and C or D sendo que, A = 1, B = 2, C = True e D = False 5616:09:20 Expressões Booleanas Calcule – Inteiros e Reais a) ((3 + 2) * 4 / 5) ** 2 b) ((3.4 + 2.6) * 4 / 8) – Lógico a) True and (True or False) b) False or (True and False) c) True and not (True or False) d) not ( not (True and True) or False) e) True ^ True f) not (True ^ False) 5716:09:20 Tipos Primitivos De Dados • Caractere: Admite caracteres alfanuméricos. Os números quando declarados como caracteres tornam se representativos e perdem a atribuição de valor. 5816:09:20 Operações Comparações Igual (==) Diferente (!=) Maior (>) Menor (<) Maior ou igual (>=) Menor ou igual (<=) Tipos Primitivos De Dados • Caracteres são representados utilizando um byte da memória. Utiliza-se aspas (simples ou duplas para delimitar o caractere. O mesmo delimitador deve ser usado no início e fim do caractere) >>> a = “b” >>> a ‘b’ >>> a = ‘b’ >>> a ‘b’ >>> a = ‘ “ ’ >>> a ‘”’ 59 Tipos Primitivos De Dados • Python usa a tabela de caracteres default do S.O. – Ex.: ASCII, UTF-8 • Caracteres não imprimíveis podem ser expressos usando notação “barra-invertida” (\) – \n é o mesmo que new line – \t é o mesmo que tab – \\ é o mesmo que \ 6016:09:20 Tipos Primitivos De Dados 6116:09:21 Tipos Primitivos De Dados • String: Conjunto de caracteres, também conhecido como Cadeia de Caracteres 6216:09:21 Operações Comparações Concatenação (+) Igual (==) Repetição (*) Diferente (!=) Maior (>) Menor (<) Maior ou igual (>=) Menor ou igual (<=) Tipos Primitivos De Dados • Strings: Utiliza-se aspas (simples ou duplas para delimitar a string. O mesmo delimitador deve ser usado no início e fim do string) >>> a = “Casa” >>> a ‘Casa’ >>> a = ‘Casa’ + ‘ ‘ + ‘Velha’ >>> a ‘Casa Velha’ >>> a = ‘b’ * 5 >>> a ‘bbbbb’ 6316:09:21 Até agora... int float Como armazenar? long boolean char Como referenciar? string Variáveis! 6416:09:21 Variáveis • Manipulamos informações que, durante a execução de um programa, ficam armazenadas em memória • Para que tais valores possam ser manipulados na linguagem de programação, é preciso que haja algum identificador informando o local da memória (endereço) • Uma variável é o local onde armazenamos valores. • Uma variável é um local na memória principal, como um “endereço”. 6516:09:21 Variáveis • Todos os dados usados em um programa são armazenados em variáveis • Variáveis só existem durante a execução do programa • Em Python, as variáveis não precisam ser explicitamente definidas, são definidas no momento da atribuição 6616:09:21 Variáveis Nomenclatura • Cada variável possui um nome único :: identificador • Um identificador pode ter letras, números e alguns símbolos especiais • Não podem começar por números nem possuírem espaços • Letras maiúsculas são diferentes de minúsculas (case sensitive). • Palavras reservadas (if, while, etc) são proibidas 6716:09:21 Variáveis Nomenclatura • Exemplos: – a1 – velocidade – velocidade90 – salário_médio – salário médioERRADO! Não pode conter espaços – _b – 1a ERRADO! Não pode começar com números 6816:09:21 Variáveis Atribuição – O comando de atribuição serve para atribuir valores para variáveis – Uma variável é modificada usando o comando de atribuição: variável = valor – O comando de atribuição pode conter expressões do lado direito: variável = expressão 6916:09:21 Variáveis Atribuição >>>a= 2 #atribuição de valor >>>b= 3 #atribuição de valor >>>soma = a + b #atribuição de expressão >>>print(soma) 5 7016:09:21 Variáveis Atribuição – É possível também atribuir a várias variáveis simultaneamente: • var1,var2,...,varN = expr1,expr2,...,exprN 7116:09:21 Variáveis Representação em Memória: Em Python, uma variável é apenas um NOME que REFERENCIA um OBJETO. >>> a = 42 >>> a = a + 1 >>> b = 43 7216:09:21 a int 42 a int 42 int 43 b int 43 Variáveis • Representação em Memória: >>> x = “Casa” >>> y = x 7316:09:21 x String ’Casa’ y Variáveis • Variáveis são criadas dinamicamente e destruídas quando não mais necessárias, por exemplo, quandosaem fora de escopo (veremos isso mais tarde) • O tipo de uma variável muda conforme o valor atribuído, i.e., int, float, string, etc. >>> a = 1 >>> type(a) <class 'int’> >>> a = "oi" >>> type(a) <class 'str'> 7416:09:21 Variáveis Qual o valor armazenado na variável a no fim do programa? >>> d = 3 >>> c = 2 >>> b = 4 >>> d = c + b >>> a = d + 1 >>> a = a + 1 7516:09:21 Variáveis Qual o valor armazenado na variável a no fim do programa? >>> d = 3 >>> c = 2 >>> b = 4 >>> d = c + b >>> a = d + 1 >>> a = a + 1 a = 8 7616:09:21 Variáveis • Qual é o valor impresso ao final da seguinte sequência de comandos? >>> dia = “quinta-feira” >>> dia = 32.5 >>> dia = 19 >>> Dia = 20 >>> print(dia) 7716:09:21 Variáveis • Qual é o valor impresso ao final da seguinte sequência de comandos? >>> dia = “quinta-feira” >>> dia = 32.5 >>> dia = 19 >>> Dia = 20 >>> print(dia) 19 7816:09:21 Variáveis • Qual os valores de X e Y? >>> X = 15 >>> Y = X >>> X = 22 a) x é 15 e y é 15 b) x é 22 e y é 22 c) x é 15 e y é 22 d) x é 22 e y é 15 7916:09:21 Variáveis • Qual os valores de X e Y? >>> X = 15 >>> Y = X >>> X = 22 a) x é 15 e y é 15 b) x é 22 e y é 22 c) x é 15 e y é 22 d) x é 22 e y é 15 8016:09:21 Variáveis >>> valor = 6 * 1 – 2 >>> print(valor) 4 Escreva a expressão de forma que o seu resultado seja -6 8116:09:21 Variáveis >>> valor = 6 * 1 – 2 >>> print(valor) 4 Escreva a expressão de forma que o seu resultado seja -6 >>> valor = 6 * (1 – 2) >>> print(valor) -6 8216:09:21 Variáveis João tem R$10.000,00. Ele resolveu aplicar esse valor a juros compostos, durante 1 ano, à taxa de 3,5% ao mês. A fórmula para calcular o montante é: M = P * (1+ i)n Escreva um programa que contenha as variáveis: M, P, i e n e calcule, utilizando a fórmula acima, o valor obtido pelo João no final da aplicação. 8316:09:21 Variáveis João tem R$10.000,00. Ele resolveu aplicar esse valor a juros compostos, durante 1 ano, à taxa de 3,5% ao mês. A fórmula para calcular o montante é: M = P * (1+ i)n 8416:09:21 Variáveis Escreva um programa que transforme a temperatura em Fahrenheit para Celsius. Considere o valor da temperatura em Nova York na figura acima. Celsius = (Fahrenheit – 32) / 1.8 8516:09:21 Variáveis Escreva um programa que transforme a temperatura em Fahrenheit para Celsius. Considere o valor da temperatura em Nova York ao lado. Celsius = (Fahrenheit – 32) / 1.8 8616:09:21 MCG114 – Programação de Computadores I Material elaborado por: Janaína Gomide & Danilo Freitas Atualizado por: Anselmo Pestana R Costa & Adriano Neves 87UFRJ - MACAÉ16:09:21