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



Documentos relacionados
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:

Comandos de repetição while

9.1.2 Laços Controlados por Entrada: Contador

Estruturas de Repetição

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

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

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

1) Digitar o código-fonte no editor do compilador Turbo Pascal para windows, exatamente como apresentado a seguir:

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

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

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

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

02. [Manzano, 1996] Escreva um programa em C que apresente os quadrados dos números inteiros de 15 a 200.

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

INTRODUÇÃO À LINGUAGEM C++

Técnicas de Programação I

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Python Condicionais e Loops. Introdução à Programação SI1

Variáveis, Expressões, Atribuição, Matrizes, Comandos de Desvio

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

Sumário Algoritmos e Estrutura de Dados Repetição

Convertendo Algoritmos para a Linguagem C

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

7. Estrutura de Decisão

Técnicas de Programação I

Introdução a Algoritmos Parte 04

Laboratório de Programação I

Estrutura de Repetição Simples

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

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

DESENVOLVIMENTO DE SOFTWARE

Programação Funcional. Aula 5. Funções Recursivas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011.

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

2ª Lista de Exercícios

Tubarão / Santa Catarina / BRAZIL osmarjr@unisul.rct-sc.br

MANIPULAÇÃO DE STRINGS

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

Exercícios de Fixação Pseudocódigo e Estruturas Básicas de Controle

Aula 3 Desvio Condicional

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Conceitos básicos da linguagem C

IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01

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

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

PROGRAMAÇÃO II 3. FILA DINÂMICA

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

José Romildo Malaquias

ENGENHARIA DE PRODUÇÃO ICC 1 TÉCNICAS DE PROGRAMAÇÃO

Algumas notas sobre PASCAL

Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS

A estrutura de repetição em um algoritmo consiste na execução de um trecho do mesmo levando em consideração certas condições imposta pelo algoritmo.

Programação: Estruturas de seleção

/ Métodos de Programação I Projecto 0

Estrutura de decisão

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

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Notas de Cálculo Numérico

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

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

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7

Unidade 4: Planilhas eletrônicas

FERRAMENTAS BÁSICAS DA PROGRAMAÇÃO (cont)

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

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

Capítulo 12. SUB-ROTINAS

Programas C com Repetição

Estrutura de Dados Básica

Revisão: Variáveis, Expressões, Matrizes, Comandos de Desvio

JavaScript (ou JScript)

Aluísio Eustáquio da Silva

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

Linguagem C: for. Introdução à linguagem C(++) Profs. Anilton, Lasaro e Paulo Coelho. Faculdade de Computação Universidade Federal de Uberlândia

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

LINGUAGEM C. Estrutura básica de um programa

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

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

Questões dadas em Sala de Aula (para cada turma), nas aulas de Teoria:

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

Computação e Processamento de Dados CPD INF400

Primeiro roteiro de exercícios no Scilab Cálculo Numérico

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

6) ESTRUTURA DE UM PROGRAMA

Lista de Exercícios 03 Algoritmos Repetição

Sistemas de Apoio à Decisão

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

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

ALGORITMOS E FLUXOGRAMAS

UNIVERSIDADE FEDERAL DE SANTA MARIA

Programação de Computadores. Professor Ilaim Costa Junior

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

3. Estruturas de seleção

Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo;

Estruturas de Repetição. Programação em Java Estruturas de Repetição

Algoritmos: Estruturas de Repetição. Prof. Carlos Lopes

Elementos básicos das linguagens de programação

MD Sequências e Indução Matemática 1

Programação científica C++

Estrutura Condicional C++

Transcrição:

Notas de Aula de Algoritmos e Programação de Computadores FLÁVIO KEIDI MIYAZAWA com a colaboração de TOMASZ KOWALTOWSKI Instituto de Computação - UNICAMP Versão 2000.1

Estas notas de aula não devem ser usadas como única fonte de estudo. O aluno deve ler outros livros disponíveis na literatura. Nenhuma parte destas notas pode ser reproduzida, qualquer que seja a forma ou o meio, sem a permissão dos autores. Os autores concedem a permissão explícita para a utilização e reprodução deste material no contexto do ensino de disciplinas regulares dos cursos de graduação sob a responsabilidade do Instituto de Computação da UNICAMP. c Copyright 2000 Instituto de Computação UNICAMP Caixa Postal 6176 13083 970 Campinas SP fkm,tomasz @ic.unicamp.br ii

