Лабораторная
  • формат image, txt
  • размер 173,64 КБ
  • добавлен 10 апреля 2014 г.
Массивы, Матрицы, Структуры, Записи, Строки, Файлы, Графика (АЯП, МАИ, Комета)
Материалы к семинарам по курсу «Алгоритмические языки программирования» (АЯП). Преподаются на основе изучения языка Pascal.
2013г. КО-101С, кафедра 806, МАИ, «Комета».
Тестирование проводилось для Free Pascal. Некоторые конструкции могут не работать для PascalABC или Turbo Pascal. Все файлы в кодировке UTF8; для работы рекомендуется ОС Linux \ Mac OS.
Преподаватели: Лукин В.Н & Никитин И.К.
Некоторые из этих работ можно найти по ссылке: Pascal commet workshops
Вводный семинар по Pascal.
Посвящен обзору простейших средств языка на примере вычисления чисел Фибоначчи и инвертировании целого числа. В исходных файлах приведен пример документирования кода.
Массивы
Посвящен работе с массивами и логическим типом.Подсчет максимального количества подряд стоящих элементов логического массива, имеющих значение true. Приведены три версии программы.
Матрицы
Работа с матрицами. Умножение матриц.
Считывает со стандартного ввода 2 матрицы. Строки матриц отделены переводом строки, числа в строке пробелами. Выводит на стандартный вывод произведение этих двух матриц в таком же формате.
При запуске программы на вход (со стандартного ввода) подается матрицы:
каждая строка отделена переводом стоки;
число в одной строке отделены пробелами;
в текущей реализации матрицы используются квадратные;
размерность матрицы определяется константой MAXRANGE;
после умножения результат подается на стандартный вывод:
каждая строка отделена переводом стоки,
число в одной строке отделены пробелами.
$ ./ws03_matrix_1
1 2
3 4
1 2
3 4
7 10
15 22
Структуры
Работа со структурами (записями). Умножения матриц произвольной размерности.
Линеаризации матриц по диагоналям (jpeg).
Считывает со стандартного ввода 2 матрицы. Сначала считывает размерность матриц. Отроки матриц отделены переводом строки, числа в строке пробелами. Выводит на стандартный вывод произведение этих двух матриц в таком же формате. Если невозможно вычислить произведение матриц, то выводится соответствующая ошибка.
$ ./ws04_multmatrix
2 2 -{пометка: размерность}
1 2 -{пометка: сама матрица}
3 4
2 2 -{пометка: размерность}
1 2 -{пометка: сама матрица}
3 4
7 10
15 22
$ ./ws04_multmatrix
1 2 -{пометка: размерность}
1 2 -{пометка: сама матрица}
2 1 -{пометка: размерность}
1 -{пометка: сама матрица}
2
5
$ ./ws04_multmatrix
1 2 -{пометка: размерность, несовместимы}
1 2 -{пометка: сама матрица}
1 2 -{пометка: размерность, несовместимы}
1 2 -{пометка: сама матрица}
ERROR: A.ncolumns =/= B.nrows !
$
Линеаризация по диагоналям (упрощенная)
Линеаризация матриц проходом по диагоналям с юго-запада на северо-восток. Метод линеаризации, похожий на данный используется в сжатии изображений. Его суть в том, чтобы близкие в двумерном пространстве пиксели оказались близки друг другу после линеаризации. При обычном слиянии строк матрицы,s это не возможно. В данном случае приводится упрощенный вариант линеаризации. На самом деле, такая хитрая линеаризация используется, немного по иной причине. Интересует близость, только северо-западного угла, и работа происходит на с пикселями, а со спектральным представлением изображения. Для простоты, такие детали пока будем игнорировать. В решении задачи они роли не играют.
$ ./ws04_jpeg_lin_simple
3 3 -{пометка: размерность}
1 2 3 -{пометка: сама матрица}
4 5 6
7 8 9
1 4 2 7 5 3 8 6 9 -{пометка: линеаризованное представление
Строки
Работа со строками на примере поиска лишних закрывающихся скобок.
Поиск лишних закрывающихся скобок. Решение через строку и через цикл по символам до конца файла.
Рассмотрены на примерах: конкатенация (сложение, concat); поиск подстроки (pos); удаление (delete); вставка (insert); преобразование к числу (val); форматный вывод чисел и строк (writeln).
Файлы
Работа с файлами.
Чтение из файла, запись в файл.
Операции с файлом: удаление, переименование.
Разбиение файла на строки по заданной ширине.
Поиск лишних закрывающихся скобок, решение через цикл по символам до конца файла.
Графика, Динамические картинки.

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