Laboratório de Programação I

Documentos relacionados
insfcanceof new public switch transient while byte continue extends for int null

Laboratório de Programação I

Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA

Instruções de controle: Parte by Pearson Education do Brasil

INTRODUÇÃO À LINGUAGEM C++

ALGORITMOS E FLUXOGRAMAS

Estruturas de Repetição

Comandos de repetição while

DESENVOLVIMENTO DE SOFTWARE

9.1.2 Laços Controlados por Entrada: Contador

Estrutura Condicional em Java

Java Como Programar, 8/E

Lista de Exercícios Fluxograma, Estruturas de Sequência e Decisão Prof: Yuri Frota

Lista de Exercícios 3 Estruturas de Controle Profa Susana M Iglesias

Conceitos básicos da linguagem C

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Aula 3 Desvio Condicional

Convertendo Algoritmos para a Linguagem C

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

PARA CASA * Como voce faria para armazenar o resultado em uma variavel chamada NOME?

COMANDO DA AERONÁUTICA ESCOLA DE ESPECIALISTAS DE AERONÁUTICA SUBDIVISÃO DE ADMISSÃO E DE SELEÇÃO

7. Estrutura de Decisão

Programação científica C++

Expressões Lógicas Comandos de Seleção

9 Comandos condicionais

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Técnicas de Programação I

Laboratório de Programação I

Manipulando Strings no VBA (Replace, Mid e InStr)

A4 Projeto Integrador e Lista de Jogos

Programação: Estruturas de seleção

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

5 Apresentando a linguagem C

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

Usando o do-file editor Automatizando o Stata

JavaScript (ou JScript)

Representação de Algoritmos - Linguagens de Programação

Estruturas de Controle em PHP

Estrutura Condicional C++

Testando e Comparando Valores

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

Definição. de solução de um problema passo-a-passo. Representa a lógica l. passo.

Algoritmo Iterativo. Dilema do Martelo x Edifício. O Martelo. O Edifício 01/06/2014. Dilema das ações x declarações

compreender a importância de cada estrutura de controle disponível na Linguagem C;

TÉCNICAS DE PROGRAMAÇÃO

Avançado. Visão geral do ambiente do VBA Retornar à planilha Excel

Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos.

Vetores. Professor Dr Francisco Isidro Massettto

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Programação WEB I Estruturas de controle e repetição

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

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

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

De novo, vamos começar pelas funções mais básicas, testá-las e depois usá-las em funções mais complexas.

Fundamentos de Teste de Software

Prof. Esp. Adriano Carvalho

Prof. Vania Gimenez.Notas de aula Lógica de programação- Este material não substitui os livros indicados no site no link bibliografia.

Linguagem de Programação I

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Variáveis Compostas Heterogêneas. Variável Composta Heterogênea. Variável Composta Heterogênea

Notas de Aula de Algoritmos e Programação de Computadores

2 echo "PHP e outros.";

LINGUAGEM C. Estrutura básica de um programa

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

TUTORIAL AMBIENTE WEB PORTUGOL

1.2 Uma linguagem de programação muito simples

Introdução a Computação

1 Funções básicas de implementação de arquivos

Introdução à Engenharia ENG1000

ALP Algoritmos e Programação

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

I Semana de Software Livre da USP Dojo C

Linguagem de Montagem 2. Operações e Operandos

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos

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

Aula de JavaScript 05/03/10

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Lógica de Programação

Algoritmos e Programação Parte Teórica

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

TUTORIAL PARA UTILIZAÇÃO DA PLATAFORMA LMS

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Arte em ASCII. Introdução: Python

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Algoritmos e Programação

Sessão 2 UFCD 0804 Algoritmos

COMO PROGRAMAR SEU TIME

Javascript 101. Parte 2

Técnicas de Programação I

Perfil Chefe de Transporte

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

Transcrição:

Laboratório de Programação I Estruturas de Controle: Parte I Fabricio Breve

Objetivos Entender as técnicas básicas de solução de problemas Desenvolver algoritmos por meio do processo de refinamento top-down gradual Usar as estruturas de seleção If/Then e If/Then/Else para escolher entre as ações alternativas Usar as estruturas de repetição While. Do While/Loop e Do Entender a repetição controlada por controlador e a repetição controlada por sentinela Usar os operadores de atribuição

Algoritmos Procedimentos para solucionar problemas em termos de: Ações a serem executadas Ordem na qual elas devem ser executadas