4 Estruturas de Repetição A estrutura de repetição permite que um comando (ou bloco de comandos) seja executado repetidamente até que uma determinada condição de interrupção seja satisfeita. 4.1 Comando For O comando For permite que um comando ou bloco de comandos seja repetido um número específico de vezes. Neste comando uma variável de controle é incrementada ou decrementada de um valor inicial em cada interação até um valor final. A sintaxe do comando for que incrementa a variável de controle é dada como: for variável de controle := expressão 1 to expressão 2 do Comando ou bloco de comandos; Para a forma que decrementa a variável de controle, temos a seguinte sintaxe: for variável de controle := expressão 1 downto expressão 2 do Comando ou bloco de comandos; Na figura 15 apresentamos o fluxograma de uma das formas do comando for. VC:=VI; Condição VC>VF false true Comando ou Bloco de Comandos For VC := VI to VF do Comando ou Bloco de Comandos VC := VC + 1; {OBS:} {VC = Variável de Controle} {VI = Valor Inicial} {VF = Valor Final} Figura 15: Fluxograma e sintaxe de uma forma do comando for. Exemplo 4.1 Faça um programa para calcular o fatorial de um determinado número lido. program fat; var n,i,fatorial :integer; write( Entre com um número: ); fatorial : 1; for i: 2 to n do fatorial: fatorial i; writeln( O fatorial de,n, é igual a,fatorial); 30

Exemplo 4.2 Faça um programa que lḙ um valor inteiro positivo e em seguida lḙ uma seqüḙncia de valores reais. O programa deve imprimir o maior valor real da seqüḙncia. program Maximo; var n,i : integer; x : real; maximo : real; ReadLn(n); Supõe todos os dados não negativos. maximo : 0.0 for i: 1 to n do ReadLn(x); if x maximo then maximo : x WriteLn(maximo) Exemplo 4.3 (Tabuada) Faça um programa que imprima uma tabela, com 9 linhas e 9 colunas. Na interseção da linha com a coluna deve conter um valor que é a multiplicação do com. Isto é, o programa deve imprimir uma tabela da seguinte forma: 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81 program ProgramaTabuada; var i,j : integer; for i: 1 to 9 do for j: 1 to 9 do write(i j:3); writeln; Exercício 4.1 (Tabela de potḙncias) Faça um programa que lḙ dois inteiros positivos e e imprime uma tabela de tamanho onde a posição da tabela contém o número. 1 1 1 1 1 2 4 8 16 32 3 9 27 81 243 4 16 64 256 1024 5 25 125 625 3125 6 36 216 1296 7776 31

Exemplo 4.4 (Triˆangulo de Floyd) O seguinte triˆangulo formado por linhas de números consecutivos, cada linha contendo um número a mais que na linha anterior, é chamado de Triˆangulo de Floyd. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Faça um programa que imprime o Triˆangulo de Floyd com linhas (o valor de é lido). program Floyd; var i : integer; índice da linha j : integer; índice da coluna k : integer; próximo número m : integer; número de linhas ReadLn(m); k : 0; for i: 1 to m do for j: 1 to i do k : k 1; Write(k:3) WriteLn end Exercício 4.2 Faça um programa que lḙ um inteiro positivo e imprime um triˆangulo constituído por números com o seguinte formato. No caso a tabela foi impressa com valor de igual a 6. 6 5 4 3 2 1 5 4 3 2 1 4 3 2 1 3 2 1 2 1 1 32

4.2 Comando While O comando while é uma estrutura de repetição onde a condição de interrupção é testada antes de se executar os comandos a serem repetidos. Na figura 16, apresentamos o fluxograma e a sintaxe do comando While. Condição C true false Comando ou Bloco de Comandos While (C) do Comando ou Bloco de Comandos Figura 16: Fluxograma e sintaxe da rotina While. Exemplo 4.5 (Validação de entrada) Em determinado momento, um programa deve ler a partir do teclado um número que deve estar necessariamente no intervalo! #"$&%'")(. Faça um programa que fique lendo números do teclado e pare quando o usuário entrar com o primeiro número entre! #"$&%'")(. program Validacao; var n:integer; write( Entre com um número no intervalo [10,50]: ); while ((n* 10) or (n 50)) do writeln( ERRO: Número inválido. ); write( Entre com um número no intervalo [10,50]: ); writeln( O número positivo lido foi:,n); Exemplo 4.6 (Seqüḙncia de números positivos) Faça um programa que lḙ uma seqüḙncia de números positivos (pode ser vazia) e seguida pela leitura de um número negativo. O programa deve parar de ler números quando o usuário entrar com o número negativo. O programa deve imprimir a soma, média e quantidade dos números não negativos. program SequenciaPositivos; var x,soma : real; nelementos : integer; write( Entre com um número: ); readln(x); soma : 0; nelementos : 0; while (x + 0) do soma : soma x; nelementos : nelementos 1; write( Entre com um número: ); readln(x); if (nelementos 0) then writeln( A soma dos elementos é:,soma); writeln( A media dos elementos é:,soma/nelementos); writeln( A quantidade de elementos é:,nelementos); end else writeln( Não foi lido nenhum elemento positivo. ); 33

