Algoritmos e Ciclo de Desenvolvimento Aula 02: 01/03/2012

Documentos relacionados
Introdução à Algoritmos INF 1005 e INF Programação I

INF 1005 Programação I

Introdução à Programação

Computadores, Algoritmos e Linguagens

Introdução a Programação de Jogos

Introdução à Programação

Introdução à Programação

Aula 02. Algoritmos e Pseudocódigo

INF1005: Programação 1. Repetições. 08/03/10 (c) Paula Rodrigues 1

Fundamentos de Lógica e Algoritmos Aula 2.5 Conceitos Básicos de Algoritmos. Prof. Dr. Bruno Moreno

Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..

Fundamentos de Programação

Microcontroladores. Programação: fluxogramas, pseudocódigos e lógica. Prof. Daniel

Introdução a Computação

Estruturas de repetição

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO

Funcionamento do computador. Conceito e definição de algoritmos. Prof. Alex Camargo

Programação Estruturada

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

Projeto de Algoritmos

Programação: Vetores

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

Introdução à Programação de Computadores Fabricação Mecânica

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO E DO DESPORTO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS CEFET-MG UNIDADE DE ENSINO

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

ESTRUTURAS DE CONTROLE ESTRUTURAS DE REPETIÇÃO

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

Algoritmos. Um algoritmo pode ser expresso de diversas maneiras, dentre elas: Linguagem Natural Fluxograma Pseudocódigo Linguagem de Programação

Introdução aos Algoritmos

Sintática: como é escrito cada elemento da linguagem de programação.

Programação de Computadores III

Técnicas de Programação

Aula 4 Introdução ao C

Programação de Computadores:

INF1005 Programação I. Pontifícia Universidade Católica Departamento de Informática

Introdução aos Algoritmos

ESTRUTURAS COMPOSTAS. Variáveis Compostas Unidimensionais VETOR. Baseado nos slides de Rosely Sanches e Simone Senger de Souza

Aula 3: Algoritmos: Formalização e Construção

Estruturas condicionais

Algoritmos e Programação - Engenharia da Computação -

Oficina de Python Prof. Me. José Carlos Perini

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 04 Algoritmos e Programação Estruturada

Programação de Computadores III

Introdução à Lógica de Programação. Adaptação de Luis Otavio Alvares

Unidade 1 Conceitos básicos

Programação Estruturada Aula - Introdução a Linguagem de Programação

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Oficina de Python Prof. Me. José Carlos Perini

Introdução a programação Comandos de repetição

LINGUAGEM E TECNICAS DE PROGRAMAÇÃO

Programação Procedimental

LP II Estrutura de Dados

Universidade Federal de Uberlândia Faculdade de Computação. Estruturas de repetição

Introdução à Algoritmos. Professora: Fabíola Gonçalves.

CCO 016 Fundamentos de Programação

Programação de Redes de Computadores

Aula 5 ESTRUTURAS DE REPETIÇÃO (WHILE)

Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Final - Repita Até - GABARITO Professor: Danilo Giacobo

Disciplina de Algoritmos e Programação

& somadosnumeros = valor

Sistemas Operacionais e Introdução à Programação. Introdução à Lógica de Programação: estruturas de repetição

Laboratório 3 Comandos de repetição while, do-while e for

Capítulo 3: Repetições. Pontifícia Universidade Católica Departamento de Informática

Estruturas de Repetição

CCO 016 / COM 110 Fundamentos de Programação

Fundamentos de Lógica e Algoritmos. Aula 2.3 Introdução a Algoritmos. Prof. Dr. Bruno Moreno

Fábio Rodrigues / Israel Lucania

3. Linguagem de Programação C

Algoritmos e Lógica de Programação. Notas de Aula

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

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Computadores = cérebros eletrônicos?

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA ESTRUTURAS DE DECISÃO. Prof. Dr. Daniel Caetano

CAPÍTULO 3 INSTRUÇÕES BÁSICAS

Algoritmos e Fluxogramas

Curso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber 3/10/ :43 AM

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

Algoritmos e Programação

Introdução à Ciência da Computação SCC0120 Prof. Zhao Liang. Aula de Laboratório 1: Operadores, comandos básicos e comando IF 27/03/2012

Treinamento Olimpíada Brasileira de Informática

Aula 01 Algoritmos e lógica de programação e introdução ao C++

Programação Básica. Estrutura de um algoritmo

Algoritmos. Laura Goulart. 11 de Dezembro de 2018 UESB. Laura Goulart (UESB) Algoritmos 11 de Dezembro de / 12

LÓGICA DE PROGRAMAÇÃO ESTRUTURAS DE DECISÃO PARA ENGENHARIA. Prof. Dr. Daniel Caetano

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza

ESTRUTURAS DE CONTROLE

Estruturas de Controle de Fluxo

Aula 01 Algoritmos e lógica de programação e introdução ao C++

Programação para Games I

69) Acrescentar uma mensagem de VALOR INVÁLIDO no exercício [68], caso o segundo valor informado seja ZERO.

Linguagem de Descrição de algoritmos

Vetores. e o programa deverá ler os valores separadamente:

Portugol. Tiago Alves de Oliveira

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

Introdução a Computação

Transcrição:

Algoritmos e Ciclo de Desenvolvimento Aula 02: 01/03/2012 INF 1005 - Programação I Pontifícia Universidade Católica Departamento de Informática 1 Modelo de um Computador 2 1

CPU: Unidade Central de Processamento Principal componente de um computador digital. Localiza e executa as instruções de um programa. Capaz de executar operações simples com grande rapidez. 3 Memória Memória volátil usada para armazenar dados e programas. Conteúdo modificável pelas instruções dos programas. Permite acesso aleatório. 4 2

Disco Rígido (HD) Um dos dispositivos não-voláteis mais usados para o armazenamento de grandes volumes de dados. Utiliza superfícies magnetizáveis para armazenar as informações. Permite acesso randômico aos dados armazenados. 5 Linguagens de Alto-Nível Programar em linguagem de máquina é uma tarefa entediante e propensa a erros. A partir de meados dos anos 50 várias linguagens de alto nível foram criadas. Tais linguagens possuem nível de abstração relativamente elevados. Elas são mais próximas das linguagens utilizadas pelos seres humanos. 6 3

Linguagens de Alto-Nível FORTRAN (1957) COBOL (1960) ALGOL (1968) PASCAL (1970) C (1972) C++ (1983) JAVA (1995) 7 Exemplo de Programa em C int main(void){ int a = 3, b = 7, c; c=a+b; if(c%2==0) printf("o resultado e par\n"); else printf("o resultado e impar\n"); } return 0; 8 4

Compilação Programas escritos em linguagens de alto nível não são executados diretamente pelo processador. Antes de executá-lo é preciso traduzir os comandos de alto-nível para instruções de máquina. Esta tarefa (compilação) é realizada por um programa chamado de compilador. 9 Ciclo de Desenvolvimento 10 5

Ciclo de Desenvolvimento Problema Programa de computador (solução) Resultados 11 Ciclo de Desenvolvimento Escolha da linguagem de programação depende da aplicação que será desenvolvida. Na disciplina INF1005, a escolha da linguagem C está relacionada a: eficiência facilidade de uso base para muitas outras linguagens mais usada atualmente base para Programação II 12 6

Ciclo de Desenvolvimento Um programa escrito em C deve respeitar a sintaxe da linguagem. Um computador não é capaz de executar uma sequência de instruções escritas em C: ou em qualquer outra linguagem de alto nível Para executar um programa em C, antes é necessário converter o programa em C para um programa em linguagem de máquina: processo chamado de COMPILAÇÃO processo realizado por um COMPILADOR:» programa 13 Ciclo de Desenvolvimento 14 7

Como descrever um problema? Andando pelo campus da PUC e após quase tropeçar em esquilos e levar um susto com o vôo do tucano, alguém lhe pergunta: Como faço para ir ao centro da cidade? O que você responde? 15 Como descrever um problema? Na pergunta anterior é fácil observar que faltam detalhes para a resposta ser mais correta ou eficiente: meio de transporte» envolve tempo e dinheiro endereço específico quando?» envolve trajeto devido a engarrafamento número de pessoas Fica difícil responder sem saber as reais necessidades de quem perguntou. 16 8

Solução de problemas Objetivo: encontrar uma sequência de passos que permitam que o problema possa ser resolvido de maneira automática e repetitiva. Detalhamento do problema. Perfeita compreensão do problema. Descrição da solução: clara não ambígua sequencial Linguagem utilizada na solução deve ser compreendida pelo executor da solução. Atores envolvidos criador da solução (programador) executor da solução (computador) usuário da solução (programador em INF1005) 17 Algoritmos 18 9

Algoritmo: Conceito Sequência finita e não ambígua de passos para a solução de um problema. Em um algoritmo pode-se ter: tomada de decisões repetição de passos (iteração) Diferentes algoritmos podem levar a solução de um mesmo problema: exemplo: como se vestir de manhã? Primeiro colocar a calça ou a camisa? 19 Algoritmos: Seqüência Exemplo receita de bolo 20 10

