- •Лабораторная работа 1. Реализация линейных алгоритмов
- •Вариант 1
- •1. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное.
- •Вариант 2
- •1. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.
- •Вариант 3
- •1. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой.
- •Вариант 4
- •1. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга.
- •Лабораторная работа 2. Условный оператор
- •Лабораторная работа 3. Оператор варианта.
- •Лабораторная работа 4. Строки. Операторы цикла.
- •Программирование численных циклических алгоритмов. Циклы «до» и «пока»
- •Лабораторная работа 5. Подпрограммы
- •Лабораторная работа 6. Массивы
- •Лабораторная работа 7. Множества
- •Лабораторная работа 8. Комбинированный тип данных (Запись)
- •Лабораторная работа 9. Работа с файлами
- •Лабораторная работа 10. Процедуры и функции модуля GraphABC
- •Графические примитивы
- •Подпрограммы для работы с пером
- •Лабораторная работа 11. Создание собственных модулей.
- •Лабораторная работа 12. Решение простейших задач в Console Application
- •Лабораторная работа 13. Динамические массивы
- •Лабораторная работа 14. Тип данных Variant
- •Лабораторная работа 15. Тип TDateTime
- •Лабораторная работа 16. Простейшие задачи на форме
- •Лабораторная работа 17. Флажки и переключатели
- •Лабораторная работа 18. Работа с меню
- •Главное меню
- •КОНТЕКСТНОЕ МЕНЮ
- •Лабораторная работа 19. Работа со списками
- •СПИСКИ ВЫБОРА
- •ВЫПАДАЮЩИЕ СПИСКИ
- •Лабораторная работа 20. Таймер. Работа с календарем
- •Лабораторная работа 21. Таблица строк
- •Лабораторная работа 22. Графика в Delphi
- •Лабораторная работа 23. Калькулятор
- •Лабораторная работа 24. Моделирование движения. Пуля
- •Лабораторная работа 25. Моделирование движения по кругу
- •Лабораторная работа 26. Цветомузыка
- •Лабораторная работа 27. Проигрыватель
- •Лабораторная работа 28. Цветочная поляна
- •Лабораторная работа 29. QUEST
- •Лабораторная работа 30. Тир
- •Лабораторная работа 31. Компоненты Delphi для взаимодействия с серверами автоматизации MS Office
- •Лабораторная работа 32. Обмен данными между программами с помощью DDE
- •Лабораторная работа 33. Технология Drag & Drop
- •Лабораторная работа 34. Использование динамически подключаемых библиотек (DLL).
- •Лабораторная работа 35. Создание собственного класса
- •Лабораторная работа 36. Конструкторы и деструкторы
- •Лабораторная работа 37. Создание собственных компонентов
Вариант 3.
1.Даны a, b и c из интервала [-12,12], генерируемые случайным образом. Найти количество чисел кратных 5.
2.Дана строка s. Найти количество вхождений в нее букв a, b, c.
3.Дан двумерный массив произвольной размерности. Найти сумму элементов его главной диагонали.
Вариант 4.
1.Даны a, b и c из интервала [-10,10], генерируемые случайным образом. Найти сумму четных элементов.
2.Дана строка s. Заменить все цифры знаком *, а буквы — знаком +.
3.Дан линейный массив произвольной размерности. Найти среднее арифметическое его положительных элементов. Заменить положительные элементы на среднее арифметическое.
Лабораторная работа 13. Динамические массивы
В динамических массивах не указывается размерность в описании:
Например,
var a: array of integer;
aa: array of array of real;
Размерность устанавливается в теле программы:
SetLength(a, 10); //длинна массива а – 10 элементов.
SetLength(aa, 10, 10); //размерность матрицы 10 х 10.
Проход по массиву осуществляется от первого (нулевого) до последнего элемента:
for i := Low(a) to High(a) do //здесь i — перечислимого типа
Рассмотрим пример решения задачи: найти сумму элементов массива с нечетными индексами. Размерность вводится с клавиатуры. Массив генерируется случайным образом; элементы лежат в диапазоне -10 .. 10.
Опишем переменные:
Var sum, i, len: integer;
a: array of integer; begin
write(’Введите размерность массива’);
© ИМПИ ОГПУ
Readln(len);
SetLength(a, len);
randomize;
for i := low(a) to high(a) do begin
a[i] := random(21)-10;
Write(a[i]:5); end;
Writeln;
//Найдем сумму элементов массива с нечетными индексами for i := low(a) to high(a) do
if (i mod 2<>0) then sum := sum + a[i];
Writeln(’сумма=’,sum:8)
End.
Задания для самостоятельной работы
Вариант 1
1.Заполнить массив числами, введенными с клавиатуры. Вывести его элементы в обратном порядке.
2.Дан целочисленный массив. Преобразовать его, прибавив к четным числам первый элемент. Первый и последний элементы массива не изменять.
3.Дана матрица. Найти сумму и произведение элементов k-го столбца данной матрицы.
Вариант 2.
1.Заполнить массив случайными числами. Поменять местами минимальный и максимальный элементы массива.
2.Заменить все положительные элементы целочисленного массива на значение среднего арифметического эго элементов.
3.Дана матрица. Найти минимальное значение в каждой строке.
Вариант 3.
1.Дан линейный массив. Отсортировать его по убыванию.
2.Дан целочисленный массив. Преобразовать его, прибавив к нечетным числам последний элемент. Первый и последний элементы массива не изменять.
3.Дана матрица. Найти сумму положительных элементов, стоящих на главной и побочной диагоналях.
Вариант 4.
1.Заполнить массив случайными числами. Поменять местами первый и максимальный элементы массива.
©ИМПИ ОГПУ
2.Заменить все отрицательные элементы целочисленного массива на значение минимального элемента.
3.Дана матрица. Найти минимальное значение в каждом столбце.
Лабораторная работа 14. Тип данных Variant
Переменная типа Variant может принимать любое значение, кроме следующих: записи, статические массивы, файлы, классы, указатели и значения Int64.
Когда на этапе проектирования программы мы не можем четко определить тип данных определенной переменной, можно воспользоваться типом Variant.
Var V: Variant; begin
V := 5; V := ’text’; V := true; V := 3.6; end.
Хотя данный тип данных может показаться очень удобным, нужно использовать его только тогда, когда это действительно необходимо. Приложения с типом Variant отлаживать достаточно сложно, и если попытаться сложить переменные
данного типа, содержащие число и строку, можно получить не тот результат, который ожидали.
Например: |
V2, V3: Variant; |
|
Var |
V1, |
|
begin |
’1’; V2 := ’5’; V3 := 10; |
|
V1 |
:= |
|
V1 |
:= |
V1+V2+V3; // ответ 15+10 = 25 |
end; |
|
|
Тип значения переменной типа вариант можно узнавать с помощью функции VarType (V: Variant): Word; Она возвращает значение из набора констант.
Например, константа VarInteger означает целое число.
Возможные |
|
значения |
Обозначение |
функции: |
Вариант пустой |
varEmpty |
|
VarSmallint |
Smallint |
varInteger |
Integer |
varSingle |
Single |
varDouble |
Double |
varCurrency |
Currency |
varDate |
TDateTime |
varOLEStr |
WideString |
varError |
Код ошибки |
© ИМПИ ОГПУ
varBoolean |
Boolean |
varUnknown |
Неизвестный объект |
varByte |
Byte |
varString |
AnsiString |
Для преобразования типов используется функция VarAsType (Const V: Variant, type: integer): Variant; Например:
V := 23; V := VarAsType (V, VarString);
Для того чтобы вывести на экран значение переменой типа вариант ее нужно преобразовать в строку с помощью функции
VarToStr (V:Variant): String;
Задания для самостоятельной работы
По введенной переменной типа Variant выводить сообщение о том, принадлежит ли она типу Byte или Single.
Лабораторная работа 15. Тип TDateTime
Переменная типа TDateTime представляет собой действительное число. Его
целая часть соответствует дате и содержит количество дней, прошедших с 30 декабря 1899 года, дробная часть соответствует времени и равна части суток, прошедшей с момента их начала.
Для обработки даты и времени модуль SysUtils содержит следующие основные функции:
∙function Date: TDataTime; Возвращает текущую дату как значение типа TDateTime.
∙ |
function |
DateToStr(Date: |
TDateTime): |
string; |
|
Преобразовывает дату, указанную параметром Date, в строку в |
|||
|
соответствии с форматом, определяемым глобальной переменной |
|||
|
ShortDateFormat. |
TDateTime): |
Integer; |
|
∙ |
function |
DayOfWeek(Date: |
||
|
Возвращает номер дня недели для даты, указанной параметром Date. Для |
|||
|
воскресенья возвращается значение 1, для понедельника — 2 и т. д. |
∙function EncodeDate(Year, Month, Day: Word): TDateTime; Собирает значение даты из заданных составляющих Year, Month и Day и возвращает его, как значение типа TDateTime.
∙function IncMonth(const Date: TDafeTime; NumberOfMonths: Integer): TDateTime; Возвращает значение даты, увеличенное на указанное параметром NumberOf-Months количество месяцев.
©ИМПИ ОГПУ