Introdução à Ciência da Computação



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

ALGORITMOS E FLUXOGRAMAS

Lógica de Programação

Algoritmos e Programação Parte Teórica

Lógica de programação Instrução Algoritmo Diferença entre algoritmo e programa

Aula 02 ALGORITMOS. Introdução à Computação

Reaproveitando algoritmos

2. ALGORITMOS. Unesp Campus de Guaratinguetá

ALGORITMOS ALGORITMOS ALGORITMOS. Natureza dos passos. Apresentação das Estruturas de Algoritmos - Fluxograma

Sessão 2 UFCD 0804 Algoritmos

Introdução Ciclo de vida tradicional de desenvolvimento Prototipagem Pacotes de software Desenvolvimento de 4ª geração Terceirização

INTERPRETANDO A GEOMETRIA DE RODAS DE UM CARRO: UMA EXPERIÊNCIA COM MODELAGEM MATEMÁTICA

Disciplina Técnicas de Modelagem

Algoritmos. Cláudio Barbosa

Pedagogia Estácio FAMAP

Cotagem de elementos

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva

Plano de Aula de Matemática. Competência 3: Aplicar os conhecimentos, adquiridos, adequando-os à sua realidade.

TÉCNICAS DE PROGRAMAÇÃO

Processos de Software

Estrutura Condicional C++

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

LASERTECK LTA450 MANUAL DE USO

Projeto da Disciplina Parte1: Estudo de Viabilidade. Um Estudo de Viabilidade

Tópicos Avançados em Banco de Dados Gerenciamento de Transações em Banco de Dados. Prof. Hugo Souza

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

Lógica para a Programação - 1º semestre AULA 01 Prof. André Moraes

DICAS PARA UM ESTUDO EFICAZ

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Cotagem de dimensões básicas

MANUAL PABX 412 BATIK

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

NORMA BRASILEIRA DE CONTABILIDADE NBC TSC 4410, DE 30 DE AGOSTO DE 2013

"SISTEMAS DE COTAGEM"

Gerenciamento da Integração (PMBoK 5ª ed.)

Disciplina: Técnicas de Racionalização de Processos Líder da Disciplina: Rosely Gaeta NOTA DE AULA 04 O PROJETO DE MELHORIA DOS PROCESSOS

Preparação do Trabalho de Pesquisa

REQUISITOS DE SISTEMAS

Prof. Bruno Calegaro

Um jogo de preencher casas

UTILIZAÇÃO DE RECURSOS AVANÇADOS DO EXCEL EM FINANÇAS (PARTE II): ATINGIR META E SOLVER

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

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

A escola para todos: uma reflexão necessária

Fresando engrenagens cilíndricas com dentes retos

COMO CALCULAR O PRINCIPAL INDICADOR PARA MEDIR A EFICIÊNCIA FINANCEIRA DE UMA

A educadora avalia a formação de nossos professores para o ensino da Matemática e os caminhos para trabalhar a disciplina na Educação Infantil.

Programação para Computação

Introdução à Programação. João Manuel R. S. Tavares

Informática básica Telecentro/Infocentro Acessa-SP

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE I. Prof. Dr. Daniel Caetano

METODOLOGIAS DE PROGRAMAÇÃO

1. Arquivos Seqüenciais

Introdução. Introdução. Objetivos da Aula. Bases Computacionais da Ciência(BC-0005)

Escalas. Antes de representar objetos, modelos, peças, A U L A. Nossa aula. O que é escala

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

Energia Eólica. Atividade de Aprendizagem 3. Eixo(s) temático(s) Ciência e tecnologia / vida e ambiente

Índice. 1. Metodologia de Alfabetização Aprendizagem da Escrita Aprendizagem da Leitura...6

Resolução de Problemas

PERFIL PROFISSIONAL PROGRAMADOR(A) DE INFORMÁTICA. PERFIL PROFISSIONAL Programador/a de Informática Nível 3 CATÁLOGO NACIONAL DE QUALIFICAÇÕES 1/5

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