Exemplo de Algoritmo Levantar-e-preparar-para-sair: 1. Levante-se da cama 2. Tire o pijama 3. Tome um banho 4. Vista-se 5. Tome o café da manhã 6. Vá ao trabalho O que aconteceria se essa ordem não fosse respeitada?

Pseudocódigo Linguagem informal que ajuda o programador a descrever algoritmos Não é executado em computadores Semelhante ao português cotidiano Ajudam o programador a pensar no programa antes de escrevê-lo em uma linguagem de programação

Estruturas de Controle Normalmente os comandos de um programa são executados de forma seqüencial O VB inclui vários comandos que permitem mudar essa ordem Transferência de controle Programação Estruturada

Estruturas de Controle Todos os programas podem ser escritos utilizando apenas três estruturas de controle Estrutura de Seqüência Estrutura de Seleção Estrutura de Repetição

Fluxogramas Representação gráfica de um algorítmo Desenhado usando símbolos especiais: Retângulos Losangos Ovais Círculos Conectado por setas chamadas linhas de fluxo

Fluxograma Adicionar nota ao total total = total + nota Adicionar 1 ao contador contador = contador + 1

Estruturas de Seleção If/Then Estrutura de seleção simples If/Then/Else Estrutura de seleção dupla Select Case Estrutura de seleção múltipla

Estrutura de Seleção If/Then Pseudocódigo: Se a nota do estudante é maior ou igual a 5 Imprima Passou Visual Basic: If Nota >= 5 Then Console.WriteLine ( Passou ) End If

Fluxograma de If/Then Nota >= 5 verdadeiro Console.WriteLine( Passou ) falso

Estrutura de Seleção If/Then/Else Pseudocódigo: Se a nota do estudante é maior ou igual a 5 Imprima Passou Senão Imprima Reprovou Visual Basic: If Nota >= 5 Then Console.WriteLine ( Passou ) Else Console.WriteLine ( Reprovou ) End If

Fluxograma If/Then/Else Console.WriteLine( Falhou ) falso Nota >= 5 verdade Console.WriteLine( Passou )

Estruturas de Repetição While Do While/Loop Do/Loop While Do Until/Loop Do/Loop Until For/Next For Each/Next

Estrutura de Repetição While Permite ao programador especificar uma ação que deve ser repetida, dependendo do valor de uma condição. Exemplo (pseudocódigo): Enquanto houver mais itens em minha lista de compras Compre o próximo item Risque esse item de minha lista

1 ' While.vb 2 ' Demonstração da Estrutura While 3 4 Module modwhile 5 6 Sub Main() 7 Dim produto As Integer = 2 8 9 ' estrutura multiplica e exibe o produto 10 ' enquanto o produto for menor ou igual a 1000 11 While produto <= 1000 12 Console.Write("{0} ", produto) 13 produto = produto * 2 14 End While 15 16 Console.WriteLine() ' escreve uma linha em branco 17 18 ' imprime o resultado 19 Console.WriteLine( A menor potência de 2 " & _ 20 maior que 1000 é {0}", produto) 21 Console.ReadLine() ' impede que a janela feche 22 End Sub ' Main 23 24 End Module ' modwhile While.vb O teste é feito cada vez que a estrutura é executada 2 4 8 16 32 64 128 256 512 A menor potência de 2 maior que 1000 é 1024 Saída do programa

Fluxograma de While produto <= 1000 verdadeiro produto = produto * 2 falso

Estrutura de Repetição Do While/Loop Funciona da mesma forma que While

1 ' DoWhile.vb 2 ' Demonstração da Estrutura While/Loop 3 4 Module moddowhile 5 6 Sub Main() 7 Dim produto As Integer = 2 8 9 ' estrutura multiplica e exibe o produto 10 ' enquanto o produto for menor ou igual a 1000 11 Do While produto <= 1000 12 Console.Write("{0} ", produto) 13 produto = produto * 2 14 Loop 15 16 Console.WriteLine() ' escreve uma linha em branco 17 18 ' imprime o resultado 19 Console.WriteLine( A menor potência de 2 " & _ 20 maior que 1000 é {0}", produto) 21 Console.ReadLine() ' impede que a janela feche 22 End Sub ' Main 23 24 End Module ' moddowhile DoWhile.vb Esquecer de colocar uma ação que eventualmente torne a condição falsa é um erro lógico e causa um loop infinito 2 4 8 16 32 64 128 256 512 A menor potência de 2 maior que 1000 é 1024 Saída do programa

