Algoritmos e Pseudocódigo



Documentos relacionados
Introdução à Computação para o Ensino Médio. Centro Técnico Científico

Introdução à Lógica de Programação (cont.)

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO

Dadas a base e a altura de um triangulo, determinar sua área.

Introdução à Programação e Algoritmos. Aécio Costa

Resolução de problemas e desenvolvimento de algoritmos

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

PROGRAMAÇÃO DE COMPUTADORES (Teoria)

Aula 10 Introdução à Algoritmos. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

ICC Introdução para JavaScript

Algoritmos. Cláudio Barbosa

Introdução. introdução. tópicos. referência. INF1005 Programação I Prof. Hélio Lopes 8/7/12

Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Processamento da Informação Teoria. Algoritmos e Tipos de dados

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual

Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Problemas insolúveis. Um exemplo simples e concreto

Introdução a Algoritmos Parte 04

2. ALGORITMOS. Unesp Campus de Guaratinguetá. Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro

Algoritmos com VisuAlg

Aluísio Eustáquio da Silva

1.1. Organização de um Sistema Computacional

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos

Introdução à Lógica de Programação

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior Felipe Schneider Costa

Algoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

Conceitos Importantes:

e à Linguagem de Programação Python

PROGRAMADOR JAVA. Aula 0 20 semanas. Instrutor : Léo Billi leo.billi@gmail.com

Algoritmos. Objetivo principal: explicar que a mesma ação pode ser realizada de várias maneiras, e que às vezes umas são melhores que outras.

Programação 1. Rafael Vargas Mesquita. ftp://ftp.ci.ifes.edu.br/informatica/mesquita/

Cap.2.5: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

INF1004 e INF1005: Programação 1. Introdução à Programação

Algoritmos e Programação de Computadores

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Lógica de Programação

AULA TEÓRICA 10 Tema 9. Introdução à programação. Desenho de Algoritmos

Computadores de Programação (MAB353)

Introdução à Lógica de Programação

Aula Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. Fábio Nelson.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Aula 02. Algoritmos e Pseudocódigo

Lista de Exercícios. Vetores

Algoritmos Computacionais ( Programas )

Introdução à Programação

Prof. Dr. Abel Gomes Cap.4: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código

1.2. Sistemas de Programação

15 Computador, projeto e manufatura

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Estruturas de Controle A Tomada de Decisões

ALGORITMOS. Supervisão: Prof. Dr.º Denivaldo Lopes

Organização e Arquitetura de Computadores I

CAPÍTULO 6 - ESTRUTURA DE SELEÇÃO

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Algoritmos e Linguagem de Programação de Computadores I

Módulo Lógica Programação com aplicações em Java. Projeto khouse Profissionalizante Profª Larissa Brandão

A4 Projeto Integrador e Lista de Jogos

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

Computação e Processamento de Dados CPD INF400

OBI2014 Caderno de Tarefas

UFRPE Prof. Gustavo Callou

Introdução às Linguagens de Programação

SISTEMAS OPERACIONAIS

Programação para Computação

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

MC102 Algoritmos e Programação de Computadores 1ª Aula Introdução à Programação de Computadores

TÉCNICAS DE PROGRAMAÇÃO 1 INTRODUÇÃO A ALGORITMOS

A FÓRMULA DE CONVERSÃO ENTRE AS UNIDADES É: F = 1.8 C

Aula 02: C# - Estruturas de Decisão

Module Introduction. Programação. Cap. 4 Algoritmos e Programação Estruturada

Projeto e Análise de Algoritmos. Profa. Juliana Kaizer Vizzotto. Projeto e Análise de Algoritmos - Aula 1

Computadores XXI: Busca e execução Final

Lógica. Everson Santos Araujo

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)

Estruturas de Repetição

Exercícios resolvidos sobre Definição de Probabilidade

O modelo do computador

Linguagem algorítmica: Portugol

Orientação a Objetos

Teste de Software Estrutural ou Caixa Branca. Disciplina de Engenharia de Software prof. Andrey Ricardo Pimentel

