Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Вар-т Функция нач.зн. кон.зн. шаг

Лабораторная работа №3

Циклические программы

 

1. Цель работы:

1.1. Приобретение знаний по составлению циклических программ. (Для Елены Николаевны – предложение от Анкудинова)

 

ПОРЯДОК ПРОВЕДЕНИЯ РАБОТЫ

2.1. Изучить теоретический материал

2.2. Проделать практическое задание

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

 

Цикл представляет собой последовательность операторов, которая выполняется неоднократно.

В языке программирования Pascal имеется стандартный набор из трех разновидностей циклацикл с постусловием (инструкция repeat), цикл с предусловием (инструкция while) и цикл со счетчиком (инструкция for). Хорошо, что у программиста есть возможность выбора наиболее подходящего средства реализации алгоритма, но при изучении циклов часто возникают затруднения при выборе оператора цикла.

 

Цикл с постусловием

 

Иногда при решении задач возникает необходимость выполнить тело цикла хотя бы один раз, а потом исследовать условие повторять ли его еще раз. Эту задачу выполнит цикл с постусловием Repeat.

Оператор повтора repeat состоит из заголовка (repeat), тела и условия окончания (until). Ключевые слова repeat, until обозначают "повторяй" и "пока" соответственно.

repeat повторяй

операторы операторы

until <условие>; до тех пор, пока условие не будет верным

 

Для выполнения в цикле repeat нескольких операторов не следует помещать эти операторы в операторные скобки begin... end. Зарезервированные слова repeat и until действуют как операторные скобки.

Repeat проверяет условие после выполнения действий. это гарантирует хотя бы одно выполнение действий до завершения цикла.

Условие выхода из цикла — это выражение логического типа: простое выражение отношения или сложное логическое выражение;

Цикл работает так: вначале выполняется тело цикла — инструкции, которые находятся между repeat и until, затем проверяется значение Условия выхода из цикла. В том случае, если оно равно false (ложь), т. е. не выполняется — инструкции цикла повторяются еще раз. Так продолжается до тех пор, пока условие не станет true (истина). На рис.7 приведена блок-схема оператора повтора repeat.

 
 

Рис. 7 Условное обозначение на схемах алгоритмов оператора repeat

 

Например,

a) repeat read (Number); Sum:= Sum+Number; until Number=-1 b) repeat i:= i+1; writeln (Sqr(i)) until Number=-1

 

Цикл с предусловием

 

Оператор повтора while состоит из заголовка и тела цикла. Ключевые слова while и do обозначают "до тех пор, пока" и "выполняй" соответственно.

while Условие выполнения цикла do

Begin

{ Инструкции }

end;

Условие выполнения цикла это выражение логического типа.

Оператор while аналогичен оператору repeat, но проверка Условия выполнения цикла производится в самом начале оператора — если значение условия равно true (истина), то выполняются инструкции цикла, находящиеся между begin и end и снова вычисляется выражение Условия выполнения цикла. Так продолжается до тех пор, пока значение Условия выполнения цикла не станет равно false (ложь). На рис. 8 приведена блок-схема оператора повтора while.

 
 

Рис. 8 Условное обозначение на схемах алгоритмов оператора while

 

Взаимосвязь операторов while и repeat: оператор while Условие do Инструкция; эквивалентен оператору if Условие then repeat Инструкция until Not Условие;

Например, фрагмент программы суммирования чисел от 1 до 10. В данном примере использование всех видов цикла равноценно:

...

s:= 0; i:= 1;

while i<=10 do { находим сумму чисел от 1 до 10 }

begin

s:=s+i;

i:=i+1; { изменение переменной управления циклом }

end;

Цикл с параметром

 

Этот вид оператора цикла также называют циклом со счетчиком. В нем важную роль играет переменная-параметр, которая на каждом шаге цикла автоматически изменяет свое значение ровно на единицу — поэтому ее и называют счетчиком.

Инструкцию for можно реализовать двумя способами:

Вариант 1 (с увеличением счетчика):

for Счетчик:= НачальноеЗначение to КонечноеЗначение do

Begin

{ Инструкции }

end;

Ключевые слова for, do обозначают "для", "выполняй" соответственно. Строка, содержащая for...do, называется заголовком цикла, оператор, стоящий после do образует его тело. Очень часто тело цикла — составной оператор. Если тело цикла представлено одиночным оператором, то begin и end не пишутся.

На блок-схеме алгоритма цикл с параметром удобно обозначать следующим образом (рис. 9). Такое обозначение, правда, не совсем соответствует ГОСТу.