Algoritmo: Tomada de Decisão É fundamental que seja possível tomar diferentes decisões baseado em condições que são avaliadas em tempo de execução. Padrão de sintaxe a ser usado na Linguagem Natural : se condicao_teste então ação(ões) a ser tomada se condicao_teste for verdadeira senão ação(ões) a ser tomada se condicao_teste for falsa fimse 21 Algoritmo: Tomada de Decisão Decidir se determinados passos devem ser executados ou não filtro Exemplo selecionar a quantidade de ovos solução:» se quiser bolo mais macio então acrescente 2 ovos 22 11

Algoritmo: Tomada de Decisão Decidir qual conjunto de passos devem ser executados categorização Exemplo escolher o tipo de açúcar solução:» se bolo for para diabéticos então utilizar adoçante» senão utilizar açúcar refinado 23 Algoritmo: Repetição Precisamos de mecanismos de programação que nos permitam requisitar que um conjunto de instruções seja repetidamente executado, até que uma determinada condição seja alcançada: REPETIÇÕES SÃO PROGRAMADAS ATRAVÉS DA CONSTRUÇÃO DE LAÇOS (OU CICLOS). Padrão de sintaxe a ser usado na Linguagem Natural : enquanto condicao_execucao faça ação(ões) a ser tomada se condicao_execucao for verdadeira fimenquanto 24 12

Algoritmo: Repetição Repetir um determinado conjunto de passos. Exemplo (continuando na arte culinária!): preparar uma lasanha solução» montagem da lasanha coloque uma camada de molho coloque uma camada de massa coloque uma camada de presunto coloque uma camada de queijo» repita o processo acima quantas vezes desejar problema!!!! 25 Formas de Representação de um Algoritmo Linguagem Natural: Os algoritmos são expressos diretamente em linguagem natural (o português, por exemplo). Fluxograma: Representação gráfica que emprega formas geométricas padronizadas para indicar as diversas ações e decisões que devem ser executadas para resolver o problema. Pseudocódigo: Emprega uma linguagem intermediária entre a linguagem natural e uma linguagem de programação para descrever algoritmos. Linguagem de Programação: Método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. 26 13

Exemplo 1 Faça um algoritmo que leia 2 números inteiros e imprima a diferença entre o primeiro e o segundo número. Passos da solução: identificação da entrada de dados» 2 números inteiros identificação da saída» 1 número inteiro representando a diferença entre os 2 números obtidos na entrada descrição do algoritmo 27 Exemplo 1 Descrição do algoritmo (versão 1): 1. obter o primeiro número inteiro com o usuário 2. obter o segundo número inteiro com o usuário 3. calcular a diferença do primeiro número para o segundo 4. exibir o resultado da diferença 28 14

Exemplo 1 Problemas: Como obter os números com o usuário? Por que meio? Como guardar os números que o usuário forneceu? Como identificar qual foi o primeiro valor e qual foi o segundo valor fornecido? 29 Exemplo 1 Descrição do algoritmo (versão 2): 1. obter o primeiro número inteiro com o usuário e armazená-lo na caixa chamada numero1 2. obter o segundo número inteiro com o usuário e armazená-lo na caixa chamada numero2 3. calcular a diferença e armazená-la na caixa chamada diferenca diferenca numero1 - numero2 4. exibir o conteúdo da caixa chamada diferenca numero1 numero2 diferenca 30 15

Exemplo 1 Descrição do algoritmo (versão 3): 1. solicitar ao usuário que informe o primeiro número inteiro 2. obter o primeiro número inteiro com o usuário e armazená-lo na caixa chamada numero1 3. solicitar ao usuário que informe o segundo número inteiro 4. obter o segundo número inteiro com o usuário e armazená-lo na caixa chamada numero2 5. calcular a diferenca e armazená-la na caixa chamada diferenca diferenca numero1 - numero2 6. exibir o conteúdo da caixa chamada diferenca numero1 numero2 diferenca 31 Exemplo 1 Descrição do algoritmo (versão 4): 1. solicitar ao usuário que informe o primeiro número inteiro 2. obter numero1 3. solicitar ao usuário que informe o segundo número inteiro 4. obter numero2 5. diferenca numero1 - numero2 6. exibir diferenca numero1 numero2 diferenca 32 16

Exemplo 2 Problema: A partir de 3 notas de um aluno, calcular sua média aritmética e escrever na tela se ele foi aprovado ou reprovado, levando em conta que a média para aprovação deve ser pelo menos 5.0. 33 Exemplo 2 Linguagem Natural: 1. Obter as 3 notas das provas do aluno. 2. Calcular a média aritmética das 3 notas. 3. Comparar a média com o valor 5.0. 4. Se for maior ou igual, escrever aprovado. 5. Caso contrário, escrever reprovado. 34 17