MICROSOFT OFFICE EXCEL 2007

Introdução a C Tipos de Dados Variáveis Operadores

Estruturas de Repetição Parte II PARA-ATÉ

Terceira Avaliação Visualg & Pascal

Dado o fluxograma abaixo, montar um pseudocódigo equivalente.

Guia de Especificação de Caso de Uso Metodologia CELEPAR

Projeto de Sistemas I

Exercícios Resolvidos sobre probabilidade total e Teorema de Bayes

Lista de Exercícios 03b Algoritmos Repetição

Aula 11 Introdução ao Pseudocódigo. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Introdução à Programação de Computadores

José Romildo Malaquias

Transcrição:

Algoritmos e Pseudocódigo INF1005 Programação I Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 1 algoritmos e pseudocódigo tópicos algoritmo definições representação e resolução de problemas representação de programa pseudocódigo fluxograma construções entrada e saída condicionais repetições 2 1

algoritmos 3 algoritmo - definições especificação precisa (não ambígua) de um comportamento que visa resolver um problema bem definido sequência finita de instruções precisas que podem ser executadas mecanicamente num período de tempo finito e com uma quantidade de esforço finito programa de computador algoritmo codificado em uma linguagem de programação 4 2

algoritmo - definições especificação precisa (não ambígua) de um comportamento que visa resolver um problema bem definido Uma receita culinária é um algoritmo? "sal a gosto" vs. "1/4 colher (chá) de sal" "bata bem" vs. "bata até a massa ficar homogênea" "forno médio" vs. "forno a 220 C" 5 algoritmo definições especificação precisa (não ambígua) de um comportamento que visa resolver um problema bem definido condições iniciais (estado de problema) como as coisas são objetivos (estado desejado) como as coisas deveriam ser recursos meios ou métodos para transformar um estado de problema desde as condições iniciais até os objetivos ex: movimentos possíveis em um jogo 6 3

exemplo EX. 01 Escreva um algoritmo com objetivo de matar a fome na rua pessoa com fome algoritmo pessoa sem fome 1. 2. 3. 4. 5. 6. 7 exemplo isto é um algoritmo? objetivo: matar a fome na rua 1. decidir onde comer, conforme tempo e dinheiro disponível 2. ir até o local escolhido 3. decidir o que comer, conforme cardápio, tempo e dinheiro disponível 4. fazer o pedido 5. pagar 6. aguardar o pedido 7. comer 8 4

resolver o problema antes de programar Qual é a situação inicial? Já temos todos os dados de entrada? Esses dados são específicos a uma única situação ou podemos generalizar? Existe alguma notação para representar de forma sucinta os dados e os estados intermediários? Qual é o objetivo? / Quais são os objetivos? Há um único objetivo, ou são vários? Cada objetivo pode ser dividido em sub-objetivos, ou não? Os (sub-)objetivos são independentes, ou não? Há obstáculos a serem vencidos? Como podem ser vencidos? Há restrições na elaboração da solução? (tempo, espaço em memória, custo) Quais são os recursos (movimentos, operações, procedimentos, regras, transformações)? Para cada recurso, há restrições ou pré-condições para sua aplicação? Há outros recursos mais simples que satisfaçam essas pré-condições? Quando você aplica um recurso, o que muda? (variantes) Quando você aplica um recurso, o que permanece igual? (invariantes) Há outros recursos mais poderosos para resolver esse problema? adaptado de Blank & Barnes (1998) The Universal Machine. 9 exemplo Como chegar ao destino? Rua 4 Rua 5 Rua 6 Rua 7 Av.1 Av.2 Av.3 Av.4 10 5