Рис. 9 Условное обозначение на схемах алгоритмов цикла с параметром

 

Инструкции между begin и end выполняются столько раз, сколько определяет выражение [(КонечноеЗначение — НачальноеЗначение) + 1].

Это соответствует всем значениям счетчика от начального до конечного включительно.

Например,выполнение цикла — фрагмента программы:

for i:=10 to 14 do write(i: 3);

выведет на экран последовательность цифр в виде:

10 11 12 13 14

 

Вариант 2 (с уменьшением счетчика):

for Счетчик:= НачальноеЗначеиие downto КонечноеЗначение do

Begin

{ Инструкции }

end;

Инструкции между begin и end выполняются столько раз, сколько определяет выражение [(НачальноеЗначение — КонечноеЗначение) + 1].

Например,выполнение цикла — фрагмента программы:

for i:=14 downto 10 do write(i: 3);

выведет на экран последовательность цифр в виде:

14 13 12 11 10

Оператор (инструкция) for используется для организации циклов с фиксированным, заранее известным или определяемым во время выполнения программы числом повторений. Переменная-счетчик должна быть порядкового типа: чаще — целочисленная, реже — символьного, логического или перечисляемого типов.

Параметр цикла for может изменяться (увеличиваться или уменьшаться) каждый раз при выполнении тела цикла только на единицу. Если нужен другой шаг изменения параметра, предпочтительнее циклы repeat и while.

Например, рассмотрим фрагмент программы, в котором предпринята попытка "обмануть" оператор for и получить изменение параметра i на 2 на каждом шаге цикла (единица прибавляется автоматически и еще одна единица прибавляется в теле цикла).

for i:= 1 to 10 do

begin

write(i:4); i:= i + 1;

end;

В данном случае на экране будут выведены числа 1 3 5 7 9.

Однако настоятельно не рекомендуем пользоваться таким приемом. Стоит только немного видоизменить заголовок цикла предыдущего примера и взять в качестве конечного значения 9, а не 10: for i:= 1 to 9 do, как ваша программа не сможет нормально выйти из цикла — "зациклится", так как в момент проверки условия выхода из цикла i никогда не будет равно 9 (сначала 8, а потом сразу 10).

Пример

 

Составить блок-схему алгоритма и программу для вычисления и вывода на экран таблицы значений функции , где аргумент Х изменяется от начального значения (например, 1) до конечного (например, 2) с заданным шагом (например, 0,05). Параметры А и В задаются оператором ввода.

Здесь переменная xmin используется для обозначения начального значения аргумента Х, xmax - для обозначения конечного значения аргумента Х, dx - для обозначения шага, А и В - для обозначения параметров, необходимых для вычислений, X и Y - для обозначения текущего значения аргумента и текущего значения функции. Эта задача может быть решена тремя способами.

Вариант 1: Цикла с постусловием (REPEAT-UNTIL) (Рис. 10)

 

Рис.10. Блок-схема для цикла с постусловием.

 

 

Текст программы

 

program prim_1;

{программа вычислений и вывода на экран таблицы значений функции с использованием оператора REPEAT-UNTIL}

var a,b:real;

xmin,xmax,dx:real;

x,y:real;

begin

write('A=');readln(a);

write('B=');readln(b);

write('начальное значение=');readln(xmin);

write('конечное значение=');readln(xmax);

write('шаг=');readln(dx);

writeln('|___|___|');

writeln('| X | Y |');

writeln('|___|___|');

x:=xmin;

repeat

y:=A*sin(B*x)/x;

writeln('|',x:6:2,'|',y:7:2,'|');

x:=x+dx;

until x > xmax+dx/2;

writeln('|___|___|');

end.

 

Вариант 2: Цикла с предусловием (WHILE-DO) (Рис.11)

 

Текст программы

program prim_2;

{программа вычислений и вывода на экран таблицы значений функции с использованием оператора WHILE-DO}

var a,b:real;

xmin,xmax,dx:real;

x,y:real;

begin

write('A=');readln(a);

write('B=');readln(b);

write('начальное значение=');readln(xmin);

write('конечное значение=');readln(xmax);

write('шаг=');readln(dx);

writeln('|___|___|');

writeln('| X | Y |');

writeln('|___|___|');

x:=xmin;

while x < xmax+dx/2 do

begin

y:=A*sin(B*x)/x;

writeln('|',x:6:2,'|',y:7:2,'|');

x:=x+dx;

end;

writeln('|___|___|');

end.

 

 

Рис.11 Блок-схема для цикла с предусловием.

 

