Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БИЛЕТЫ по Алгоритмизации_отв.doc
Скачиваний:
1
Добавлен:
30.08.2019
Размер:
329.22 Кб
Скачать

Билет №8

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

В первой разновидности цикла условие проверяется перед выполнением тела цикла. Поэтому данное условие правильно будет назвать условием продолжение цикла. Цикл такого вида называется циклом с предусловием.

Ц икл будет повторяться до тех пор, пока проверка этого условия будет давать результат «истина» (true), то есть пока условие выполняется. Если условие сразу оказывается ложным, цикл не будет выполнен ни разу.

Блок схема цикла с предусловием

Синтаксическая диаграмма оператора:

While <условие> do <оператор>

Этот оператор задает повторяющиеся выполнение оператора, содержащегося в нем, пока «истинно» условие.

<условие> - любое выражение логического типа.

<оператор> - любой оператор языка ТР.

Перед каждым выполнением внутреннего оператора, происходит проверка значения <условия>. Если его значение равно true, то оператор выполняется; если значение = false, то выполнение оператора не произойдет, оператор WHILE закончит свою работу. Если условие с самого начала имеет значение false, то цикл не будет выполнен ни разу.

1) While m[i] <>0 do i:=i + 1;

2) While x<=n do begin

Y:=Y*X;

X:=X+1;

End;

  1. Строковый тип данных в Паскале.

Строковый тип данных определяет множество символьных цепочек произвольной длины (от нуля символов до заданного их числа). Для определения строкового типа используется служебное слово string, вслед за которым в квадратных скобках указывается максимальная длина строки.

Type

Line: string [120]

Var

ML: Line;

В приведенном примере переменная ML в качестве своего значения может иметь любую последовательность символов произвольной длины в пределах от 0 до 120.

В определении строкового типа максимальная длина строки может быть задана целым числом или константой целого типа. Указание максимальной длины может быть опущено, в этом случае считается, что максимальная длина равна 255, - эта длина является максимально возможной для строкового типа.

Таким образом, важнейшие отличие строк от символьных массивов в том, что строки могут изменять свою длину.

Для строк определена операция конкатенации "+":

ML := 'Строка';

ML := ML + 'символов';

Над значениями строковых типов определены операции сравнения:

<, <=, >, >=, = , <>

При их выполнении действуют следующие правила:

1. операция выполняется над строками посимвольно, слева направо с учетом внутренней кодировки символов

2. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значениями CHR(0).

Все остальные действия над строками реализуются с помощью встроенных процедур и функций.

1. СONCAT (S1[,S2,…,SN]) - результат функции имеет тип string. Функция выполняет слияние строк - параметров S1, S2,…SN.

2. COPY (ST, INDEX, COUNT) - функции типа string. ST - тип string. INDEX, COUNT : integer. Функция возвращает подстроку, выделенную из исходной строки ST.

3. DELETE (ST, INDEX, COUNT) - процедура. Удаляет COUNT символов из строки ST, начиная с символа с номером INDEX.

4. INSERT (SUBST, ST, INDEX) - процедура. Вставляет строку SUBST в строку ST, начиная с символа с номером INDEX.

5. LENGTH(ST) - функция типа INTEGER. Возвращает текущую длину строки - параметра.

6. POS (SUBST, ST) - функция типа INTEGER. Отыскивает в строке ST первое вхождение подстроки SUBST и возвращает номер позиции.

7. STR(X[:WIDTH[:DECIMALS]],ST) -процедура. Преобразует число X любого вещественного или целого типов в строку символов ST.

8. VAL (ST, X, CODE) - процедура. Преобразует строку символов ST во внутреннем представлении целой или вещественной переменной Х, которое определяется типом этой переменной.

Билет №9

  1. Работа программы с оператором FOR.

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

Порядок выполнения цикла FOR

  1. Управляющие конструкции в Паскале.

