- •Лабораторная работа № 1 Цель работы
- •Теоретическая часть
- •Варианты заданий
- •Лабораторная работа № 2 Цель работы
- •Теоретическая часть
- •Варианты заданий
- •Лабораторная работа № 3 Цель работы
- •Теоретическая часть
- •Варианты заданий
- •Лабораторная работа № 4 Цель работы
- •Теоретическая часть
- •Варианты заданий
- •Содержание и оформление отчета
- •Литература
- •Паскаль: операторы ветвления, циклы, массивы, строки
Варианты заданий
|
Вычислить сумму элементов на побочной диагонали двумерного массива. |
|
Вычислить сумму элементов, находящихся выше главной диагонали двумерного массива. |
|
В одномерном массиве поменять местами максимальный и минимальный элементы. |
|
В двумерном массиве поменять местами столбцы с максимальным и минимальным элементами. |
|
В двумерном массиве поменять местами строки с максимальным и минимальным элементами. |
|
Упорядочить элементы массива по возрастанию. |
|
Подсчитать количество пар одинаковых соседних элементов в одномерном массиве. |
|
Инверсировать одномерный массив (расположить его элементы в обратном порядке). |
|
В двумерном массиве (NxN) произвести зеркальную перемену элементов относительно главной диагонали. |
|
В двумерном массиве (NxN) произвести зеркальное отражение относительно горизонтальной оси симметрии. |
|
В двумерном массиве (NxN) произвести зеркальное отражение относительно вертикальной оси симметрии. |
|
В двумерном массиве (NxN) произвести зеркальное отражение относительно побочной диагонали. |
|
Определить, сколько раз один одномерный массив встречается в другом. |
|
Повернуть двумерный массив на 90о по часовой стрелке. |
|
Повернуть двумерный массив на 90о против часовой стрелки. |
|
В двумерном массиве (NxM) найти и вывести максимальные элементы по столбцам с указанием значения и местоположения. |
|
В двумерном массиве (NxM) найти и вывести максимальные элементы по строкам с указанием значения и местоположения |
|
Перемножить 2 матрицы (NxM) по правилам матричного произведения. |
Требования к оформлению отчета приведены в разделе "Содержание и оформление отчета".
Лабораторная работа № 4 Цель работы
Изучение работы со строковыми переменными.
Теоретическая часть
Стандартный тип строка (string) – последовательность символов длиной до 255 символов. Строку можно рассматривать как массив символов.
У строки в квадратных скобках может быть указан ее размер (от 1 до 255). Если размер строки не указан, то он считается равным 255.
Пример 13: описание строковых переменных
var Str : String[80]; MaxStr : String; const January : String[10]='Январь'; |
Конкатенация строк
Данная операция объединяет (или добавляет к первой строке вторую).
Пример 14:
var Str, Str1, Str2 : String; begin Str1 := 'Turbo'; Str2 := 'Pascal'; Str := Str1 + Str2; end; |
Результатом работы программы примера 14 будет значение переменной Str='TurboPascal'.
Сравнение строк
Можно сравнивать строки разной длины. Сравнение осуществляется слева направо в соответствии с ASCII-кодами символов. Отсутствующие символы в короткой строке имеют меньший код, чем любой действительный символ.
Пример 15:
const Str1 : string='X'; Str2 : string='XS'; var S1, S2 : String; begin if Str1 > Str2 then writeln('Str1>Str2') else writeln('Str1<=Str2'); S1 := '10'; S2 := '9'; if S1 > S2 then Writeln('S1>S2') else Writeln('S1<=S2'); end. |
Результатом работы программы в примере 15 являются сообщения Str1<=Str2 и S1<=S2.
Следует отметить, что результаты сравнения чисел как строковых переменных отличаются от обычного сравнения чисел, например, '10'<'9', так как первый символ строки '10' имеет меньший код, чем первый символ строки '9'.
Функции, применяемые при работе со строками (модуль System)
Функция |
Описание |
Length(S : String) : Integer |
возвращает длину строки |
Copy(S : String; iStart : Integer; iLen : Integer) : String |
выделение подстроки в строке S, начиная с позиции iStart длиной iLen |
Concat(S1 [, S2, …, Sn] : String) : String |
объединение n строк в одну |
Pos(SubStr, S : String) |
поиск подстроки SubStr в строке S. Возвращает 0, если вхождение не найдено |
|
|
Процедуры, применяемые при работе со строками (модуль System)
Процедура |
Описание |
Delete(var S : String; Index : Integer; Count : Integer) |
удаление подстроки длиной Count, начиная с Index из строки S |
Insert(Source : String; var S : String; Index : Integer) |
помещение подстроки Source в строку S, начиная с позиции Index |
Str(X [:M[:N]]; var S : String) |
преобразование числа X в строковую переменную S; M, N – форматы вывода, аналогичные используемым в процедуре Write |
Val(S : String; var V; var ErrCode : Integer) |
преобразование символьного представления числа S в двоичное V. Code – номер неправильного символа (0 – успешное преобразование). |
Фактически строка N символов представляет собой массив из N+1 символов:
String[N]=array [0..N] of Char;
Однако данная запись условна и строка не эквивалентна такому массиву.
Нулевой символ хранит действительно используемое количество символов строки.
Пример 16:
var S, S1 : String; I, ErrCode : Integer; begin S := 'Привет мир'; writeln(copy(S,8,3)); {удалим пробелы} S1 := ''; for I := 1 to length(S) do if S[i] <> ' ' then S1 := S1 + S[i]; S := S1; writeln(S); {заменим "и" на "а"} for I := 1 to length(S) do if S[i] = 'и ' then S[i] := 'а'; writeln(S); Str(1/3:4:2, S); writeln(S); S := '4.6'; Val(S, I, ErrCode); if ErrCode <> 0 then writeln('Успешная конвертация, I=',I) else writeln('Ошибка конвертации!'); end.
|
Программа в примере 16 сначала выводит строку 'мир', затем удаляет из строки S пробелы и выводит строку 'Приветмир', затем заменяет символы 'и' на 'а' и выводит строку 'Праветмар'. Далее конвертирует число 1/3 в строку '0.33'. Затем конвертирует строку '4.6' в число и выводит на экран "Успешная конвертация, I=4.6".