@ Exemplo 4.7 Faça um programa que leia uma quantidade, (vamos supor que,-" ) e em seguida o programa deve ler idades inteiras e então deve imprimir a média das idades lidas. program MediaIdades; var. x,soma,lidos,n : integer; write( Entre com a quantidade de idades a ler: ); lidos: 0; soma : 0; while (lidos* n) do write( Entre com uma idade: ); readln(x); soma : soma x; lidos : lidos 1; if (lidos 0) then writeln( A média das idades é,soma/lidos) else writeln( Não foi lido nenhuma idade. ); Exemplo 4.8 O cálculo da raiz quadrada de um número positivo pode ser aproximado usando se a seguinte série: /02134%365#5#5'798:5; =<- >? A BDCFE 98G5> H<- > Se é um quadrado perfeito, então podemos calcular a raiz usando-se o seguinte código: soma : 0; i : 1; raiz : 0; while soma*i n do soma : soma i; i : i 2; raiz : raiz 1 writeln(raiz); Caso não seja um quadrado perfeito podemos obter uma aproximação considerando a parte inteira da raiz. Seja J LK9M N. Então J PO *Q J R > Fazendo duas modificações no trecho acima: soma : 0; i : 1; raiz : 0; while soma*p n do *+ S S S I S S T soma : soma i; i : i 2; raiz : raiz 1; raiz : raiz< 1; writeln(raiz); *+ I S S S S I 6 Note que a atribuição raiz:=raiz-1; foi feita para voltar o valor da raiz de uma unidade, uma vez que a condição de parada do comando while é soma*p n;. Uma versão que atualiza a variável soma com atraso é apresentada a 34

seguir: soma : 0; while soma*p n do soma : soma i; i : i 2; raiz : raiz 1; writeln(raiz); i : 1; raiz : Q< 1; atraso na soma Exercício 4.3 Faça um programa para calcular a raiz aproximada, como no exemplo 4.8, mas usando o comando em vez do comando while. Exercício 4.4 Para calcular a raiz quadrada de com uma casa decimal basta calcular a raiz de #"U"H5' como no exemplo 4.8, e dividir o resultado por 10. Faça um programa que calcula a raiz de um valor V 2,W"X pelo método do exemplo 4.8, com Y casas decimais, ( e Y são lidos). 4.3 Comando Repeat O comando é uma estrutura de repetição onde a condição de interrupção da estrutura de repetição é testada no fim do bloco de repetição. Note que neste comando não é preciso usar e end para especificar os vários comandos a serem repetidos. Na figura 17, apresentamos o fluxograma e a sintaxe do comando Repeat. Comando1 Comando2 Repeat Comando1 Comando2 Comandok false C Condição Comandok Until (C); true Figura 17: Fluxograma e sintaxe do comando Repeat. 35

Z Exemplo 4.9 (Validação de entrada) Em determinado momento, um programa deve ler a partir do teclado um número que deve estar necessariamente no intervalo! #"$&%'")(. Faça um programa que fique lendo números do teclado e pare quando o usuário entrar com o primeiro número entre! #"$&%'")(. program Validacao; var n:integer; write( Entre com um número no intervalo [10,50]: ); if ((n* 10) or (n 50)) then writeln( ERRO: Número inválido. ); until (n + 10) and (n*+ 50); writeln( O número positivo lido foi:,n); Exemplo 4.10 A seguir apresentamos a implementação do Algoritmo de Euclides usando o comando. program Euclides; var x,y,r,m,n : integer; Readln(m,n); x : m; y : n; r : x mod y; x : y; y : r until r 0; Writeln(x) Exemplo 4.11 (Seqüḙncia de números positivos) Faça um programa para ler uma seqüḙncia de números positivos (pode ser vazia) e seguido pela leitura de um número negativo. O programa deve parar de ler números quando o usuário entrar com o número negativo. O programa deve imprimir a soma, média e quantidade dos números não negativos. program SequenciaPositivos2; var x,soma : real; nelementos : integer; soma : 0; nelementos : 0; write( Entre com um número: ); readln(x); if (x + 0) then soma : soma x; nelementos : nelementos 1; until (x* 0); if (nelementos 0) then writeln( A soma dos elementos é:,soma); writeln( A media dos elementos é:,soma/nelementos); writeln( A quantidade de elementos é:,nelementos); end else writeln( Não foi lido nenhum elemento positivo. ); 36

Exemplo 4.12 A raiz quadrada de um número positivo [\ ][_^ pode ser calculada pelo método de aproximações sucessivas de Newton. As aproximações [ E [ #`#`#` são tais que a b=cedifg[ich M [i^, onde kmlhn [_cj p se ljqersutwvyxjlhn o /' ljqzr{s caso contrário` Faça um programa que calcula a raiz de um número calculando o valor da raiz pelo método de aproximações sucessivas de Newton parando as interações quando a diferença entre o valor calculado em uma interação com o valor calculado na interação anterior seja menor que "$"U"U"U". program raizquadrada; var i : integer; n,raiz,raizanterior : real; write( Entre com um número: ); raiz : n/2; raizanterior : raiz; raiz : (raiz raiz n)/(2 raiz); until (abs(raiz< raizanterior) * 0.000001); writeln( A raiz de,n:20:10, é,raiz:20:10); Exemplo 4.13 Faça um programa que escreve individualmente os dígitos de um número inteiro positivo da direita para a esquerda. program Digitos1; var n,d : Integer; write( Entre com um número inteiro positivo: ); Readln(n); d : n mod 10; n : n div 10; Write(d:2) until n 0; writeln; Exercício 4.5 Faça um programa que escreve individualmente os dígitos de um número inteiro positivo da esquerda para a direita. Exemplo 4.14 O valor } pode ser calculado através da série }~ E < < x <25#5#5. Cada termo desta série tem um formato <I ƒy 5 Bˆ je, / '&8#`#`#`. A medida que cresce, o termo vai se tornando cada vez menor, e sua contribuição para o valor de } se torna menor. Faça um programa que calcula o valor de } através da série acima, somando termo a termo, parando quando a diferença absoluta entre o valor de } calculado em uma interação e o valor de } calculado na interação anterior for menor que "$"U"U". 37

Ž A @ @ program pi; var pi,piant,termo,sinal : real ; i : integer; pi : 0; i : 1; sinal : W< 1; termo : 4; piant : pi; pi : pi termo; i : i 2; termo : sinal 4/i; sinal : sinal (< 1); until abs(pi< piant) * 0.00001; writeln( pi =,pi); Exercício 4.6 Um programa deve ler um inteiro positivo e em seguida ler mais valores reais sendo que o programa deve imprimir a soma, a média, o menor valor e o maior valor dos valores reais lidos. Faça trḙs versões deste programa, usando os comandos while, e for. 4.4 Exercícios 1. Faça um programa que descubra um número entre " e #"U"U" imaginado pelo usuário. O programa deve fazer interações com o usuário. A cada interação, o programa deve tomar um número e perguntar para o usuário se este número é igual, menor ou maior do que o valor imaginado. O usuário deve responder de forma correta. A execução do programa deve terminar assim que o programa adivinhar o valor imaginado pelo usuário. O programa deve imprimir o número imaginado e o número de perguntas feitas pelo programa. Seu programa não pode fazer mais que 10 perguntas. 2. Faça um programa que leia uma seqüência de números inteiros positivos e termine com um número negativo (este último não deve ser considerado, serve apenas para finalizar a seqüência). O programa deve verificar se os números positivos: (a) Estão em ordem crescente. (b) Estão em ordem decrescente. (c) Se a seqüência é uma progressão aritmética, neste caso dizer a razão. (d) Se a seqüência é uma progressão geométrica, neste caso dizer a razão. 3. O desvio padrão dp e a variância var dos números E #`#`#`ˆ @ podem ser calculados usando as seguintes fórmulas Y#Š E #`#`#`; @ Œ <- c CFE c < XJ E #`#`#`; @ Y;Š E #`#`#`; @ y ` Faça um programa que lê o valor e a seqüência dos números reais e depois imprime a média, o desvio padrão e a variância dos números lidos. 4. Um banco faz empréstimos com uma taxa de juros mensal igual a, " *2 O. Faça um programa que imprime quanto uma pessoa que toma emprestado š reais ficará devendo após b meses. Os valores de š, e b são lidos. Q A c CFE c 38