Introdução. Uso do disco Vantagens Desvantagens Baixo custo, facilidade de manutenção do software e do hardware, simetria e flexibilidade

10/02/2015. As linguagens. Algoritmos e Lógica de programação. Os produtos. Os ingredientes. Introdução. Atuais:.Net Java Delphi PHP

UNIVERSIDADE FEDERAL DE SÃO JOÃO DEL REI

Título do TCC. Nome do Aluno

Implementando uma Classe e Criando Objetos a partir dela

Correntes de Participação e Critérios da Aliança Global Wycliffe [Versão de 9 de maio de 2015]

Base Nacional Comum Curricular Lemann Center at Stanford University

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

ARQUITETURA DE COMPUTADORES

LIVRO ENGENHARIA DE SOFTWARE FUNDAMENTOS, MÉTODOS E PADRÕES CAPÍTULO ATIVIDADES, PAG. 138 A 150

Sistema de Memórias de Computadores

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum

Introdução à. Engenharia de Software. Givanaldo Rocha de Souza

Manual Técnico e Certificado de Garantia

Conceito de Algoritmos e Suas Características

Análise de Tarefas. Análise Hierárquica de Tarefas

SISTEMAS DE INFORMAÇÃO GERENCIAIS

Jogos Lógicos de Tabuleiro

Memória cache. Prof. Francisco Adelton

Sistemas Operacionais. Prof. André Y. Kusumoto

MANUAL DO USUÁRIO. Argox OS-214 Plus. Conteúdo: Manual do Usuário ARGOX OS214 PLUS Página:

Projeto de inovação do processo de monitoramento de safra da Conab

COMO IMUNIZAR SEU PENDRIVE CONTRA VÍRUS. Introdução

1 CIRCUITOS COMBINACIONAIS

O princípio multiplicativo

Sistemas Operacionais Arquivos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Gravando Dados e Cópias de CD s com o Nero 6.0 Disciplina Operação de Sistemas Aplicativos I

Tutorial ConvertXtoDVD 3

Transcrição:

Créditos Introdução à Ciência da Computação Algoritmos O material a seguir é composto de adaptações dos slides gentilmente cedidos por: Prof. André de Carvalho Slides baseados nos originais das professoras Rosely Sanches, Sandra Aluísio, Solange Rezende, Renata Fortes e José Carlos Maldonado Prof. Ricardo J. G. B. Campello 2 Aula de hoje Algoritmos Fluxograma Pseudo-código Estruturas de Fluxo Sequencial Condicional Repetição Algoritmos Procedimento passo a passo para resolver um dado problema Computador não tem senso próprio deve receber instruções explícitas um algoritmo é um conjunto de instruções 3 4

Algoritmos Um algoritmo correto deve possuir três propriedades mínimas: 1. Cada passo deve corresponder a uma instrução que possa ser realizada 2. A ordem dos passos deve ser precisamente determinada 3. O algoritmo deve ter fim 5 Representação de Algoritmos Existem basicamente 2 abordagens: Abordagem Gráfica Facilita visualização do fluxo de execução das instruções do algoritmo mas pode não ser apropriada para algoritmos grandes Técnica mais comum é o Fluxograma Pseudo-Código Linguagem estruturada, intermediária entre a linguagem natural e as linguagens de programação Mais fácil de interpretar que um programa Mais fácil de traduzir para uma linguagem de programação (qualquer) que um texto livre 6 ALGORITMO PARA TROCAR PNEU DE UM CARRO ALGORITMO PARA TROCAR PNEU DE UM CARRO Fluxograma 7 Fluxograma 8

