Оператор цикла с предварительным условием



Данный цикл позволяет организовать цикл, число повторений которого зависит от записанного в нем условия. Общий вид записи оператора:

while B do P,

где В -условие (логическое выражение), Р – оператор или операторы (телом цикла).

Если логическое выражение имеет значение TRUE, то выполняются операторы, входящие в тело цикла. Как только логическое выражение примет значение FALSE, происходит выход из цикла. Если логическое выражение с самого начала ложно, то тело цикла не выполнится ни разу.

Пример5  Пусть даны два числа a и b (а>1) и надо получить все члены бесконечной последовательности а, а2, а3, ..., меньшие числа b. Программа:

· Блок-схема:              

Оператор цикла с последующим условием

В этом операторе проверка условия производится после тела цикла, обеспечивается выполнение по крайне мере одного вычисления в цикле (когда значение логического выражения ложно). Общий вид записи оператора имеет вид:

repeat P1;P2;...;Pn;

until B;

где P1;P2;...;Pn- операторы циклической части программ (тело цикла), В - логическое выражение.

Пример6 Пусть для аргумента X, находящегося в диапазоне от 3 до 9, требуется вычислить и напечатать значение функции Y=(X-6)2, где X изменяется с шагом 2. (рис. 1)

· Блок-схема:              

  1. Работа с массивами.

Массив - это набор объектов одного типа, у каждого из которых есть индекс (номер). Построение программ, оперирующих с элементами массивов – важнейшая часть техники программирования.

Элементы массива длины 20 могут иметь, например, индексы 1,2,...,20 или 0,1,2,...,19. Способ индексации, тип элементов, длина массива фиксируются в определении того типа, к которому принадлежит массив. Рассмотрим конкретный пример. Определение, имеющее вид                

 t=array [1..20] of real

это определение типа, имя которого t. Объектами типа t будут упорядоченные наборы по 20 элементов, имеющих тип real; диапазон изменения значения индекса - от 1 до 20. Это определение типа, предваренное служебным словом type, помещается в программу перед совокупностью описаний переменных. Пусть переменная а описана в программе как переменная типа t:

Var a: t;...

Тогда при выполнении программы значениями переменной а будут массивы длины 20, элементы которых имеют тип real. Для того, чтобы рассматривать эти элементы по отдельности, для них применяются обозначения a[1], a[2],...,a[20].

Переменная а - это переменная типа t, переменные a[1], a[2],...,a[20] - это переменные типа real. С переменными a[1], a[2],...,a[20] можно обращаться как с обычными переменными типа real (т.е. как с переменными-идентификаторами x, y, z и т.д.).Заключенный в квадратные скобки индекс - это не обязательно целое число, им может произвольное выражение со значением типа integer. Например, переменные a[i], a[2*i], a[2*i-1] удобно использовать для поочередного рассмотрения в цикле всех элементов массива, элементов массива, элементов, стоящих на четных и нечетных местах; здесь проявляется преимущество обозначений a[1], a[2],...,a[20] перед обозначениями a1, a2, ..., a20. Значение индекса должно лежать в указанном в определении типа диапазоне, в данном случае - в диапазоне от 1 до 20.  


Пример7 В массиве А(N) найти максимальный элемент. Определить сколько раз он встречается в данном массиве.

· Введём обозначения: Max - максимальный элемент массива;

 K - количество максимальных элементов  

 

 

·