Fluxograma de Do While/Loop produto <= 1000 verdadeiro produto = produto * 2 falso

Estrutura Do Until/Loop Diferentemente de While e Do While/Loop, a estrutura Do Until/Loop executa o loop enquanto o comando avaliado for falso

1 ' DoUntil.vb 2 ' Demonstração da estrutura Do Until/Loop. 3 4 Module moddountil 5 6 Sub Main() 7 Dim produto As Integer = 2 8 9 ' procure primeira potência de 2 maior que 1000 10 Do Until produto > 1000 11 Console.Write("{0} ", produto) 12 produto = produto * 2 13 Loop 14 15 Console.WriteLine() ' escrever uma linha em branco 16 17 ' imprimir o resultado 18 Console.WriteLine( A menor potência de 2 " & _ 19 maior que 1000 é {0}", produto) 20 End Sub ' Main 21 22 End Module ' moddountil DoUntil.vb 2 4 8 16 32 64 128 256 512 A menor potência de 2 maior que 1000 é 1024 Saída do programa

Fluxograma de Do Until / Loop produto > 1000 falso produto = produto * 2 verdadeiro

Operadores de Atribuição Operadores de atribuição podem ser abreviados Exemplo: valor = valor + 3 valor += 3 Isso vale para os operadores binários: +, -, *, ^, &, / or \ Sintaxe: variável = variável operador expressão variável operador= expressão

Operadores de Atribuição Operador de atribuição Expressão Explicação Atribuição Assuma: c = 4, d = "O" += c += 7 c = c + 7 11 a c -= c -= 3 c = c - 3 1 a c *= c *= 4 c = c * 4 16 a c /= c /= 2 c = c / 2 2 a c \= c \= 3 c = c \ 3 1 a c ^= c ^= 2 c = c ^ 2 16 a c &= d &= "lá" d = d & "lá" "Olá" a d

1 ' Atribuicao.vb 2 ' Usando um operador de atribuição para calcular a potência de 2. 3 4 Module modatribuicao 5 6 Sub Main() 7 Dim expoente As Integer ' potência a ser digitada pelo usuário 8 Dim resultado As Integer = 2 ' número a ser elevado a potência 9 10 ' pedir para o usuário digitar a potência 11 Console.Write( Digite um exponente inteiro: ") 12 expoente = Console.ReadLine() 13 Mesmoefeitona variável resultado 14 resultado ^= expoente ' equivale a resultado = resultado ^ exponente 15 Console.WriteLine( Resultado ^= Expoente: {0}", resultado) 16 17 resultado = 2 ' reiniciar o valor da bsae 18 resultado = resultado ^ expoente 19 Console.WriteLine( Resultado = resultado ^ expoente: {0}", resultado) 20 21 End Sub ' Main 22 23 End Module ' modatribuicao Atribuicao.vb Digite um expoente inteiro: 8 resultado ^= expoente: 256 resultado = resultado ^ expoente: 256 Saída do programa

Formulando Algoritmos: Estudo de Caso 1 (Repetição Controlada por Contador) Contador: especifica o número de vezes que um conjunto de instruções será executado Considere o seguinte problema: Uma classe de dez estudantes fizeram uma prova, as notas (inteiros que variam de 0 a 10) estão disponíveis para você. Determine a média da classe nessa prova.

Pseudocódigo do problema Atribua zero ao total Atribua 1 ao contador de nota Enquanto o contador de nota for menor ou igual a 10 Obtenha a entrada da próxima nota Adiciona a nota ao total Adicione 1 ao contador da nota Atribua o total dividido por 10 à média de nota Imprima a média da classe

'modmedia.vb 'Usando a repetição controlada por contador modmedia.vb Module modmedia Sub Main() 'declarando as variáveis Dim total As Integer 'soma das notas Dim contador As Integer 'contador de notas Dim nota As Integer 'nota digitada pelo usuário Dim media As Double 'média da classe 'fase de inicialização total = 0 contador = 1 'atribui 0 ao total 'prepara o contador para o loop total acumula a soma das notas digitadas contador conta o número de notas digitadas 'fase de processamento While contador <= 10 'solicita ao usuário que digite uma nota e lê a nota Console.Write("Digite uma nota inteira: ") nota = Console.ReadLine() total += nota 'adiciona a nota ao total contador += 1 'adiciona 1 ao contador End While 'fase de finalização media = total / 10 'imprime uma linha em branco e exibe a média da classe Console.WriteLine() Console.WriteLine("Média da Classe é {0}", media) Console.ReadKey() estrutura while se repete enquanto contador for menor ou igual a 10 contador é incrementado em um para cada nota lida, e eventualmente a condição do while se torna falsa End Sub End Module