problemas e soluções um problema pode ter várias soluções algumas soluções são melhores do que outras um problema pode ter soluções parciais restrições no espaço de problema podem ajudar na busca por uma solução 11 representação do espaço de problema descrição do mundo : ruas: [4,7] avenidas: [1,4] convenções de representação: posição: (r,a) obstáculo: (r 1,a 1,r 2,a 2 ) condições iniciais: posição: (7,1) Av.1 Av.2 Av.3 Av.4 obstáculos: { (6,2,7,2), (4,2,5,2), (5,3,6,3), (6,4,7,4) } objetivo: posição: (4,3) Rua 4 Rua 5 Rua 6 Rua 7 Quais as consequências dessa representação? 12 6

algoritmo - exemplo objetivo: verificar se um aluno está aprovado (média das 3 notas >= 5.0) ou reprovado (caso contrário) 13 como representar um algoritmo linguagem natural 1. Obter as três notas das provas do aluno 2. Calcular a média aritmética das três notas 3. Se a média for maior ou igual a 5, escrever aprovado 4. Caso contrário, escrever reprovado fluxograma leia (nota1, nota2, nota3); pseudocódigo media, nota1, nota2, nota3 leia nota1, nota2, nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) então aluno aprovado senão aluno reprovado -se media (nota1+nota2+nota3)/3; media >= 5.0? ( aprovado ); sim não ( reprovado ); 14 7

algoritmo em pseudocódigo media, nota1, nota2, nota3 leia nota1, nota2, nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) então aluno aprovado senão aluno reprovado -se 15 algoritmo em pseudocódigo media, nota1, nota2, nota3 leia nota1, nota2, nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) então aluno aprovado senão aluno reprovado -se armazenam valores (dados, informações) necessários à solução do problema: dados de entrada: nota1, nota2, nota3 dados utilizados no processamento: média dados de saída 16 8

algoritmo exemplo objetivo: a partir de três notas de um aluno, verificar se ele está: aprovado (média >= 5.0) em prova final (média < 5.0 e média >= 3.0) ou reprovado (média < 3) 17 fluxograma (com defeito) leia (nota1, nota2, nota3); objetivo: a partir de três notas de um aluno, verificar se ele está: aprovado (média >= 5.0) em prova final (média < 5.0 e média >= 3.0) ou reprovado (média < 3) media (nota1+nota2+nota3)/3; media >= 5.0? não media > 3.0? não sim sim ( aprovado ); ( em prova final ); ( reprovado ); 18 9

fluxograma (com defeito) leia (nota1, nota2, nota3); objetivo: a partir de três notas de um aluno, verificar se ele está: aprovado (média >= 5.0) em prova final (média < 5.0 e média >= 3.0) ou reprovado (média < 3) media (nota1+nota2+nota3)/3; media >= 5.0? não media > 3.0? não sim sim ( aprovado ); ( em prova final ); ( reprovado ); 19 fluxograma (corrigido) leia (nota1, nota2, nota3); objetivo: a partir de três notas de um aluno, verificar se ele está: aprovado (média >= 5.0) em prova final (média < 5.0 e média >= 3.0) ou reprovado (média < 3) media (nota1+nota2+nota3)/3; media >= 5.0? não media >= 3.0? não sim sim ( aprovado ); ( em prova final ); ( reprovado ); 20 10

algoritmo em pseudocódigo media, nota1, nota2, nota3 leia nota1, nota2, nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) então aluno aprovado senão se (media >= 3) então aluno em prova final senão aluno reprovado -se -se media, nota1, nota2, nota3 leia nota1, nota2, nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) então aluno aprovado senão se (media >= 3) então aluno em prova final senão aluno reprovado -se 21 entrada e saída 22 11

entrada e saída pseudocódigo media, nota1, nota2, nota3 leia nota1, nota2, nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) então aluno aprovado senão aluno reprovado -se 23 exercício EX. 02 Escreva o pseudocódigo ou desenhe o fluxograma de um programa que leia do teclado uma temperatura em Fahrenheit e na tela a temperatura equivalente em Celsius (tempc = (tempf-32)/1.8). 24 12