Вариант 3: Цикла с параметром (FOR-DO) (Рис.12)

 

Рис.12. Блок-схема для цикла с параметром.

 

program prim_4;

{программа вычислений и вывода на экран таблицы значений функции с использованием оператора FOR-DO}

var a,b:real;

xmin,xmax,dx:real;

x,y:real;

i,n:integer;

begin

write('A=');readln(a);

write('B=');readln(b);

write('начальное значение=');readln(xmin);

write('конечное значение=');readln(xmax);

write('шаг=');readln(dx);

writeln('|___|___|');

writeln('| X | Y |');

writeln('|___|___|');

n:=trunc((xmax-xmin)/dx)+1;

x:=xmin;

for i:=1 to n do

begin

y:=A*sin(B*x)/x;

writeln('|',x:6:2,'|',y:7:2,'|');

x:=x+dx;

end;

writeln('|___|___|');

end.

 

Практическая часть

 

Задание 1: Составить блок-схему алгоритма и программу с использованием цикла с предусловием или постусловием для вычисления и вывода на экран таблицы значений функции. Вывод выполнить в два столбика: первый столбик - значения аргумента, второй - значения функции. При разработке программы следует учитывать область определения функции и в случае необходимости организовать печать сообщения - “функция не определена”.

Таблица 1

Вар-т Функция нач.зн. кон.зн. шаг

____________________________________________________________________________

1. 0.1 1.25 0.1

2. 3 5.5 0.3

3. 0.5 3.75 0.5

4. -4 4.5 1

5. 0.1 1.25 0.1

6. 0.5 3.75 0.5

7. 3 5.5 0.3

8. 0.2 1.7 0.2

9. 0.3 3.7 0.4

10. 20 115 9

11. 0 2.2 0.4

12. -9.5 9.5 2.5

13. 0.5 3.75 0.5

14. -4 -2.5 0.2

15. -8 8 2.5

 

Задание 2: Составить программу с использованием цикла с предусловием или постусловием. Предусмотреть задание исходных данных при помощи оператора ввода.

  1. Построить и записать в виде программы алгоритм вычисления суммы квадратов десяти произвольных чисел, водимых с клавиатуры в процессе выполнения программы.
  2. Вводятся 15 чисел. Определить, сколько среди целых чисел.
  3. Вывести все чётные числа начиная с числа N и до числа M. Числа N и M задает пользователь.
  4. Составить программу, проверяющую, является ли последовательность из 10 целых чисел, вводимых с клавиатуры, возрастающей.
  5. Составить программу, печатающую все делители целого числа в порядке возрастания.
  6. Составить программу нахождения суммы чётных чисел, находящихся в промежутке от 26 до 88.
  7. Найти наибольший общий делитель двух натуральных чисел a и b.
  8. Спортсмен в первый день пробежал 10 км. Каждый следующий день он увеличивал норму на 10% от нормы предыдущего дня.

а) Определить через сколько дней спортсмен пробежит суммарный путь более 100 км.

б) Определить через сколько дней спортсмен будет пробегать более 20 км.

в) Какой путь пробежит спортсмен на 7-й день.

  1. Вводятся 14 чисел. Определить, сколько среди них положительных (включая 0) и сколько отрицательных. (Числа вводятся в одну переменную в цикле)
  2. Запросите 16 чисел и выведите на экран для каждого, делится ли оно нацело на 11. Спросите у пользователя, сколько нужно проанализировать чисел, а затем запросите эти числа и сделайте для каждого вывод, является ли оно четным или отрицательным.
  3. Найдите сумму следующей последовательности а1234-...+аn, где n - количество элементов, задаваемых пользователем.
  4. Запросить имя пользователя и напечатать "Привет, Вася!" 10 раз. (если Вася – имя пользователя)
  5. Программа должна вычислять произведение двух чисел и спрашивать завершать программу или нет, если нет то продолжать запрашивать данные вычислять произведение и печатать его.
  6. Вывести на печать все трёхзначные натуральные числа, сумма цифр которых равна заданному числу N. (Операции div и mod не использовать.)
  7. Составить программу, печатающую все простые числа, не превосходящие данного числа.

 

Задание 3: Составить программу с использованием цикла с параметрами. Предусмотреть задание исходных данных при помощи оператора ввода.

1. Написать программу, которая 10 раз выводит на экран имя и фамилию.

2. Написать программу, которая выводит таблицу квадратов первых десяти целых положительных чисел.

3. Написать программу, которая выводит таблицу квадратов первых пяти целых положительных нечетных чисел.