Билет №10

  1. Генератор случайных чисел.

  2. Процедура Randomize Эта процедура инициализирует (проще говоря запускает) генератор случайных чисел. Надо также заметить, что генератор случайных чисел может быть инициализирован не только с помощью обращения к Randomize, но и с помощью присвоения переменной RandSeed (об этом поговорим ниже). Без инициирования генератора случайных чисел обращения к соответствующим функциям выбора случайного числа всегда будут давать один и тот же результат. Получение случайного числа Для того, чтобы получить случайное число нужно воспользоваться функцией Random. Вот ее заголовок: function Random [ ( Range: Integer) ];  Если обращаться к функции без параметров, то она вернет значение типа Real в диапазоне:  0 <= X < 1  А если в качестве параметра указано целое число k, то функция вернет целочисленное значение в диапазоне:  0 <= X < k,  или, для наглядности, можно записать так:  0 <= X <= k-1  Важно что реализация функции Random может меняться в зависимости от версии компилятора, поэтому не рекомендуется использовать эту функцию, например, в шифровании.  Пример использования функции Random.  Вы легко можете собрать небольшой тир, используя таймер и картинку Image, ну и конечно же генератор случайных чисел.  Поставим на форму таймер Timer1 и картинку Image1 (не забудьте загрузить в нее изображение) и напишем обработчик события OnTimer 

  3. procedure TForm1.Timer1Timer(Sender: TObject);

  4. begin

  5. Randomize; //запускаем генератор случайных чисел

  6. Image1.left:=Random(Form1.width);

  7. Image1.top:=Random(Form1.height);

  8. end;

  9. Мы просто каждый раз меняем случайным образом координаты изображения, которое начинает двигаться по форме беспорядочно. Хотя здесь было бы логичнее Randomize вызвать один раз при загрузке формы.  Теперь сделаем реакцию на попадание в картинку. Естественно это событие OnClick для картинки:  procedure TForm1.Image1Click(Sender: TObject);  begin  Timer1.Enabled:=false; //остановим таймер  Showmessage('Попадание в цель!'); Timer1.Enabled:=true; //запустим его обратно end;  Здесь можно было бы вести учет очков, уменьшение линии жизни картинки и еще какие-нибудь игровые финты. Увеличить скорость игры можно просто уменьшив свойство Interval таймера  Вот и готова простая игра.  Заполним массив с помощью Random  Randomize; //заполним массив for i:= 1 to 10 do a:=Random(10); //Выведем массив на канву формы for i:= 1 to 10 do Canvas.TextOut(10+10*i,10,IntToStr(a));  Массив в любом случае будет содержать неотрицательные элементы, чтобы заполнить массив еще и неотрицательными элементами надо написать так:  for i:= 1 to 10 do a:=Random(20)-10;  Таким образом диапазон значений массива будет (-10 .. 9)  Получение случайного числа с помощью RandSeed  Запустить генератор случайных можно получить и без вызова процедуры Randomize. Это делается с помощью переменной RandSeed. Вот пример, демонстрирующий это: 

  10. procedure TForm1.Button1Click(Sender: TObject);

  11. var RandSeed: LongInt;

  12. begin

  13. RandSeed:=random(10);

  14. ShowMessage(IntToStr(RandSeed));

  15. end;

  1. Этапы решения задач на ЭВМ.

Для решения задачи на ЭВМ составляется алгоритм, обеспечивающий выполнение всех необходимых действий для получения искомых результатов. Этот алгоритм описывается средствами формального языка, понятного ЭВМ - языка программирования.

К таким средствам относятся элементы языка - символы, цифры, специальные знаки, а также правила составления операторов для описания действий по вводу - выводу и распределению памяти, управлению ветвлением и организацией циклов, обращениям к внешним устройствам, контролю и отладке отдельных фрагментов и программы в целом, формированию выходных документов и так далее.

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

Вне зависимости от того, на каком алгоритмическом языке создается программа, этапы подготовки и решения задач на ЭВМ выглядят следующим образом:

1. Этап. Постановка задачи: подробная формулировка задачи, выбор метода решения.

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

2. Этап. Алгоритмизация задачи: формулировка и составление алгоритма.

На этом этапе разрабатывается алгоритм решения в виде блок - схем. Для сложной задачи составляется обобщенный алгоритм решения и частные алгоритмы реализации выделенных процедур обработки данных.

Степень детализации описания алгоритма ориентирована на язык программирования, чтобы символы - блоки алгоритма достаточно просто реализовывались средствами выбранного языка.

3. Этап. Составление программы.

Программа - это представление алгоритма средствами языка программирования: замена блока на один или несколько операторов языка.

4. Этап. Перенос программы на машинный носитель.

Для этого используют клавиатуру дисплея или устройство подготовки данных на мл или мд.

На этом этапе происходит первоначальная трансляция программы и её редактирование - исключение синтаксических ошибок.

5. Этап. Отладка программы.

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

6. Этап. Анализ результатов решения.

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