русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Практическая работа № 8.


Дата добавления: 2014-11-27; просмотров: 2961; Нарушение авторских прав


Тема: Программирование задач циклической структуры (оператор While).

Цель: Разобрать структуры повторения (оператор цикла с предусловием - While).

План занятия:

· обсуждение оператора;

· эксперименты с программами определения количества цифр;

· в числе, преобразования натурального числа n в 1;

· выполнение самостоятельной работы.

Ход работы:

Теоретические сведения:

Оператор Whileимеет вид:

While<логическое выражение> d o<оператор (составной оператор)> ;

Оператор While содержит логическое выражение, значение которого (True-1 или False-0) управляет повторным выполнением оператора (после служебного слова do), им может быть и со­ставной оператор. Значение выражения вычисляется перед вы­полнением оператора. Если результат равен True, то оператор выполняется, при значении False — нет. Таким образом, если в начале логическое выражение имеет значение False, оператор после do вообще не выполняется. В операторе (составном опе­раторе) обязательно изменение значений переменных, влияю­щих на значение логического выражения. При невыполнении этого условия получаем пример того, что называется «зацикли­ванием». Простейший пример — While True do <что-то> — бесконечный цикл.

Экспериментальный раздел работы:

1. Дано натуральное число n. Подсчитать количество цифр дан­ного числа.

Количество цифр в числе n неизвестно, поэтому необходимо использовать оператор While. Использование For потребует или введения дополнительных переменных, или искусственного вы­хода из цикла, а мы договорились, что это плохо — каждый фрагмент нашей логики должен иметь одну точку входа и одну точку выхода. Подсчет количества цифр начнем с последней цифры числа. Увеличим счетчик цифр на единицу (k). Число (m) уменьшим в 10 раз, убирая тем самым из него последнюю цифру (подсчитанную). Далее с получившимся числом проделаем ту же последовательность действий и т. д., пока число не станет равным нулю. Для этого и всех остальных примеров занятия, требуется выполнять ручную «трассировку».



Порядок действий:

1. пусть введено число 65387;

2. присвоим это значение переменной с именем m;

3. значение счетчика числа цифр (k) равно 0. Выполним действия, описан­ные выше.

4. окончатель­ное значение переменной k равно 5, в числе 5 цифр;

5. после это­го работаем с программой Му9_1 по традиционной схеме: набор, компиляция, сохранение, запуск и проверка работы на конк­ретных примерах.

Program My8_l;

Var m, n: LongInt;

k: Integer;{счетчик числа цифр}

Begin

