Prévia do material em texto
ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES I Noção de Algoritmos CONSTRUÇÃO DE PROGRAMAS ALGORITMO Um algoritmo é uma sequência de passos que visam atingir um objetivo bem definido. -Pessoas têm inteligência e habilidade racional: fazem perguntas para se esclarecer. -Computador não tem senso próprio: deve receber instruções explícitas e precisas (algoritmos). ALGORITMO Um algoritmo correto deve possuir 3 qualidades: Cada passo do algoritmo deve ser uma instrução que possa ser realizada. A ordem dos passos deve ser precisamente determinada. O algoritmo deve ter fim. ALGORITMO Primeiro algoritmo: trocar uma lâmpada no teto. -Quais serão as instruções? -Usaremos o português coloquial. ALGORITMO Início Remova a lâmpada queimada Coloque a nova lâmpada Fim. Algoritmo para trocar uma lâmpada no teto ALGORITMO Início Remova a lâmpada queimada Coloque a nova lâmpada Fim. Algoritmo para trocar uma lâmpada no teto O que é necessário para remover a lâmpada queimada? ALGORITMO - Posicione a escada debaixo da lâmpada queimada - Suba na escada até que a lâmpada possa ser alcançada - Gire a lâmpada queimada no sentido anti-horário até que se solte Algoritmo para trocar uma lâmpada no teto ALGORITMO Início Remova a lâmpada queimada Coloque a nova lâmpada Fim. Algoritmo para trocar uma lâmpada no teto O que é necessário para colocar a lâmpada nova? ALGORITMO - Escolha uma lâmpada da mesma potência da queimada - Posicione a nova lâmpada no soquete - Gire a lâmpada no sentido horário até que ela se firme - Desça da escada Algoritmo para trocar uma lâmpada no teto ALGORITMO Início Posicione a escada debaixo da lâmpada queimada Suba na escada até que a lâmpada possa ser alcançada Gire a lâmpada queimada no sentido anti-horário até que se solte Escolha uma lâmpada da mesma potência da queimada Posicione a nova lâmpada no soquete Gire a lâmpada no sentido horário até que ela se firme Desça da escada Fim. Algoritmo para trocar uma lâmpada no teto ALGORITMO Início Posicione a escada debaixo da lâmpada queimada Suba na escada até que a lâmpada possa ser alcançada Gire a lâmpada queimada no sentido anti-horário até que se solte Escolha uma lâmpada da mesma potência da queimada Posicione a nova lâmpada no soquete Gire a lâmpada no sentido horário até que ela se firme Desça da escada Fim. Algoritmo para trocar uma lâmpada no teto Sequenciamento: estabelece um padrão de comportamento. As ações devem ser executadas linearmente, em sequência, uma após a outra. ALGORITMO Início Posicione a escada debaixo da lâmpada queimada Suba na escada até que a lâmpada possa ser alcançada Gire a lâmpada queimada no sentido anti-horário até que se solte Escolha uma lâmpada da mesma potência da queimada Posicione a nova lâmpada no soquete Gire a lâmpada no sentido horário até que ela se firme Desça da escada Fim. Algoritmo para trocar uma lâmpada no teto E se a lâmpada não estiver queimada? ALGORITMO Início Posicione a escada debaixo da lâmpada queimada Suba na escada até que a lâmpada possa ser alcançada Gire a lâmpada queimada no sentido anti-horário até que se solte Escolha uma lâmpada da mesma potência da queimada Posicione a nova lâmpada no soquete Gire a lâmpada no sentido horário até que ela se firme Desça da escada Fim. Algoritmo para trocar uma lâmpada no teto E se a lâmpada não estiver queimada? Precisamos de um teste seletivo! ALGORITMO Início Acionar o interruptor Se a lâmpada não acender, então: Posicione a escada debaixo da lâmpada queimada Suba na escada até que a lâmpada possa ser alcançada Gire a lâmpada queimada no sentido anti-horário até que se solte Escolha uma lâmpada da mesma potência da queimada Posicione a nova lâmpada no soquete Gire a lâmpada no sentido horário até que ela se firme Desça da escada Fim. Algoritmo para trocar uma lâmpada no teto ALGORITMO Início Acionar o interruptor Se a lâmpada não acender, então: Posicione a escada debaixo da lâmpada queimada Suba na escada até que a lâmpada possa ser alcançada Gire a lâmpada queimada no sentido anti-horário até que se solte Escolha uma lâmpada da mesma potência da queimada Posicione a nova lâmpada no soquete Gire a lâmpada no sentido horário até que ela se firme Desça da escada Fim. Algoritmo para trocar uma lâmpada no teto Teste seletivo: determina qual conjunto de ações deve ser seguido, dependendo do resultado da condição resultar em verdadeiro ou falso. ALGORITMO Início Acionar o interruptor Se a lâmpada não acender, então: Posicione a escada debaixo da lâmpada queimada Suba na escada até que a lâmpada possa ser alcançada Gire a lâmpada queimada no sentido anti-horário até que se solte Escolha uma lâmpada da mesma potência da queimada Posicione a nova lâmpada no soquete Gire a lâmpada no sentido horário até que ela se firme Desça da escada Fim. Algoritmo para trocar uma lâmpada no teto E se a lâmpada nova estiver queimada? ALGORITMO Início Acionar o interruptor Se a lâmpada não acender, então: Posicione a escada debaixo da lâmpada queimada Suba na escada até que a lâmpada possa ser alcançada Enquanto a lâmpada não acender, faça: Gire a lâmpada queimada no sentido anti-horário até que se solte Escolha uma lâmpada da mesma potência da queimada Posicione a nova lâmpada no soquete Gire a lâmpada no sentido horário até que ela se firme Desça da escada Fim. Algoritmo para trocar uma lâmpada no teto ALGORITMO Início Acionar o interruptor Se a lâmpada não acender, então: Posicione a escada debaixo da lâmpada queimada Suba na escada até que a lâmpada possa ser alcançada Enquanto a lâmpada não acender, faça: Gire a lâmpada queimada no sentido anti-horário até que se solte Escolha uma lâmpada da mesma potência da queimada Posicione a nova lâmpada no soquete Gire a lâmpada no sentido horário até que ela se firme Desça da escada Fim. Algoritmo para trocar uma lâmpada no teto Repetição: mesmo trecho é repetido várias vezes, até que a condição de parada seja alcançada. Qual a condição de parada? O número de repetições é indefinido, porém, finito. ALGORITMO Até quando devemos refinar o algoritmo? - Até que as instruções cheguem o mais próximo possível das instruções de uma linguagem de programação. - O algoritmo deve ser independente de linguagem de programação. - As linguagens de programação, assim como os computadores, têm um conjunto restrito de instruções. - Muitas dessas instruções são comuns: testes seletivos, repetições, entrada e saída, etc. EXERCÍCIO Fazer um algoritmo para assistir ao filme “Coringa” no cinema. Início Ir ao cinema; Comprar uma entrada; Ver o filme; Voltar para casa; Fim. e se não tiver passando? e se tiver fila? e se não houver lugar? ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES I Noção de Algoritmos Quis - Semana 1 Pergunta 1 Você tem que fazer um algoritmo sobre como fazer café usando água, café em pó, uma garrafa térmica e um coador de café. Veja a solução apresentada por um colega em português coloquial. Escolha a alternativa correta que descreva as características deste algoritmo. Início do algoritmo Coloque o café Coloque a água Resposta Selecionada: a. O algoritmo está incompleto. Ele precisa ter a declaração de fim do algoritmo e ser refinado. Os dois passos indicados ainda são muito genéricos. Respostas: a. O algoritmo está incompleto. Ele precisa ter a declaração de fim do algoritmo e ser refinado. Os dois passos indicados ainda são muito genéricos. b. O algoritmo está correto. Ele contém todos os passos para se fazer um café. c. O algoritmo está correto. Ele contém todos os passos na ordem correta para se fazer um café. d. O algoritmo está correto. Ele contém as declarações de início do algoritmo e tem os dois passos concretos para se fazer um café. e. O algoritmo está incorreto. Não precisa ter a indicação de iníciodo algoritmo. ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES I Fluxogramas ALGORITMOS Na aula passada aprendemos o conceito de algoritmos. Sequência de passos ou instruções bem definidos que visam atingir um objetivo. Estruturas sequenciais, condicionais e de repetição. FLUXOGRAMA Representação esquemática de um algoritmo, feito através de gráficos que ilustram a transição de informações entre os elementos que o compõem. Representa a lógica interna dos programas. SIMBOLOGIA Início ou fim do fluxograma Entrada ou saída de dados Instrução Ponto de decisão Fluxo de dados e conexão ALGORITMO Início Acionar o interruptor Se a lâmpada não acender, então: Posicione a escada debaixo da lâmpada queimada Suba na escada até que a lâmpada possa ser alcançada Enquanto a lâmpada não acender, faça: Gire a lâmpada queimada no sentido anti-horário até que se solte Escolha uma lâmpada da mesma potência da queimada Posicione a nova lâmpada no soquete Gire a lâmpada no sentido horário até que ela se firme Desça da escada Fim. Algoritmo para trocar uma lâmpada no teto FLUXOGRAMA Início Leia N1 Leia N2 Leia N3 M ß (N1 + N2 + N3) / 3 Escreva (‘A média é: ‘, M) Fim. Algoritmo para calcular a média de notas FLUXOGRAMA Início Leia N1 Leia N2 Leia N3 M ß (N1 + N2 + N3) / 3 Se M > 5.0 então: Escreva (‘O aluno passou!’) Senão: Escreva (‘O aluno não passou!’) Fim. Algoritmo para calcular a média de notas EXERCÍCIO Modifique o exemplo anterior para calcular a média de notas para 100 alunos. Desenvolva o algoritmo e o fluxograma. ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES I Fluxogramas Quis 2 Considere o fluxograma abaixo e assinale a alternativa correta: Resposta Selecionada: e. O fluxograma apresenta entrada e saída de dados, uma instrução matemática, dois pontos de decisão e um fluxo de controle de repetição. Respostas: a. O fluxograma apresenta entrada e saída de dados, um ponto de decisão e um fluxo de controle de repetição. b. O fluxograma apresenta uma instrução matemática, um ponto de decisão e um fluxo de controle de repetição. c. O fluxograma apresenta entrada de dados, uma instrução matemática, um ponto de decisão e duas saídas de dados. d. O fluxograma apresenta saída de dados, uma instrução matemática, um ponto de decisão e um fluxo de controle de repetição. e. O fluxograma apresenta entrada e saída de dados, uma instrução matemática, dois pontos de decisão e um fluxo de controle de repetição. ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES I Sobre Python PYTHON Desenvolvida no final da década de 80 por Guido van Rossum (CWI – Holanda) De propósito geral, projetada para desenvolver programas de alta legibilidade Possui uma vasta biblioteca para diferentes aplicações Grande popularidade nos últimos anos Versão atual: 3.8.3 (desejável: > 3.5) PYTHON Em nossa disciplina, poderemos aprender Python: - Usando uma interface online, que não precisa instalar nenhum software no computador ou - Instalando o interpretador Python no computador e uma IDE INTERFACE ONLINE Jupyter Notebook: https://jupyter.org/ https://jupyter.org/ INSTALAÇÃO Para configurar o Python no computador, é necessário fazer o download e instalar o kit de desenvolvimento em Python - https://www.python.org/downloads/ Instalar a versão de acordo com Sistema Operacional: - Windows - Linux - Mac OSX https://www.python.org/downloads/ TESTANDO O kit já vem com o interpretador IDLE Para executá-lo, basta selecioná-lo no menu Fonte: https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo TESTANDO Interpretador IDLE Fonte: https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo TESTANDO Abrindo uma nova janela Fonte: https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo TESTANDO Executando o arquivo Fonte: https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo https://www.youtube.com/watch?time_continue=92&v=3Xy221yv9A8&feature=emb_logo IDE Integrated Development Environment Aplicativo que fornece funcionalidades interessantes para o programador de software Geralmente consiste de um editor de texto, compilador e debugador de Código Para Python, existem várias IDEs disponíveis: https://wiki.python.org/moin/IntegratedDevelop mentEnvironments https://wiki.python.org/moin/IntegratedDevelopmentEnvironments https://wiki.python.org/moin/IntegratedDevelopmentEnvironments PyCharm Iremos utilizar o PyCharm: https://www.jetbrains.com/pycharm/ Instalação do plugin “PyCharm cell mode” Configuração de teclas de atalho https://www.jetbrains.com/pycharm/ ALGORITMOS E PROGRAMAÇÃO DE COMPUTADORES I Sobre Python Quis 3 Assinale a alternativa que contém a(s) abordagem(ns) que possibilita(m) a construção de um programa em Python. Resposta Selecionada: c. Pode-se utilizar uma interface on-line, que não necessita da instalação de nenhum software no computador, ou instalar o interpretador Python no computador, preferencialmente com uma IDE. Respostas: a. A utilização da interface IDLE, que vem junto à instalação do Python, é obrigatória. b. A única alternativa possível é instalar o interpretador Python no computador, preferencialmente com uma IDE. c. Pode-se utilizar uma interface on-line, que não necessita da instalação de nenhum software no computador, ou instalar o interpretador Python no computador, preferencialmente com uma IDE. d. A única IDE disponível, além da IDLE que vem junto à instalação do Python, é a PyCharm. e. A única alternativa possível é utilizar uma interface on-line, que não necessita da instalação de nenhum software no computador. Atividade Avaliativa Semana 1 Pergunta 1 1. Veja o seguinte algoritmo: 1. Início 2. Leia Produto um item de produto que o usuário quer consultar 3. Leia Preço do produto 3. Leia meta o preço que o usuário quer gastar como máximo 6. Se o Preço for menor que a meta mostre o produto 7. Senão escreva “não entrou em promoção” 8. Fim Indique como, no algoritmo, são denominados os seguintes nomes: meta, Produto e Preço: a. Pseudocódigo. b. Tipo de dados. c. Tipo de valores. d. Constantes. e. Variáveis. Pergunta 2 1. A maioria das linguagens de programação, incluindo o Python, têm um ou mais ambientes integrados de desenvolvimento, a fim de garantir maior produtividade ao desenvolvimento de software com o uso da linguagem. Com base no apresentado, avalie as asserções a seguir e a relação proposta entre elas. I. A linguagem Python tem mais de um ambiente integrado de desenvolvimento, que pode ser escolhido pelo desenvolvedor considerando suas preferências e o sistema operacional que utiliza. PORQUE II. O ambiente de desenvolvimento integrado IDE tem, geralmente, um editor de textos para a escrita dos códigos, um compilador e uma ferramenta de depuração. Analisando as asserções anteriores, conclui-se que: a. a primeira asserção é falsa, e a segunda é verdadeira. b. as duas asserções são verdadeiras, e a segunda não justifica a primeira. c. as duas asserções são falsas. d. a primeira asserção é verdadeira, e a segunda é falsa. e. as duas asserções são verdadeiras, e a segunda justifica a primeira. Pergunta 3 1. Os algoritmos têm o objetivo de modelar a solução de um problema por meio de um conjunto de instruções. Essa modelagem é independente da linguagem de programação escolhida, podendo ser feita por meio de uma notação gráfica. Com base no apresentado, avalie as asserções a seguir e a relação proposta entreelas. I. Os fluxogramas, também conhecidos como diagramas de blocos, é uma notação gráfica que padroniza as operações e o fluxo de dados dos algoritmos de maneira eficiente. PORQUE II. Sua utilização possibilita uma compreensão mais acurada da solução apresentada pelo algoritmo, pois uma imagem pode ser mais bem visualizada e compreendida do que uma instrução textual. Analisando as asserções anteriores, conclui-se que: a. a primeira asserção é falsa, e a segunda é verdadeira. b. as duas asserções são falsas. c. as duas asserções são verdadeiras, e a segunda justifica a primeira. d. as duas asserções são verdadeiras, e a segunda não justifica a primeira. e. a primeira asserção é verdadeira, e a segunda é falsa. Pergunta 4 1. O uso de fluxogramas traz uma melhoria substancial na visualização e no entendimento de algoritmos, principalmente quando eles apresentam um certo grau de complexidade. Com base nisso, analise o fluxograma a seguir. Com relação ao fluxograma apresentado, avalie as afirmativas a seguir. I. O algoritmo faz a divisão de dois valores. II. A divisão será feita independentemente dos valores lidos para N1 e N2. III. Se N2 for igual a zero, uma mensagem será enviada ao usuário. IV. O algoritmo prevê um possível erro de divisão por zero. Está correto o que se afirma em: a. II, apenas. b. I, III e IV, apenas. c. I, II e III, apenas. d. I e II, apenas. e. I, II, III e IV.