4. Написать программу, которая вычисляет сумму первых n целых положительных целых чисел. Количество суммируемых чисел должно вводиться во время работы программы.

5. Написать программу, которая вычисляет сумму первых n целых положительных четных чисел. Количество суммируемых чисел должно вводиться во время работы программы.

6. Написать программу, которая вычисляет сумму первых п членов ряда 1, 3, 5, 7,.... Количество суммируемых членов ряда задается во время работы программы.

7. Написать программу, которая вычисляет сумму первых n членов ряда

 

 

Количество суммируемых членов ряда задается во время работы программы.

8. Написать программу, которая выводит таблицу степеней двойки (от нулевой до десятой).

9. Написать программу, которая вычисляет факториал введенного с клавиатуры числа. (Факториалом числа n называется произведение целых чисел от 1 до n. Например, факториал 1 равен 1, 8 — 40320).

10. Написать программу, которая выводит таблицу значений функции у = -2,4х2+5х-3 в диапазоне от -2 до 2 с шагом 0,5.

11. Написать программу, которая вводит с клавиатуры 5 дробных чисел и вычисляет их среднее арифметическое.

12. Написать программу, которая вычисляет среднее арифметическое вводимой с клавиатуры последовательности дробных чисел. Количество чисел должно задаваться во время работы программы.

13. Написать программу, которая вводит с клавиатуры последовательность из пяти дробных чисел и после ввода каждого числа выводит среднее арифметическое полученной части последовательности.

14. Написать программу, которая вычисляет среднее арифметическое последовательности дробных чисел, вводимых с клавиатуры. После того, как будет введено последнее число, программа должна вывести минимальное и максимальное число последовательности. Количество чисел должно задаваться во время работы программы.

15. Написать программу, которая генерирует 10 случайных чисел в диапазоне от 1 до 10, выводит эти числа на экран и вычисляет их среднее арифметическое.

 

Задание 4: Составить программу с использованием цикла с параметрами. Предусмотреть задание исходных данных при помощи оператора ввода.

1. Написать программу, которая генерирует три последовательности из десяти случайных чисел в диапазоне от 1 до 10, выводит каждую последовательность на экран и вычисляет среднее арифметическое каждой последовательности.

2. Написать программу, которая выводит на экран таблицу стоимости, например, яблок в диапазоне от 100 г до 1 кг с шагом 100.

3. Написать программу, которая выводит таблицу значений функции у =|х + 2|. Диапазон изменения аргумента — от -4 до 4, шаг приращения аргумента — 0,5.

4. Написать программу, которая выводит на экран таблицу умножения, например, на 7.

5. Написать программу, которая выводит двоичное представление введенного с клавиатуры десятичного целого числа в диапазоне от 0 до 255.

6. Написать программу, которая выводит на экран квадрат Пифагора — таблицу умножения.

7. Напишите программу, которая выводит на экран изображение шахматной доски. Черные клетки отображать "звездочкой", белые — пробелом.

8. Написать программу, которая преобразует введенное пользователем десятичное число в двоичное.

9. Написать программу проверки знания таблицы умножения. Программа должна вывести 10 примеров и выставить оценку: за 10 правильных ответов — "отлично", за 9 и 8 —"хорошо", за 7 и 6 — "удовлетворительно", за 6 и менее — "плохо".

10. Написать программу проверки умения складывать и вычитать числа в пределах 100. Программа должна вывести 10 примеров, причем в каждом примере уменьшаемое должно быть больше или равно вычитаемому, т. е. не допускается предлагать испытуемому примеры с отрицательным результатом. Оценка выставляется по следующему правилу: за 10 правильных ответов — "отлично", за 9 и 8 —"хорошо", за 7 и 6 — "удовлетворительно", за 6 и менее — "плохо".

11. Задано n троек чисел a,b,c. Определить, сколько из предложенных троек можно использовать для построения треугольника, если a,b,c - длины его сторон. (Известно, что a ≤ b ≤ c)

12. Найти сумму целых положительных чисел, больших 20, меньших 100 и кратных 3.

13. В бригаде, работающей на уборке сена, имеется N косилок. Первая из них работала m ч., а каждай следующая на 10 мин. больше, чем предыдущая. Сколько часов проработала вся бригада?

14. В компьютер вводятся по очереди данные о росте N учащихся класса. Определить средний рост учащихся класса.

15. Каждая бактерия делится на две в течение одной минуты. В начальный момент имеется одна бактерия. Составьте программу, которая рассчитает количество бактерий на заданное Вами целое значение момента времени.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...