ALGORITMO PARA TROCAR PNEU DE UM CARRO ALGORITMO PARA TROCAR PNEU DE UM CARRO Fluxograma 9 Fluxograma 10 Vejamos agora o mesmo algoritmo representado por um Pseudo-Código baseado na língua Portuguesa Conjunto restrito de regras que impõe uma estrutura ao texto ALGORITMO PARA TROCAR PNEU DE UM CARRO trocar pneu elimina ambiguidades da linguagem livre Também conhecido como Português Estruturado ou Portugol E se o estepe estiver vazio? Isto traz necessidade de uma decisão entre duas opções 11 12

Estrutura Condicional se <o estepe está vazio> então chamar borracheiro senão trocar o pneu A atividade de trocar o pneu pode ser mais detalhada 13 Estrutura Sequencial se <o estepe está vazio> então chamar borracheiro A atividade de senão desparafusar levantar o carro desparafusar a roda remover a roda colocar o estepe parafusar a roda abaixar o carro a roda pode ser mais detalhada A atividade de parafusar a roda pode ser mais detalhada 14 Estrutura Sequencial se <o estepe está vazio> então chamar borracheiro senão levantar o carro desparafusar o 1 o parafuso desparafusar o 2 o parafuso desparafusar o 3 o parafuso desparafusar o 4 o parafuso remover a roda colocar o estepe parafusar o 1o parafuso parafusar o 2o parafuso parafusar o 3o parafuso parafusar o 4o parafuso abaixar o carro A repetição é inconveniente A repetição é inconveniente 15 Estrutura de Repetição se <o estepe está vazio> então chamar borracheiro senão levantar o carro enquanto <houver parafuso para desapertar> faça desparafusar a roda remover a roda colocar o estepe enquanto <houver parafuso para apertar> faça parafusar a roda abaixar o carro 16

remova a lâmpada queimada coloque a nova lâmpada 17 remova a lâmpada queimada coloque a nova lâmpada O que é necessário para remover a lâmpada queimada? 18 Para remover a lâmpada queimada: 1. posicione a escada debaixo da lâmpada 2. suba na escada até que a lâmpada possa ser alcançada 3. gire a lâmpada no sentido anti-horário, até que ela se solte 4. retire a lâmpada 19 remova a lâmpada queimada coloque a nova lâmpada O que é necessário para colocar a lâmpada nova? 20

Para colocar uma lâmpada nova: 1. escolha uma lâmpada da mesma potência da queimada 2. 3. gire a lâmpada no sentido horário até que ela se firme 4. 21 posicione a escada debaixo da lâmpada suba na escada até que a lâmpada possa ser alcançada gire a lâmpada no sentido anti-horário, até que ela se solte retire a lâmpada queimada escolha uma lâmpada da mesma potência da queimada gire a lâmpada no sentido horário até que ela se firme 22 Diversos passos deste algoritmo implicam operações mais elaboradas Estas operações devem ser expressas explicitamente 23 posicione a escada debaixo da lâmpada suba na escada até que a lâmpada possa ser alcançada gire a lâmpada no sentido anti-horário, até que ela se solte retire a lâmpada queimada escolha uma lâmpada da mesma potência da queimada gire a lâmpada no sentido horário até que ela se firme 24

Suba na escada até que a lâmpada possa ser alcançada enquanto <não alcançar a lâmpada> faça suba um degrau da escada 25 posicione a escada debaixo da lâmpada suba na escada até que a lâmpada possa ser alcançada gire a lâmpada no sentido anti-horário, até que ela se solte retire a lâmpada queimada escolha uma lâmpada da mesma potência da queimada gire a lâmpada no sentido horário até que ela se firme 26 Gire a lâmpada queimada no sentido anti-horário até que se solte enquanto <a lâmpada não soltar> faça gire a lâmpada no sentido anti-horário 27 posicione a escada debaixo da lâmpada suba na escada até que a lâmpada possa ser alcançada gire a lâmpada no sentido anti-horário, até que ela se solte retire a lâmpada queimada escolha uma lâmpada da mesma potência da queimada gire a lâmpada no sentido horário, até que ela se firme 28