Digite uma nota inteira: 6 Digite uma nota inteira: 3 Digite uma nota inteira: 2 Digite uma nota inteira: 4 Digite uma nota inteira: 7 Digite uma nota inteira: 8 Digite uma nota inteira: 10 Digite uma nota inteira: 9 Digite uma nota inteira: 5 Digite uma nota inteira: 7 Saída do programa Média da Classe é 6,1

Estudo de Caso 2: Repetição Controlada por Sentinela Desenvolva um programa de média de classe que calcule a média de um número arbitrário de notas cada vez que o programa é executado

Refinamento Top-Down Gradual Começamos com uma descrição em pseudocódigo do topo Determine a média da classe obtida pela resolução do problema Primeiro refinamento: Inicializar as variáveis Obtenha a entrada, some e conte as notas do problema Calcule e imprima a média classe

Refinamento Top-Down Gradual Segundo refinamento: Inicialize total com zero Inicialize contador com zero Introduza a primeira nota (possivelmente a sentinela) Enquanto o usuário não introduzir a sentinela Adicione esta nota ao total corrente Adicione um ao contador de notas Introduza a próxima nota (possivelmente a sentinela) Se o Controlador não é igual a zero Atribua o total dividido pelo contador à média Imprima a média Senão Imprima Nenhuma nota foi introduzida

' Media2.vb ' Usando uma repetição controlada por sentinela para ' calcular a média da sala. Module modmedia2 Sub Main() Dim total As Integer ' soma das notas Dim contador As Integer ' quantidade de notas digitadas Dim nota As Integer ' nota digitada pelo usuário Dim media As Double ' média de todas a notas ' fase de inicialização total = 0 ' zerar total contador = 0 ' zerar contador ' fase de processamento ' pedir para o usuário digitar uma nota e ler nota Console.Write("Digite uma nota inteira, ou -1 para sair: ") nota = Console.ReadLine() ' loop controlado por sentinela, onde -1 é a sentinela While nota <> -1 total += nota ' adiciona a nota ao total contador += 1 ' adiciona 1 ao contador ' pedir para o usuário digitar nota e ler nota Console.Write("Digite uma nota inteira, ou -1 para sair: ") nota = Console.ReadLine() End While ' fase de finalização If contador <> 0 Then media = total / contador ' mostrar a média da sala Console.WriteLine() Console.WriteLine("A média da sala é {0:F}", media) Else ' se nenhuma nota foi digitada Console.WriteLine("Nenhuma nota foi digitada") End If Console.ReadKey() End Sub ' Main End Module ' modmedia2 Usando sentinela um valor precisa ser lido antes do While O prompt deve lembrar o usuário de qual é o valor sentinela

Digite uma nota inteira, ou -1 para sair: 9 Digite uma nota inteira, ou -1 para sair: 7 Digite uma nota inteira, ou -1 para sair: 8 Digite uma nota inteira, ou -1 para sair: 6 Digite uma nota inteira, ou -1 para sair: 4 Digite uma nota inteira, ou -1 para sair: 3 Digite uma nota inteira, ou -1 para sair: 5 Digite uma nota inteira, ou -1 para sair: 10 Digite uma nota inteira, ou -1 para sair: 9 Digite uma nota inteira, ou -1 para sair: 7 Digite uma nota inteira, ou -1 para sair: 5 Digite uma nota inteira, ou -1 para sair: 6 Digite uma nota inteira, ou -1 para sair: 8 Digite uma nota inteira, ou -1 para sair: -1 Saída do programa A média da sala é 6,69

Exercício 1. Os motoristas se preocupam com a quilometragem obtida em seus automóveis. Um motorista registrou vários abastecimentos de tanque de gasolina, anotando os quilômetros rodados e os litros usados em cada abastecimento. Desenvolva um programa que obtenha como entrada os quilômetros dirigidos e os litros usados (ambos como Double) para cada abastecimento. O programa deve calcular e exibir os quilômetros por litro de cada abastecimento e imprimir os quilômetros por litro combinados, obtidos para todos os abastecimentos. Todos os cálculos de média devem produzir resultados em ponto flutuante.