Exemplo 2 Fluxograma: Início Leia (nota1,nota2, nota3) media <- (nota1 + nota2 + nota3)/3.0 media>=5.0? sim Escreva( Aluno aprovado) não Escreva( Aluno reprovado) Fim 35 Exemplo 2 Pseudocódigo: Variáveis: armazenam Informações necessárias para solução do problema variaveis media, nota1, nota2, nota3 inicio leia nota1, nota2 e nota3 media = (nota1+nota2+nota3)/3 se (media >= 5) entao escreva aluno aprovado senao escreva aluno reprovado fim fim 36 18

Exemplo 2 Linguagem de Programação: #include <stdio.h> int main(void) { float media, nota1, nota2, nota3; printf("entre com a nota da p1:"); scanf("%f", &nota1); printf("entre com a nota da p2:"); scanf("%f", &nota2); printf("entre com a nota da p3:"); scanf("%f", &nota3); media = (nota1 + nota2 + nota3)/3.0; if (media >= 5.0) printf("aprovado!\n"); else printf("reprovado!\n"); return 0; } 37 Exemplo 3 Escreva um algoritmo que fica recebendo como entrada a matricula e duas notas (P1 e P2) dos alunos de uma turma enquanto a matrícula do aluno for maior que 0. Para cada aluno, seu algoritmo deve calcular a média dele na disciplina. Como uma das saídas, seu algoritmo deve imprimir a matricula do aluno, seu média e a mensagem Aluno aprovado se a média dele for maior ou igual a 5.0 ou Aluno reprovado, caso contrário. Após a entrada de alunos chegar ao fim, a média da turma deve ser calculada e exibida como saída. 38 19

Exemplo 3 Solução Proposta em Linguagem Natural 1. Declarar e inicializar uma variável chamada somamedias com o valor 0. 2. Declarar e inicializar uma variável que conta o número de alunos da turma. Inicialmente este valor é 0. 3. Ler matricula de um aluno. 4. Enquanto matricula>0 faça 4.1. Ler e armazenar nota1, nota2 4.2. Calcular media do aluno: mediaalun = (nota1+nota2)/2.0 4.3. Escrever matricula e a media do aluno (mediaalun) 4.4. se mediaalun >5 então 4.4.1. Escrever aluno aprovado, 4.4.2. senão 4.4.2.1. Escrever aluno reprovado 4.4.3. fimse 4.5. Aumentar de 1 unidade o valor do contador dos alunos: contalun <- contalun +1 4.6. Acumular o valor da media do aluno: somamedias <- somamedias + mediaalun 4.7. Ler uma nova matricula 4.8. fimenquanto 5. Calcular média da turma: mediaturma <- somamedias / contalun 6. Escrever media da turma 39 Exercícios Escreva em linguagem natural uma solução algorítmica para cada um dos problemas apresentados. 40 20

Exercícios 1. Escreva um algoritmo que dado o raio de um círculo, calcula o volume da esfera com este raio. Sabe-se que 4 3 o volume da esfera é dado por volume = * π * r 2. Escreva um algoritmo que pede para o usuário fornecer o tempo total em segundos que ele levou para percorrer uma maratona. Seu algoritmo deve apresentar como saída o tempo equivalente no formato hora minuto segundo. 3. Escreva um algoritmo que recebe dois números inteiros como entrada e exibe, como saída, a soma, o produto, a diferença, o quociente e o resto entre estes dois números. 3 41 Exercícios 4. Modifique o algoritmo da questão 3 (anterior) para que ele leia também uma opção que define qual das operações que o usuário quer executar. Esta alteração faz com que o usuário possa apenas executar uma das operações aritméticas. 5. Escreva um algoritmo que recebe dois números como entrada e imprime, como saída, qual a relação entre esses dois números: se são iguais, maior que ou menor que. 6. Escreva um algoritmo que recebe 3 números inteiros como entrada e exibe, como saída, os números em ordem crescente. 42 21

Exercícios 7. Escreva um algoritmo que recebe um número inteiro como entrada e exibe, como saída, se o número é par ou é ímpar. 8. Escreva um algoritmo que recebe como entrada um número de dias decorrido em um evento, fornecido pelo usuário, e exiba como saída o mesmo valor expresso em numero de semanas e numero de dias. Por exemplo, se um usuário fornecer o valor 17, o programa deve imprimir 2 e 3, pois 17 dias correspondem a 2 semanas e 3 dias. 43 Exercícios 9. Considerando a existência de notas (cédulas) nos valores R$ 100, R$ 50, R$ 20, R$ 10, R$ 5, R$ 2 e R$ 1, escreva um algoritmo que capture um valor inteiro em reais (R$) e determine o menor número de notas para se obter o montante fornecido. O seu algoritmo deve exibir o número de notas para cada um dos valores de nota existentes. 44 22