se <tiver lâmpada da mesma potência> então selecione a lâmpada gire a lâmpada no sentido horário, até que se firme senão se <tiver lâmpada da mesma potência> então selecione a lâmpada gire a lâmpada no sentido horário até que se firme senão 29 enquanto <a lâmpada não prender> faça gire a lâmpada no sentido horário 30 posicione a escada debaixo da lâmpada queimada enquanto <não alcançar a lâmpada> faça suba um degrau da escada enquanto <a lâmpada não soltar> faça gire a lâmpada no sentido anti-horário remova a lâmpada queimada se <tiver lâmpada da mesma potência> então selecione a lâmpada enquanto <a lâmpada não prender> faça gire a lâmpada no sentido horário senão 31 Desenvolvimento do Algoritmo Abordagem Top-Down: Começar com uma afirmação genérica sobre a solução do problema Prosseguir até o algoritmo final, aumentando sistematicamente o nível de detalhamento 32

Desenvolvimento do Algoritmo Metodologia de Desenvolvimento Como saber se já temos um nível suficiente de detalhes no algoritmo? Depende das características da tarefa a ser executada (problema) como o algoritmo deverá ser implementado (linguagem) As linguagens têm um conjunto muito limitado de instruções Algoritmo deve ser expresso utilizando essas instruções Passo 1: ler cuidadosamente a especificação do problema até o final Passo 2: se depois de ler várias vezes, ainda não entender o problema, pergunte a quem especificou até entender Passo 3: levantar e analisar todas as entradas descritas na especificação do problema Passo 4: levantar e analisar todas as saídas exigidas na especificação do problema 33 34 Metodologia de Desenvolvimento Metodologia de Desenvolvimento Passo 5: verificar se é necessário gerar valores internamente ao algoritmo e levantar as variáveis necessárias e os valores iniciais de cada uma Passo 6: levantar e analisar todos os processamentos necessários para, dadas as entradas e os valores gerados internamente, produzir as saídas que foram especificadas. Tais processamentos podem ser organizados em partes (rotinas ou módulos) Passo 7: testar cada passo do algoritmo, verificando se os processamentos intermediários executados estão conduzindo aos objetivos desejados Passo 8: fazer uma reavaliação geral, elaborando o algoritmo através da integração das partes 35 36

Padrões de Programação Nomes de variáveis devem ter significado Código estruturado Código adequadamente tabulado Código Documentado Nome do programador, data, etc. Descrição geral e das partes Comentários 37 Exercícios Seja o seguinte algoritmo: Inicio 1. Acordar cedo 2. Tomar café da manhã 3. Fazer a higiene 4. Vestir uma roupa 5. Pegar uma condução 6. Descer próximo à escola 7. Caminhar até a escola Especialize o passo 4 com alguns passos mais detalhados. Refaça ou aprimore o item anterior usando uma condicional do tipo se-então-senão para lidar com a possibilidade de estar calor ou frio. Considerando que o ponto de ônibus fica bem ali do outro lado da rua, uma possível especialização do passo 5 é: 5.a Atravessar a rua até o ponto do outro lado 5.b Esperar a condução e acenar quando avistá-la Especialize o passo 5.a acima utilizando uma estrutura de repetição enquanto-faça para lidar com a possibilidade da presença ou não de carros transitando na rua. 38 Exercícios Faça um algoritmo para fazer uma ligação de um telefone público utilizando um cartão. Apresente ao menos 2 versões com diferentes níveis de detalhamento. Considere a possibilidade do número discado estar momentaneamente ocupado. Capítulo I de (Forbellone & Eberspächer, 2005): Treinar Raciocínio Lógico: estudar exercícios de fixação (resolvidos no apêndice) Resolver ao menos o exercício proposto 4 (torre de Hanói com 4 discos e 3 hastes) Agradecimentos Prof. André de Carvalho Slides baseados nos originais das professoras Rosely Sanches, Sandra Aluísio, Solange Rezende, Renata Fortes e José Carlos Maldonado 39 40