· Листинг программы :   Program Massiv1; Type t=array[1..50] of real; Var a:t;         N, i,K: Integer;         Max:Real; Begin Writeln(‘Введите N’);         Readln(N);         For i:=1 to N Do Readln(a[I]);         K:=0; Max:=a[i];         For i:=2 To N Do                If Max<a[i] Then Max:=a[i];         For I:=1 To N Do                If Max=a[i] Then K:=K+1;     Writeln(‘Макс. эл. мас:‘, Max:8:3);     Writeln(‘Кол. макс. эл:',K:8); End.
Блок-схема:              


IV Задания контрольных работ

Задание №1. Имеется четыре ( A , B , C , D ) числа. Необходимо ответить на вопрос: “Правда ли, что …?” (вопрос вы найдете в таблице вариантов). Ответ нужно вывести в виде текста – слов “Правда” или “Неправда”. Оформить протокол работы программы.

0 все числа положительные?
1 ни одно число не превышает число 9?
2 каждое из первых двух чисел не превышает больше каждого из последних двух?
3 среди чисел есть нечетные?
4 числа расположены в возрастающем порядке?
5 среди этих чисел нет равных?
6 точно два из чисел равны?
7 среди чисел есть и положительные и отрицательные?
8 первое число самое большое?
9 первое число меньше всех остальных?
10 среди чисел точно одно меньше нуля?
11 не все числа отрицательные?
12 все числа больше 0 и меньше 7?
13 все числа равны между собой?
14 среди этих чисел есть равные?
15 среди чисел есть кратные 3?
16 первое число не самое маленькое?
17 среди чисел есть кратные 4?
18 хотя бы два из чисел равны?
19 среди чисел нет кратных 5?
20 первое число самое большое, а последнее самое маленькое?
21 числа расположены в убывающем порядке?
22 первое число самое маленькое, а последнее самое большое?
23 среди чисел есть четные?
24 среди чисел точно одно меньше нуля?
25 точно два из трех чисел не равны между собой?
26 все числа отрицательные?
27 последнее число не самое маленькое?
28 среди чисел нет отрицательных?
29 имеется точно одно число, кратное 6?
30 сумма первых двух больше суммы вторых?
31 имеется хотя бы одно число не равное двум другим?
32 каждое из первых двух чисел больше каждого из последних?
33 не все числа положительны?
34 сумма первых двух чисел равна сумме вторых?
35 три числа из четырех - отрицательные?

Задание №2. Составить программу вычисления и выдачи на печать суммы (произведения) N элементов бесконечного ряда. Оформить проверку задания.

0 y=1-6+11-16+24-…
1 y=-2+5-8+11-14+…
2 y=60-53+46-39+32-…
3 y=-4+8-16+32-64+…
4 y=2-6+18-54+162-…
5 y=60-57+54-51+48-…
6 y=-18+20-22+24-26+…
7 y=85-80+75-70+65-…
8 y=42-40+38-36+34-…
9 y=-20+15-10+5-0+…
10 y=(-24)12(-6)3(-1,5)…
11 y=256(-64)16(-4)1…
12 y=(-3)6(-9)12(-15)…
13 y=4(-6)8(-10)12…
14 y=(-512)256(-128)64…
15 y=(-64)32(-16)8(-4)…
16 y=16(-8)4(-2)1…
17 y=3-5+7-9+11-…
18 y=50-40+30-20+10-…
19 y=3-9+27-81+243-…
20 y= 12+23+34+45+…
21 y=70-65+60-55+50-…
22 y=1(-3)9(-27)81…
23 y=1000(-100)10(-1)0,1…
24 y=(-1)4(-16)64(-256)…
25 y=10+41+82+163+…
26 y=-243+81-27+9-…
27 y=(-128)64(-32)16(-8)…
28 y=-20+18-16+14-12+…
29 y=(-10)8(-6)4(-2)…
30 y=125(-25)5(-1)0,2…
31 y=26+25+24+23+…
32 y=32(-16)8(-4)2…
33 y=32+33+34+36+…
34 y=(-2)4(-8)16(-32)…
35 y=-18+15-12+9-6+…

Задниеа №3. Дана функция . ЭВМ должна вычислить и напечатать значения этой функции для последовательных значений X = C , C +( B +1), C +2( B +1), C +3( B +1) и т.д. до тех пор, пока сумма Y + A +5 не станет отрицательной. Здесь A , B , C – три последние цифры номера зачетной книжки. Оформить проверку задания.

Указания к решению задачи. Условие задачи предварительно необходимо преобразовать, подставив в него значения цифр A,B,C. Например, пусть А=7, В=8, С=2.Тогда задача будет такова – производить вычисления функции Y=7-(X-2)2/9 до тех пор, пока Y+12 не станет отрицательным для X= 2, 11, 20, 29 и т.д. Как видим, здесь шаг изменения Х равен 9. 

Задание №4. Имеется массив А из N произвольных чисел ( A ( N )), среди которых есть положительные, отрицательные и равные нулю. Используя оператор цикла, составить программу, выполняющую задачу в соответствии с вариантом. Оформить протокол работы программы.

0 Вычислить сумму всех четных положительных чисел.
1 Вычислить количество чисел, квадрат которых меньше 10.
2 Вычислить количество положительных и нулевых и сумму отрицательных.
3 Ответить на вопрос: правда ли, что среди чисел имеются отрицательные (ответ должен быть в виде слов “Да” или “Нет”).
4 Напечатать все числа из очереди, квадрат которых превышает 7, но меньше 50.
5 Вычислить произведение всех положительных чисел, меньших 20.
6 Суммировать числа до тех пор, пока не встретиться число 2. Напечатать получившуюся сумму. Если двойка не встретилась, напечатать текст “Двойки нет”.
7 Суммировать квадраты чисел до тех пор, пока сумма не превысит 40. Напечатать, на котором по счету число это произошло. Если оно не произошло вообще, напечатать текст “Числа слишком малы”.
8 Выяснить, каким по счету в очереди стоит число 3. Если троек несколько, нас интересует только первая из них. Если троек нет совсем, напечатать сообщение “Троек нет”.
9 Подсчитать количество положительных и отрицательных чисел и количество нулей.
10 Найти сумму и количество всех четных положительных элементов.
11 Найти номер последнего отрицательного элемента в последовательности.
12 Напечатать только те числа из массива, которые образуют растущую последовательность.
13 Суммировать числа до достижения значения 15. Напечатать сумму и сделать ее =0. Опять продолжить суммирование до 15. Снова напечатать сумму и т.д. до конца массива. Если сумма оказалась меньше, печатать фразу “Сумма <15”.
14 Напечатать только те числа из массива, которые больше предыдущего числа.
15 Напечатать только те числа из массива, которые образуют убывающие последовательности.
16 Складывать числа до встречи 0. Напечатать сумму. Снова суммировать до 0, напечатать новую сумму и т.д. до конца массива.
17 Найти сумму и количество всех нечетных положительных чисел.
18 Найти максимальное и минимальное числа. Напечатать те элементы массива, которые в массиве находятся между ними.
19 Найти номер последнего положительного элемента в массиве.
20 Найти номера первых двух рядом стоящих одинаковых элементов в массиве.
21 Выяснить, есть ли одинаковые элементы в массиве. Ответ “Да” или “Нет”.
22 Найти максимальный четный элемент в массиве.
23 Найти произведение четных элементов, находящихся в диапазоне от 3 до 13.
24 Найти максимальное и минимальное нечетные числа и их среднее арифметическое.
25 Найти сумму элементов, кратных трем.
26 Напечатать сумму элементов, предшествующих максимальному числу.
27 Найти номер максимального четного элемента в массиве.
28 Напечатать номера элементов, кратных одновременно двум и трем.
29 Напечатать произведение элементов, следующих за минимальным числом.
30 Найти произведение элементов, кратных 5.
31 Напечатать в обратном порядке все положительные элементы.
32 Найти среднее арифметическое максимального и минимального элементов массива.
33 Напечатать индексы отрицательных элементов, их произведение и сумму положительных.
34 Напечатать максимальное число из всех положительных чисел и его местоположение в массиве.
35 Найти, сколько раз встречается максимальное число в массиве.

Задание №5. Составить программу вычисления числового ряда для известного числа членов ряда N . Перед программированием следует выявить и написать необходимые аналитические соотношения. Оформить проверку задания.

0 Y=(7+35/1)(8-3-4/2)(9+33/3)(10-3-2/4)…
1 Y=(2+1/81)-(4-2/27)=(8+4/9)-(16-8/3)+…
2 Y=-(1/2-2/5)+(2/3+4/10)-(3/4-8/15)+(4/5+16/20)-…
3 Y=-(1/2-2/5)+(2/3+4/10)-(3/4-8/15)+(4/5+16/20)-…
4 Y=(2-1/27+4)(22/9-8)(2-3/3+16)(24/1-32)…
5 Y=(8+35/100)-(4+3-4/10)+(2+33/1)-(1+3—2/0,1)+…
6 Y=(3+1-1/81)(5-2+1/27)(7+3-1/9)(9-4+1/3)…
7 Y=(1+2-1/2)(-2+22/3)(3+2-3/4)(-4+24/5)…
8
9 Y=(7+34+1)(8-3-3+2)(9+32+3)(10-3-1+4)…
10 Y=21/(2+16)2-2/(-3+8)24/(4+4)2-8/(-5+2)…
11 Y=-1/(18+2)2/(2-4+4)-3/(32+6)4/(4-1+8)…
12 Y=(1/24+1)(2/23-2)(3/22+4)(4/21-8)…
13 Y=-8/(25-2)4/(24+4)-2/(23-5)1/(22+6)…
14 Y=(7+35/1)(8-3-4/2)(9+33/3)(10-3-2/4)…
15
16 Y=(1+24-8)(2-2-3-4)(4+22-2)(8-2-1-1)…
17 Y=(-1+2-1/81)(3-4+1/27)(-9+8-1/9)(27-16+1/3)…
18 Y=28/(3-16)2-4/(4+8)22/(5-4)2-1/(6+2)…
19 Y=(33-1)(3-2+2)(31-4)(3-0+8)…
20
21 Y=(2-1/2)(22/-5)(2-4/8)(28/11)…
22 Y=
23 Y=(-2+1/80)+(4-2/40)+(-8+3/20)+(-16-4/10)+…
24 Y=(2-4-8+1)(23-4+3)(2-2-2+5)(21-1+7)…
25 Y=(3-1/2)(42/5)(5-3/8)(64/-11)…
26 Y=-(20+1/1)+(18+2/3)-(16-3/5)+(14+4/7)-…
27 Y=(1+25/1)(10+2-4/2)(100+23/3)(1000+2-2/4)…
28 Y=(2/16+8)(2/8-10)(2/4+12)(2/4-14)…
29 Y=-(1/21+1)+(2/22-2)-(4/24+3)+(8/28-4)-…
30 Y=
31 Y=(1+2-1/2)(3+22/3)(5+2-3/4)(7+24/5)…
32 Y=(7+2/2)-(6-3/4)+(5+4/8)-(4-5/16)+…
33 Y=
34 Y=(-1+1/40)+(2-2/30)-(3+3/20)+(4-4/10)-…
35 Y=(-1/18-2)(-1/16+4)(-1/14-6)(-1/12+8)…

Указания к решению задачи. Пусть:

Сначала необходимо выписать все, наблюдаемые в ряду соотношения. Для этого введем переменные. Степень числа обозначим буквой А, знак при ней – Z, знак при числе пять – Z1, второе слагаемое в знаменателе – буквой В, а знак при нем – Z2, т.е.

тогда можем записать (справа показаны начальные значения переменных):

Y=1 Z=-1 A=1 Z1=-1 Z2=1 B=16

Теперь можно приступать к программированию. Однако, здесь возможны упрощения. Переменные Z, Z1, Z2 организуют знакочередование числовых последовательностей. Обратим внимание на то, что Z1 всегда равно Z. Это значит, что Z1 можно заменить на Z. Кроме того, замечаем, что поскольку В образует геометрическую прогрессию, знак можно включить непосредственно в выражение для В, т.е. В=-В/2, удалив переменную Z2. Окончательно запишем

Y=1 Z=-1 A=1 B=16

Алгоритм решения (для заданного числа N):

1. Ввести значение N.

2. Задать исходные значения переменных (Y=1, Z=-1, A=1, B=16).

3. Вычислить очередное значение Y.

4. Вычислить новые A, B, Z.

5. Сделать приращение счетчика циклов (I=I+1).

6. Если I N – возврат к пункту 3, иначе, завершение цикла и печать Y.

7. Программировать можно только с оператором цикла FOR или без него по усмотрению студента.

 

 


ЛИТЕРАТУРА

 

1. Инструментальные средства персональных ЭВМ. Книга 4. под.ред. Б.Г.Трусова, -М.: Высшая школа, 2013.

2. В.Н.Пильщиков. сборник упражнений по языку Паскаль. – М.:Наука, 2009.

3. Задачи по информатике. Издательство “Учитель-АСТ”, Составитель П.Н.Карасев – Волгоград, 2010.

4. В.Е.Алексеев, А.С.Ваулин, Г.Б. Петров. Вычислительная техника и программирование. Практикум по программироавнию.-М.:Высшая школа, 2010.

 

 


Дата добавления: 2018-10-25; просмотров: 385; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!