Estudo de Caso 3: Estruturas de Controle Aninhadas Uma instituição oferece um curso preparatório para o exame de Certificação Cisco CCNA. No último ano, 10 estudantes que fizeram o curso prestaram o exame. A instituição deseja saber o quão bem seus alunos foram no exame. Foi solicitado que você escreva um programa que resuma os resultados, e assim recebeu uma lista de dez estudantes. Ao lado de cada nome está escrito um A de Aprovado ou um R de Reprovado. Seu programa deve analisar os dados da seguinte forma: Obtenha a entrada de cada resultado de exame (isto é, um A ou um R) Conte o número de aprovados reprovados Exiba um resumo dos resultados, indicando o número de aprovados e reprovados Se mais que 8 estudantes foram aprovados imprima a mensagem Aumente o preço do curso

Analisando o programa O programa deve ter um loop para ler o conceito de dez estudantes Cada resultado será uma string A ou R Dois contadores armazenam os resultados do exame Um conta os aprovados O outro conta os reprovados Depois de processar todos os exames o programa deve verificar se mais do que 8 alunos foram aprovados

Refinamento Top Down: Pseudocódigo do topo: Analise os resultados do exame e decida se o custo do curso deve ser aumentado Primeiro refinamento: Inicialize as variávies Obtenha a entrada das dez notas de exame e conte os aprovados e reprovados Imprima um resumo dos resultados do exame e decida se o custo do curso deve ser aumentado

Refinamento Top Down: Segundo refinamento: Inicialize os aprovados com zero Inicialize os reprovados com zero Inicialize o contador de estudantes com 1 Enquanto o contador de estudantes for menor ou igual a dez Obtenha a entrada do próximo resultado de exame Se o estudante foi aprovado Adicione 1 aos aprovados Senão Adicione 1 aos reprovados Adicione 1 ao contador de estudantes Imprima o número de aprovados Imprima o número de reprovados Se mais do que oito estudantes foram aprovados Imprima Aumente o preço do curso

' modanalise.vb ' Usando uma repetição controlada por controlador ' para mostrar resultados do exame. Module modanalise Sub Main() Dim aprovados As Integer = 0 ' número de aprovados Dim reprovados As Integer = 0 ' número de reprovados Dim estudante As Integer = 1 ' contador de estudantes Dim resultado As String ' resultado de um exame ' processar os 10 resultados, através de um loop com contador While estudante <= 10 Console.Write("Digite o resultado (A = aprovado, R = reprovado): ") resultado = Console.ReadLine() ' estruturas de controle aninhadas If resultado = "A" Then aprovados += 1 ' incrementar o número de aprovados Else reprovados += 1 ' incrementar o número de reprovados End If estudante += 1 ' incrementar o contador de estudantes End While ' mostrar resultados do exame Console.WriteLine("Aprovados: {0}{1}Reprovados: {2}", aprovados, _ vbcrlf, reprovados) ' aumentar preço se mais de 8 estudantes passaram If aprovados > 8 Then Console.WriteLine("Aumentar o preço do curso") End If Console.ReadKey() End Sub ' Main End Module ' modaverage Retorno de carro com mudança de linha Estrutura If/Else aninhada dentro da estrutura While

Digite o resultado (A = aprovado, R = reprovado): A Digite o resultado (A = aprovado, R = reprovado): A Digite o resultado (A = aprovado, R = reprovado): R Digite o resultado (A = aprovado, R = reprovado): A Digite o resultado (A = aprovado, R = reprovado): A Digite o resultado (A = aprovado, R = reprovado): A Digite o resultado (A = aprovado, R = reprovado): R Digite o resultado (A = aprovado, R = reprovado): A Digite o resultado (A = aprovado, R = reprovado): A Digite o resultado (A = aprovado, R = reprovado): A Aprovados: 8 Reprovados: 2 Saída do programa

Exercício 2. Modifique o programa do Estudo de Caso 3 para aceitar as letras A, a, R e r. Se qualquer outra entrada String for digitada, uma mensagem deve ser exibida informando ao usuário que a entrada é inválida. Apenas incremente o contador se uma das quatro Strings mencionadas anteriormente for introduzida

Referências Bibliográficas MSDN: http://msdn.microsoft.com/vstudio/ DEITEL, Harvey M.; DEITEL, Paul J.; NIETO, Tem R. Véual Basic.NET: Como Programar. Prentice-Hall, 2004