condicionais 25 controle de execução: condicionais pseudocódigo media, nota1, nota2, nota3 leia nota1, nota2, nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) então aluno aprovado senão aluno reprovado -se se (condição) então instrução V1 instrução V2 instrução Vn senão instrução F1 instrução F2 instrução Fn -se instruções executadas se a condição for verdadeira instruções executadas se a condição for falsa fluxograma leia (nota1, nota2, nota3); media (nota1+nota2+nota3)/3; media >= 5.0? ( aprovado ); sim não ( reprovado ); 26 13

dúvidas? 27 exercício EX. 03 Escreva o pseudocódigo ou desenhe o fluxograma de um programa que leia do teclado a probabilidade de chuva e na tela sol, caso a probabilidade seja menor que 60%; e chuva, caso contrário. 28 14

condicionais expressões booleanas uma condição é representada por uma expressão booleana, que resulta em um valor verdadeiro ou falso exemplos: media > 5 maior que media >= 5 maior ou igual a media < 5 menor que media <= 5 menor ou igual a media == 5 igual a media!= 5 diferente de 29 condicionais combinando expressões se (media < 5 e media >= 3) ( em prova final ) conjunção (E) resultado só é verdadeiro se ambos os valores forem verdadeiros A B A e B V V V V F F F V F F F F se (nota1 == 10 ou nota2 == 10) ( excelente! ) disjunção (OU) resultado só é falso se ambos os valores forem falsos A B A ou B V V V V F V F V V F F F 30 15

exercício EX. 04 Escreva o pseudocódigo ou desenhe o fluxograma de um programa que obtém as 3 notas de um aluno, calcula sua média e, caso o aluno tenha sido aprovado, na tela aprovado. O aluno é aprovado se ele teve média maior ou igual a 5 e nenhuma nota menor que 3. 31 repetições 32 16

controle de execução: repetições pseudocódigo num, media, nota1, nota2, nota3 leia num enquanto (num > 0) faça leia nota1, nota2, nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) então aluno aprovado senão aluno reprovado -se num= num 1 -enquanto leia num num > 0? sim leia (nota1, nota2, nota3); media (nota1+nota2+nota3)/3; não fluxograma enquanto (condição) faça instrução V1 instrução Vn -enquanto instruções executadas enquanto a condição for verdadeira instruções executadas quando a condição é ou se torna falsa media >= 5.0? sim ( aprovado ); num = num - 1 não ( reprovado ); 33 exercício EX. 05 Qual é a saída dos seguintes programas? num num = 0 enquanto (num < 3) faça num num= num + 1 -enquanto num num = 0 enquanto (num < 3) faça num num= num - 1 -enquanto saída valor de num a cada iteração I0 I1 I2 I3 I4 I5 I6 I7 I8 num saída valor de num a cada iteração I0 I1 I2 I3 I4 I5 I6 I7 I8 num 34 17

exercício EX. 06 Escreva o pseudocódigo de um programa que lê o número de alunos de uma turma e, para cada aluno, lê as suas três notas, escreve sua média e, no final, escreve a média da turma. 35 exercício EX. 06 Escreva o pseudocódigo de um programa que lê o número de alunos de uma turma e, para cada aluno, lê as suas três notas, escreve sua média e, no final, escreve a média da turma. num_alunos, i media, media_turma, nota1, nota2, nota3 leia num_alunos i = 0 media_turma = 0 enquanto (i < num_alunos) faça leia nota1, nota2, nota3 media = (nota1+nota2+nota3)/3 media_turma = media_turma + media i = i + 1 -enquanto media_turma = media_turma / num_alunos media_turma Em que situações este programa falha? 36 18

exercício EX. 07 Escreva o pseudocódigo ou desenhe o fluxograma de um programa que lê um número não negativo e escreve na tela o seu fatorial. Lembrando: n! = n x (n-1) x... x 1 37 exercício EX. 07 Escreva o pseudocódigo de um programa que lê um número não negativo e escreve na tela o seu fatorial. Lembrando: n! = n x (n-1) x... x 1 f, n leia n f = 1 enquanto (n > 1) faça f = f * n n = n - 1 -enquanto f Em que situação esse programa falha? 38 19

dúvidas? Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 39 20