Действия со строками в Паскале



Операция слияния (сцепления, конкатенации) применяется для соединения нескольких строк в одну, обозначается знаком «+». Операция слияния применима для любых строковых выражений, как констант, так и переменных.

Операции отношения позволяют сравнивать строки на отношение равенства (=), неравенства (<>), больше (>), меньше (<), больше или равно (>=), меньше или равно (<=). В результате сравнения двух строк получается логическое значение (true или false). Сравнение строк производится слева направо посимвольно до первого несовпадающего символа, большей считается та строка, в которой первый несовпадающий символ имеет больший код в таблице кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что короткая строка меньше. Строки равны, если они имеют равную длину и соответствующие символы совпадают.

Билет №7

1. Двумерные массивы.

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

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

Рассмотрим двумерный массив Паскаля размерностью 3*3, то есть в ней будет три строки, а в каждой строке по три элемента:

Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел – номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца. Например, a 21 – это элемент, стоящий во второй строке и в первом столбце.

 

2. Циклы с параметром в Паскале.

Такой оператор используется, когда число повторений цикла определено. Кроме того, циклы с параметром позволяют задать автоматически изменение управляющей переменной (параметра) и использование ее в операторах тела цикла.

FOR переменная:=начальное значение TO конечное значение DO <оператор> DOWNTO

Переменная - параметр цикла:

1. Должна использоваться простая переменная, описанная в блоке;

2. Тип переменной - любой дискретный;

3. Начальное значение и конечное значение должно иметь тип совместимый с типом параметра;

4. В теле цикла запрещается явно (:=) изменять значение параметра;

Оператор выполняется следующим образом:

1. Проверяется переменная <= конечное значение (при TО) или переменная >= конечное значение (DOWNTO)

2. Если условия выполняется, то выполняются операторы тела цикла.

3. При использовании ТО, значение параметра увеличивается на единицу, при исполнении DOWNTO уменьшается на единицу.

Если при проверке переменная <= конечное значение (при TО)

переменная >= конечное значение (DOWNTO)

заданные условия не выполняются, т.е. оператор FOR заканчивает свою работу.

Оператор FOR не выполнится ни разу, если:

1. При исполнении ТО начальное значение> конечное значение.

2. При исполнении DOWNТО начальное значение< конечное значение.

Билет №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;

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

Строковый тип данных определяет множество символьных цепочек произвольной длины (от нуля символов до заданного их числа). Для определения строкового типа используется служебное слово 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

 

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

Билет №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;

 

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

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

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

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

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

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

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

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

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

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

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

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


Дата добавления: 2020-12-12; просмотров: 121; Мы поможем в написании вашей работы!

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






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