Оглавление
Оглавление 1
ЛАБОРАТОРНАЯ РАБОТА 1 1
Создание простого консольного приложения Delphi 1
1.Требования по выполнению лабораторной работы 1
Контрольные вопросы 6
2. Теоретический материал 6
Структура консольного приложения 6
Идентификаторы 7
Определение переменных 7
Организация стандартного ввода-вывода 8
ЛАБОРАТОРНАЯ РАБОТА 1
Создание простого консольного приложения Delphi
-
Требования по выполнению лабораторной работы
Требуется выполнить пять заданий. Для каждого задания разработан отдельный сценарий.
Задание 1. Настройка среды для выполнения лабораторных работ.
-
Загрузите компьютер. В окне приглашения Windows введите в логин и пароль вашей группы и указанные преподавателем.
-
Создайте на диске папку, указав в качестве имени вашу фамилию на русском языке.
-
Создайте в своей папке три папки: EXAMPL, ЛАБ1, Convertor.
-
Запустите Delphi через меню Все программы.
Задание 2. Создание, отладка и выполнение простой программы в среде Delphi.
Разработать программу, демонстрирующую различие кодировок ASCII и ANSI.
-
Создайте новое консольное приложение. Для этого выполните действия: File->New->Other->Console Application.
-
Сохраните программу, которая отображается в окне, в папке EXAMPL, и дайте ей имя exampl1. Для этого выполните File->Save All->Диск Z, откройте папку EXAMPL. Щелкните по кнопке Сохранить.
-
Включите в раздел операторов (Begin…..end.) следующие операторы:
Writeln (Редактор готовит русский текст в коде ANSI (страница Windows 1251), а при выполнении программы в консольном режиме он отобразиться он в коде ASCI I страница 866);
Readln // ожидание нажатия клавиши Enter
-
Выполните компиляцию программы Project->Compile .
-
Убедитесь, что выполнимый файл (с расширением exe) создан. Для этого откройте папку EXAMPL.
-
Запустите программу на выполнение Run->exampl1.exe (или щелкните по кнопке Запуск панели инструментов или F9).
-
Ответьте на следующий вопрос. Почему нельзя прочитать текст?
Задание 3. Создание функции преобразования выводимого на монитор русского текста из кодировки Windows в кодировку DOS с именем RUS.
Добавить в код созданного проекта функцию с именем RUS, которая позволит представлять выводимый на монитор текст в кодировке DOS(ASCII).
-
Перед разделом операторов (перед Begin) введите текст функции RUS, которая будет преобразовывать текст из кодировки ANSI 1251 в кодировку ASCII:
function RUS(s:string):string; //заголовок функции
var i:longint;
begin
for i:=1 to length(s) do
begin
if ord(s[i]) in [192..239] then s[i]:=chr(ord(s[i])-64);
if ord(s[i]) in [240..255] then s[i]:=chr(ord(s[i])-16);
end;
RUS:=s
end;
-
Примените функцию RUS для преобразования выводимого текста. Для этого внесите изменения в оператор вывода.
Writeln (RUS( Редактор готовит текст в коде 1251, а отобразиться он в коде ASCI I ));
-
Выполните программу и оцените результат.
Задание 4. Создание модуля Unit и его использование
Примечание. Модуль Unit позволит подключать функцию преобразования к любому проекту ваших лабораторных работ.
-
Создайте модуль unit и включите в него функцию RUS, для этого:
-
выполните команду File->New ->Unit
-
переместите текст функции RUS из программы (доступ к программе через закладку) в модуль и вставьте его в выполнимую часть модуля (после слова implementation)
-
скопируйте заголовок функции в интерфейсную часть модуля (после слова interface).
Содержание модуля
unit unit1;
interface //интерфейсная часть
function RUS(s:string):string;
implementation //выполнимая часть
function RUS(s:string):string;
var i:longint;
begin
for i:=1 to length(s) do
begin
if ord(s[i]) in [192..239] then s[i]:=chr(ord(s[i])-64);
if ord(s[i]) in [240..255] then s[i]:=chr(ord(s[i])-16);
end;
RUS:=s
end;
end.
-
сохраните модуль под именем convertor в вашей папке в папке Convertor.
-
Откройте код вашей программы, щелкнув по закладке проекта. Найдите строку с подключенным модулем. Проверьте путь к файлу.
-
Выполните программу. Убедитесь, что программа работает правильно.
-
Сохраните проект, щелкнув по кнопке Save панели инструментов.
Задание 5. Разработка программы по организации стандартного ввода-вывода средствами Delphi.
Разработать программу, которая позволит:
-
ввести целые числа в переменные типа byte, integer, int64 и вещественные числа в переменные типа real, extended, comp;
-
отобразить целые и дробные числа двумя способами: в формате хранения в памяти и с заданной точностью (форматированный вывод).
Сценарий выполнения лабораторной работы
-
Создайте новое консольное приложение.
-
Сохраните новый проект в папке Lab1 под именем CON_WRITE_READ.
-
Включите в проект модуль CONVERTOR, следующим образом:
-
выполните команду Project->Add to;
-
выберите в папке Convertor файл модуля и откройте его;
-
перейдите в окно кода проекта (код основной программы), щелкнув по вкладке CON_WRITE_READ.
-
Добавьте в программу комментарий, который расскажет о задании, представленном в программе. Для этого перед предложением Programm project1; вставьте следующий текст
{Стандартный ввод-вывод}
-
Объявите в разделе объявления переменных следующие переменные:
-
a, b, c типа: byte, integer, int64 соответственно;
var
a:byte;
b:integer;
c:int64;
-
x, y, z типа real, extended, comp соответственно.
-
Вставьте в раздел операторов операторы, вывода следующего текста построчно:
Лабораторная работа №1.
Организация ввода и вывода в консольном режиме.
Пропустить две строки
Представление числовых данных в памяти.
Ввод числовых данных
Введите значение в переменную а из диапазона byte =
-
Далее вставьте оператор ввода значения в переменную a: Readln(a).
-
Далее добавьте операторы, обеспечивающие ввод целых чисел в переменные b и c c предварительным выводом текста, указывающего, в переменную какого типа будет прочитано значение.
-
Добавьте операторы для ввода трех дробных чисел в переменные x, y, z типа real, extended, comp соответственно.
Организация вывода значений переменных
-
Добавьте операторы, которые обеспечат вывод следующего текста на монитор:
Вывод числовых данных в формате хранения в памяти
Целые числа
-
Добавьте один оператор, который обеспечит вывод значений трех переменных a, b, c, так, чтобы на мониторе появилось информация, отображающая имя переменной = и значение этой переменной (Например, результат может выглядеть так a= b= 7 c=8).
-
Добавьте один операторы для вывода текста:
Дробные числа
Вывод вещественных значений в формате хранения
-
Выведите значения переменных x, y, z.
-
Добавьте оператор вывода, обеспечивающий вывод она монитор пустой строки.
-
Выведите следующий текст:
Вывод вещественных значений с заданной точностью.
-
Выведите значения трех переменных x, y, z в форме с фиксированной точкой и с точностью три знака после точки, с указанием имен переменных.
-
Выведите объем памяти, выделяемый каждой переменной программы. Для определения объема памяти используйте функцию sizeof(имя переменной).
-
Выполните компиляцию и устраните все синтаксические ошибки.
-
Заполните таблицу тестов, учитывая следующее:
-
Первый тест должен обеспечить проверку программы на числах, принадлежащих диапазону типа.
-
Второй тест должен обеспечить для переменной а (типа byte) ввод значения = -1, остальные значения из первого теста.
-
Третий тест должен обеспечить для переменной а(типа byte) ввод значения = 256, остальные значения из первого теста.
-
Четвертый тест должен обеспечить ввод в переменные x, y, z одного и того же дробного числа 123.445.
-
Пятый тест должен обеспечить ввод значения 123, 5 в переменную типа comp.
-
Выполните программу поочередно на всех тестах.
-
Письменно объясните полученные результаты тестирования.
-
Сохраните программу и закройте приложение.
Контрольные вопросы
-
Что указывается в списке параметров процедуры Read(список параметров);
-
Что указывается в списке параметров процедур Write и Writeln(список параметров);
-
Какие действия выполняют соответственно процедуры ввода и вывода записанные в программе в следующем виде: Readln;.Writeln;
2. Теоретический материал Структура консольного приложения
Приложение Delphi состоит из основной программы и подключаемых модулей1. В приложение можно включать стандартные модули или модули, разработанные пользователем. Простое консольное приложение состоит из основной программы с включенным модулем sysutils и директивой компилятора {$APPTYPE CONSOLE}
Структура простого консольного приложения
Описание элементов программы |
Пример простого приложения |
Заголовок проекта |
Program Имя проекта; |
Директива компилятора |
{$APPTYPE CONSOLE} |
Подключение модулей |
Uses sysutils; |
Раздел объявления программных объектов: констант, переменных, типов, подпрограмм |
Const pi=3.14; Var X:byte; Y:extended; |
Тело программы (или раздел операторов). Содержит последовательность операторов, реализующих алгоритм решаемой задачи. Все операторы программы размещаются внутри составного оператора begin …end. Завершает код программы символ точка. |
Begin X:=5; Y:=x/2; Writeln(‘Y=’, Y); Readln End. |
Идентификаторы
Для доступа в программе к программному объекту используется идентификатор. Идентификатор определяет имя объекта
Идентификатор программы Delphi – это последовательность букв и цифр языка программирования, начинающаяся обязательно с буквы. Идентификатор не может содержать символ пробела.
Примеры идентификаторов
X1, XYZ, X_Y, A153, a153
Идентификаторы A153, a153 определяют одно имя.
Определение переменных
Переменная – это программный объект, предназначенный для хранения данных. Переменная имеет имя, ей при компиляции выделяется память, размер которой определяется типом переменной. Тип определяет размер памяти, внутреннее представление данных и набор операций над значением переменной. Тип определяется идентификатором.
Формат объявления переменных
var
Список имен переменных : тип переменной;
………………………………………………….
Список имен переменных : тип переменной;
Пример объявления числовых переменных
Var
X:integer;
Y, Z: byte;
A, b, c: comp;
В Delphi можно присваивать значение переменной при ее объявлении.
Формат инициализации переменной при объявлении
var
Имя переменной : тип переменной=выражение;
Пример инициализации переменной при объявлении
Var
X:byte=100;
Организация стандартного ввода-вывода
Стандартный ввод – это ввод данных память компьютера с помощью клавиатуры. Организацию стандартного ввода в Delphi обеспечивают процедуры ввода: Read и Readln.
Форматы операторов организации стандартного ввода.
Read(список переменных); Данный оператор читает значения, введенные пользователем с клавиатуры и записывает их в переменные, указанные в списке. Имена переменных в списке должны отделяться запятой.
Пример записи операторов ввода данных с помощью процедуры Read.
Read(x,y,z);
Read(x);
Readln(список переменных); Данный оператор читает введенные значения, записывает их в соответствующие переменные и читает ол Enter (освобождает буфер ввода).
Пример записи операторов ввода данных с помощью процедуры Readln.
Readln(x,y,z);
Readln(x);
Readln; Данный оператор обеспечивает чтение только символа Enter, т.е. освобождает буфер ввода.
Пример использования процедуры Readln для освобождения буфера ввода и организации просмотра данных, выведенных на монитор.
Read(x,y,z);
Readln;
Readln;
Стандартный вывод – это отображение данных на монитор. Организацию стандартного вывода в Delphi обеспечивают процедуры вывода: Write и Writeln. Процедуры позволяют отображать данные на монитор в стандартном формате, а также применять специальные форматы для более наглядного отображения.
Форматы операторов организации стандартного вывода без форматирования данных.
Write(список выражений); Данный оператор последовательно выводит значения выражений, представленных в списке, на монитор в текущую позицию. Под выражением понимаются: переменная, константа, выражение. Выражения в списке отделяются друг от друга запятой.
Пример оператора вывода одного текстового значения.
Write(‘Текст должен быть в апострофах’);
Пример оператора вывода значений двух выражений: текстовой константы и переменной.
Write(‘x=’,x);
Writeln(список выражений); Данный оператор выводит значения выражений, представленных в списке, на монитор в текущую позицию и после вывода всех значений переводит каретку на новую строку.
Пример операторов для вывода данных на три отдельных строки монитора.
Writeln(‘Лабораторная работа №1’);
Writeln(‘Задание. Вычисление значения функции Sin(x) в точке х’);
Writeln(‘Результат работы программы:’,’X=’, X, ‘ Sin(X)=’, Sin(X));
Writeln; Данный оператор обеспечивает только перевод каретки на новую строку (вставка пустой строки).
Пример операторов для вывода данных на три отдельных строки монитора и вставкой пустой строки.
Writeln(‘Лабораторная работа №1’);
Writeln(‘Задание. Вычисление значения функции Sin(x) в точке х’);
Writeln;
Writeln(‘Результат работы программы:’,’X=’, X, ‘ Sin(X)=’, Sin(X));
Форматы операторов организации стандартного вывода с форматированием данных.
Форматирование отображаемой информации осуществляется с помощью параметров форматирования.
Список выражений при форматированном выводе
где:
p – параметр, определяющий количество выводимых символов
q – параметр, который используется только для отображения дробных чисел и определяет точность представления числа (число знаков в дробной части числа)
знак(+/-) – означает, что выводимое значение при выводебудет прижато к левой границе области вывода, а знак + значение при выводе будет прижато правой границе области вывода.
Пример форматированного вывода числовых значений.
Var
A,b:byte;
X:real;
Begin
A:=2; b:=123; x:=12,333333333;
Writeln(‘Вывод без форматирования’);
Writeln(a,’ ‘,b,’ ‘, x);
Writeln(‘Вывод c форматированием’);
Writeln(a:4,b:5,x:7:2);
readln
End.
Результат программы
Вывод без форматирования
2 123 1.2333333333e+1
Вывод с форматированием
2 123 12.33
1 Отдельно компилируемая часть программы.