WriteLn (‘ Введите целое число n неравное 0'); ReadLn(n);

m:=n;

k:=0;

While m<>0 do

Begin

Inc(k);{увеличивает значение на единицу}

m:=m Div 10;

End;

WriteLn (‘В числе ' ,n,' ~ ' ,k,' цифр !');

ReadLn;

End.

Модифицируя программу Му9_1, решить следующие задачи:

· найти сумму цифр числа (компьютер №1, 15) ;

· найти первую цифру числа, например для числа 7265 это цифра 7

(компьютер №2, 14);

· поменять порядок цифр числа на обратный. Например,

было 12345, стало 54321(компьютер №3, 13);

1. найти количество четных цифр числа (компьютер №4, 12);

2. найти самую большую цифру числа (компьютер №5, 11);

3. найти сумму цифр числа, больших 5(компьютер №6, 10);

4. ответить на вопрос, сколько раз данная цифра встречается

в числе (компьютер №7,9)?

5. найти самую маленькую цифру в числе (компьютер №8).

Домашнее задание: придумать еще 5 задач (как минимум), решаемых по дан­ной схеме.

2.В программе Му9_2 реализована «гипотеза Сиракуз». Осу­ществляется последовательное преобразование натурально­го числа n в 1. Запустите программу, проверьте ее работу при нескольких значениях n. Результат есть. Мы делаем пред­положение, что при любом значении n работа программы за­вершится, т. е. будет получен результат. Однако это неиз­вестно, доказательства факта завершения работы программы (алгоритма) при любом значении n в настоящее время ни­кем не получено. Проверка циклов типа While требует осо­бо тщательной работы, ибо циклы этого типа «потенциаль­но бесконечны во времени».

Program My8_2;

Var n:Integer;

Begin

WriteLn (‘Введите натуральное число:' );

ReadLn (n);

Write (n);

While n<>1 do

Begin

If n Mod 2=0 Then

n:=n Div 2

Else n:=(3*n+1)Div 2;

Write ( ' - ‘n) ;

End;

ReadLn;

End.

С помощью последовательного запуска программы оцените среднюю длину цепочек чисел при изменении n от 2 до 20. Как избавиться от этой ручной работы по запуску программы? На­блюдая за полученными цепочками чисел нетрудно заметить, что фрагменты этих цепочек часто повторяются. Например, 8=>4=>2=>1, 5=>16=>8=>4=>2=>1. Как использовать этот факт при подсчете средней длины цепочек для чисел (п) из большого ин­тервала, например типа Integer? Потребуется ли в приведенном фрагменте программы что-либо изменять в этом случае?

Задания для самостоятельной работы:

1. Дана последовательность операторов:

a:=1; b:=1;

While a+b<8 do

Begin a:=a+l; b:=b+2

End;

S:=a+b:

Сколько раз выполняется проверка логического выражения в операторе While? Определите значения переменных а, Ь, и s после завершения этой последовательности операторов?

2. Определите значения переменных а и b после выполнения опе­раторов:

a:=1; b:=1;

While a<=3 do a:=a+1; b:=b+1.

3. Определите значение переменной s после выполнения следу­ющих операторов:

s:=0; i:=0; While i<5 do Inc(i); s:=s+100 Div i;

s:=0; i:=1; While i>1 do Begin s:=s+100 Div i;

dec (i) End;

4. Дан фрагмент программы с ошибками (их не больше 5) вы­
числения факториала f числа п:

k:=1; f:=0;

While k<n do f=f*k

k:=k+l;

Найдите эти ошибки.

5. Найдите и исправьте ошибки в следующем фрагменте про­граммы, определяющей для заданного натурального числа n число, записанное цифрами числа n в обратном порядке.

р : = n;

While p>=0 do

Begin

а : =а + р Mod 10;

р : = р Div 10

End;

П р имечание:

Задания № 1-5 рекомендуется выполнять, используя режим руч­ной трассировки.

6. Найти минимальное число, большее 300, которое нацело де­лится на 19.

7. Приписать по 1 в начало и в конец записи числа n. Напри­мер, было n=3456, стало n=134561.

8. Поменять местами первую и последнюю цифры числа. Напри­мер, из числа 8547 должно быть получено число 7548.

9. Приписать к исходному числу n такое же число. Например,
из числа 1903 должно быть получено число 19031903.

10. Определить, является ли заданное число степенью 3.

11. Составить программу, проверяющую, является ли заданное
натуральное число палиндромом, то есть таким, десятичная
запись которого читается одинаково слева направо и справа
налево.

Примечание:

Задача отличается от ранее рассмотренной тем, что количество цифр в числе неизвестно, а из этого следует, что тип используемо­го цикла должен быть другой.

12. Выяснить, является ли последовательность цифр натураль­ного числа при просмотре их справа налево возрастающей последовательностью. Например, для числа 76431 ответ положительный, для чисел 6331, 9782 — отрицательный.

13. Вводится последовательность целых ненулевых чисел, при­знак окончания ввода — ввод 0. Количество чисел не меньше 2. Выяснить:

· является ли последовательность возрастающей;

· есть ли в ней хотя бы одна пара одинаковых «соседних» чисел; является ли последовательность знакочередующейся (3,

-2, 4, -5, 0 — «да»; 5, -4, -7, 8, 0 — «нет»).

14. Выяснить, сколько раз в натуральном числе встречается его
максимальная цифра. Например, в числе 581088 — 3 раза, в
числе 4537 — 1 раз.

15. Выяснить, является ли разность максимальной и минималь­ной цифр числа четной.

Контрольные вопросы:

1. Как называются программы, в основе которых лежит структура повторения?

2. Каков тип выражения в операторе цикла с предусловием?

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

4. Когда проверяется истинность выражения в операторе WHILE?

5. Верно ли, что истинность выражения в цикле с предусловием является условием продолжения цикла?

6. Сколько раз выполнится оператор в теле цикл WHILE а, если с самого начала значение выражения равно false?

7. Верно ли, что цикл WHILE используется при вычислении всякого рода сумм и произведений, когда заранее не известно число повторений?

 



<== предыдущая лекция | следующая лекция ==>
Экспериментальный раздел работы | Практическая работа № 9.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.