4829

Консольное приложение. Создание приложения под DOS

Лекция

Информатика, кибернетика и программирование

Консольное приложение. Цель: Создание консольного приложения. Задачи: Воспитательная: необходимость повторения. Учебная: создание приложения под DOS. Развивающая: развитие внимательности. План занятия. Организационный момент. Изучение но...

Русский

2012-11-27

87.5 KB

13 чел.

Консольное приложение.

Цель:

Создание консольного приложения.

Задачи:

Воспитательная: необходимость повторения.

Учебная: создание приложения под DOS.

Развивающая: развитие внимательности.

План занятия.

  1.  Организационный момент.
  2.  Изучение нового материала.
  3.  Контрольные вопросы.
  4.  Резюме.
  5.  Домашнее задание.

Изучение нового материала.

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

Инструкции write и writeln

   Инструкция write предназначена для вывода на экран монитора сообщений и значений переменных. После слова write в скобках задается список переменных, значения которых должны быть выведены. Кроме имен переменных в список можно включить сообщение — текст, заключенный в одиночные кавычки. Например:

   write(Summa);

   write('Результат вычислений');

   write('Корни уравнения. x1=', x1, ' х2=', х2);

   После имени переменной через двоеточие можно поместить описание (формат) поля вывода значения переменной. Для переменной типа Integer формат — это целое число, которое задает ширину поля вывода (количество позиций на экране). Например, инструкция

   write(d:5);

показывает, что для вывода значения переменной d используется 5 позиций.

   Если значение переменной такое, что его изображение занимает меньше позиций, чем указано в формате, то перед первой цифрой числа будут выведены пробелы так, чтобы общее количество выведенных символов было равно указанному в формате. Например, если значение переменной Kol типа integer равно 15, то в результате выполнения инструкции

   write('Всего изделий:', Kol:5);

на экран будет выведено:

   Всего изделий: 15

   Для переменных типа Real формат представляет собой два целых числа, разделенных двоеточием. Первое число определяет ширину поля вывода, второе – количество цифр дробной части числа. Если задать только ширину поля, то на экране появится число, представленное в формате с плавающей точкой. Например, пусть переменные x1 и х2 типа real имеют значения 13.25 и -0.3401, тогда в результате выполнения инструкции

   write('x1=',x1:5:2,' х2=',х2:12)

на экран будет выведено:

   x1=13.25   х2=-3.40100Е-01

   Если ширины поля, указанной в формате, недостаточно для вывода значения переменной, то выводится число в формате с плавающей точкой и десятью цифрами после запятой (все поле вывода в этом случае занимает 17 позиций).

   После выполнения инструкции write курсор остается в той позиции экрана, в которую он переместился после вывода последнего символа, выведенного этой инструкцией. Следующая инструкция write начинает вывод именно с этой позиции. Например, в результате выполнения инструкций

   х:=-2.73;

   write('Значение перем');

   write('енной:');

   write('х=');

   write(x:8:5);

на экран будет выведено:

   Значение переменной: х=-2.73000

   Инструкция writeln отличается от инструкции write только тем, что после вывода сообщения или значений переменных курсор переводится в начало следующей строки. Например, если значением переменной x1 является число -3.561, а значением переменной х2 – число 10.345, то результатом выполнения инструкций

   writeln('Значения корней уравнения:');

   writeln('x1=',x:7:3);

   writein('х2=',х:7:3);

на экран будет выведено:

   Значения корней уравнения:

   x1=-3.5610

   х2= 10.345

Инструкции read и readln

   Инструкция read предназначена для ввода с клавиатуры значений переменных (исходных данных). В общем виде инструкция выглядит следующим образом:

   read (Переменная1, Переменная2, ... ПеременнаяN)

где переменнаяN – имя переменной, значение которой должно быть введено с клавиатуры во время выполнения программы.

   Приведем примеры записи инструкции read:

   read(a);

   read(Cena,Kol);

   При выполнении инструкции read происходит следующее:

  1.  Программа приостанавливает свою работу и ждет, пока на клавиатуре будут набраны нужные данные и нажата клавиша <Enter>.
  2.  После нажатия клавиши <Enter> введенное значение присваивается переменной, имя которой указано в инструкции.

   Например, в результате выполнения инструкции

   read(Temperat);

и ввода с клавиатуры строки 21, значением переменной Temperat будет число 21.

   Одна инструкция read позволяет получить значения нескольких переменных. При этом вводимые числа должны быть набраны в одной строке и разделены пробелами. Например, если тип переменных а, b и с — real, то в результате выполнения инструкции read(a,b,c); и ввода с клавиатуры строки:

   4.5   23   0.17

переменные будут иметь следующие значения:  а = 4,5; b = 23,0; с = 0,17.

   Если в строке набрано больше чисел, чем задано переменных в инструкции read, то оставшаяся часть строки будет обработана следующей инструкцией read. Например, в результате выполнения инструкций

   read(А,В);

   read(С);

и ввода с клавиатуры строки

   10  25   18

переменные получат следующие значения: А=10, B = 25. Инструкция read (С); присвоит переменной с значение 18.

   Инструкция readln отличается от инструкции read тем, что после выделения очередного числа из введенной с клавиатуры строки и присваивания его последней переменной из списка инструкции readln, оставшаяся часть строки теряется, и следующая инструкция read или readln будет требовать нового ввода. Например, в результате выполнения инструкции

   readin(А,В);

    read(С);

и вводе с клавиатуры строки

   10   25   18

переменные получат следующие значения: А=10, B = 25. После чего программа будет ожидать ввода нового числа, чтобы присвоить его переменной с.

   Перед каждой инструкцией read или readln следует располагать инструкцию write, для того чтобы подсказать пользователю, какие данные ожидает от него программа. Например, фрагмент программы вычисления стоимости покупки может иметь вид:

   writeln('Введите исходные данные.');

   write('Цена изделия:');

   readln(Сеnа);

   write('Количество в партии:');

   readln(Kol);

   write('Скидка:');

   readln(Skidka);

   Если тип данных, вводимых с клавиатуры, не соответствует или не может быть приведен к типу переменных, имена которых указаны в инструкции read (readln), то программа аварийно завершает работу (инструкции, следующие за read, не выполняются), и на экран выводится сообщение об ошибке.

Создание консольного приложения

   Создается консольное приложение следующим образом. Сначала нужно из меню File выбрать команду New | Other Application, затем на вкладке New появившегося диалогового окна New Items выбрать тип создаваемого приложения – Console Application. В результате этих действий на экране появится окно Projectl.dpr, в котором находится шаблон главной процедуры консольного приложения. В этом окне можно набирать инструкции программы.

   

   Начинается консольное приложение инструкцией program, за которой следует имя программы. Сначала оно совпадает с именем проекта "по умолчанию". В момент сохранения проекта оно будет автоматически заменено на имя, под которым программист сохранит проект.

   Следует обратить внимание на то, что консольное приложение создается в Windows, а выполняется как программа DOS. В DOS используется кодировка ASCII, а в Windows — ANSI, буквы русского алфавита в которых имеют разные коды. Это приводит к тому, что вместо сообщений на русском языке консольное приложение выводит "абракадабру". Поэтому консольные приложения должны выводить сообщения на английском, что не всегда удобно.

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

   writeln(Rus('У лукоморья дуб зеленый')).

   В листинге приведен пример программы, которая запрашивает у пользователя вес в фунтах, пересчитывает его в килограммы и выводит результат на экран. Для вывода сообщений используется функция RUS, которая преобразует строку символов в кодировке ANSI в строку символов в кодировке ASCII.

Листинг. Пересчет веса из фунтов в килограммы (консольное приложение)

program funt2kg;

{$APPTYPE CONSOLE}

// Функция Rus преобразует ANSI-строку в ASCII-строку

function Rus(mes: string):string;

   // В ANSI русские буквы кодируются числами от 192 до 255,

   // в ASCII - от 128 до 175 (А..Яа..п) и от 224 до 239 (р..я).

   var

       i: integer; // номер обрабатываемого символа 

   begin

       for i: =1 to length(mes) do

           case mes[i] of

               'A'..'п' : mes[i] := Chr(Ord(mes[i]) - 64);

               'р'..'я' : mes[i] .:= Chr (Ord(mes [i] ) -16);

           end;

       rus := mes;

   end;

// основная программа

var

   f:real; // вес в фунтах 

   w:real; // вес в граммах 

   k:integer; // кол-во килограммов 

   g:integer; // кол-во граммов 

   // w = f*0,4095 = k*1000 + g

begin

   writeln(Rus('Фунты-килограммы'));

   writeln(Rus('Введите вес в фунтах и нажмите <Enter>'));

   write('-> ');

   readln(f);

   w := f * 409.5; // один фунт — это 409,5 гр. 

   if w > 1000 then

       begin

           k:=Trunc(w/1000);

           g:=Round(w - k*1000);

       end

   else

       begin

           k:=0;

           g:=Round(w) ;

       end;

   write(f:4:2, Rus(' ф. -это '));

   if k >= 1 then write(k, Rus(' кг. '));

   writeln(g, Rus(' rp.')};

   write(Rus('Для завершения нажмите <Enter>'));

   readln;

end.

    Начинается текст программы строкой {$APPTYPE CONSOLE}, которая, хотя и похожа на комментарий, таковым не является, т. к. сразу за открывающей скобкой следует знак денежной единицы. Эта директива предназначена для компилятора. Следуя ее указаниям, компилятор генерирует исполняемую программу как консольное приложение. Компиляция консольного приложения выполняется обычным образом, т. е. выбором из меню Project команды Compile. После успешной компиляции программа может быть запущена выбором из меню Run команды Run. При запуске консольного приложения на экране появляется стандартное окно DOS-программы. На рис. приведен вид DOS-окна, в котором работает консольное приложение, созданное в Delphi. Процесс сохранения проекта консольного приложения стандартный. В результате выбора из меню File команды Save на экране появляется диалоговое окно Save Project, в котором нужно ввести имя проекта.

Контрольные вопросы

  1.  Что такое консоль?
  2.  Что такое консольное приложение?
  3.  Назначение инструкции write и ее запись.
  4.  Назначение инструкции writeln и ее запись.
  5.  Как написать инструкцию read?
  6.  Как работает инструкция readln?

Резюме

  1.  Консоль — это монитор и клавиатура, рассматриваемые как единое устройство.
  2.  Консольное приложение – программа, предназначенная для работы в операционной системе MS-DOS, для которой устройством ввода является клавиатура, а устройством вывода — монитор, работающий в режиме отображения символьной информации.
  3.  Инструкция write предназначена для вывода на экран монитора сообщений и значений переменных. После слова write в скобках задается список переменных, значения которых должны быть выведены.
  4.  Инструкция writeln отличается от инструкции write только тем, что после вывода сообщения или значений переменных курсор переводится в начало следующей строки.
  5.  Инструкция read предназначена для ввода с клавиатуры значений переменных (исходных данных). В общем виде инструкция выглядит следующим образом:

             read (Переменная1, Переменная2, ... ПеременнаяN)

  1.  Инструкция readln отличается от инструкции read тем, что после выделения очередного числа из введенной с клавиатуры строки и присваивания его последней переменной из списка инструкции readln, оставшаяся часть строки теряется, и следующая инструкция read или readln будет требовать нового ввода.

Домашнее задание

   Создать консольное приложение.


 

А также другие работы, которые могут Вас заинтересовать

27164. СИСТЕМА ЦИФРОВОЙ МАГНИТНОЙ ЗАПИСИ ЗВУКА R-DAT 182.5 KB
  Описание формата RDAT Rotary Head Digital Audio Tape Recorder это система цифровой звукозаписи на магнитную ленту шириной 381 мм равную ширине ленты в обычной аналоговой компакткассете с помощью вращающихся головок. В отличие от формата CD здесь предусмотрено не только воспроизведение программ но и возможность их записи с высоким качеством. Режим I предназначен для записи и воспроизведения программ с частотой дискретизации 48 кГц при 16 разрядном линейном квантовании.
27165. Система защиты от ошибок 494.5 KB
  В магнитофонах формата RDAT так же как и в формате CD для борьбы с искажениями используется комплексная система защиты от ошибок включающая в себя два кода РидаСоломона С1[3228] и С2[3226] и двунаправленный способ перемежения данных. Проверочная матрица НР кода С1 показана на рисунке 9 а расположение символов внутри кодового слова задано векторстолбцом VP показанным на рисунке 10. Порождающий многочлен GPX этого кода имеет вид: или Поскольку кодовое слово кода С1 содержит четыре проверочных символа то этот код способен...
27166. КАНАЛЬНОЕ КОДИРОВАНИЕ 108.5 KB
  Считается что если после такого преобразования число канальных бит высокого уровня равно числу канальных бит низкого уровня то постоянная составляющая всей комбинации будет равна нулю DSV = 0. Оставшиеся 103 комбинации пришлось выбрать из тех которые имеют ненулевое значение DSV. Однако вместо одной 10разрядной комбинации каждому из этих 103 8разрядных символов поставлены в соответствие две отличающиеся друг от друга только знаком DSV. Одна из них имеет значение DSV = 2 другая DSV = 2.
27167. СЛУЖЕБНАЯ ИНФОРМАЦИЯ 172 KB
  Эта информация кроме специально отведенной для нее зоны данных субкода размещается еще и в символах кода идентификации ID которые имеют место в начале каждого блока как в зоне данных ИКМ W1 и W2 так и в зоне данных субкода SW1 и SW2. Служебная информация размещаемая в зоне данных субкода может переписываться и дописываться независимо от музыкальной информации записанной в ИКМзоне. Изменить ее не изменяя основных данных невозможно. Это та информация которая записана в символах W1 и W2 кода идентификации ID зоны ИКМданных.
27168. DAT-кассета 167.5 KB
  Так же как у видеокассеты рабочая поверхность ленты защищена шарнирной крышкой и доступ к ней обеспечивается только при откидывании этой крышки. Эта панель к тому же застопоривает шарнирную крышку препятствуя доступу к магнитному слою ленты. Таким образом DATкассета хорошо закрыта со всех сторон и магнитный слой находящейся нее ленты надежно защищен от пыли царапин отпечатков пальцев и других внешних воздействий. В дальнейшем при опускании кассеты внутрь транспортного механизма специальный рычаг ЛПМ поднимает шарнирную крышку...
27169. Система автотрекинга 174.5 KB
  Необходимые условия для вхождения в синхронизм обеспечиваются за счет того что перед началом каждого очередного массива данных на дорожке зона ИКМданных или зона данных субкода размещаются вспомогательные последовательности содержащие большое число переходов IBG вводный и выводной сигналы. Уровни сигналов ошибки при точном а и неточном б следовании головки по дорожке IBG4 F4 F4 F3 F1 F4 F3 IBG3 IBG2 В Нечетный кадр F4 F1 IBG1 1 1 1 2 блока 1 2 2 ATF2 ATF1 Направление движения ленты Направление движения головки 2 2 1 2 1 1 1 IBG1...
27170. Цифровое копирование фонограмм с помощью магнитофона R-DAT 119 KB
  Цифровое копирование фонограмм с помощью магнитофона RDAT Непременным свойством любого магнитофона является его способность к записи. DATмагнитофон в этом смысле не исключение. Однако именно по этой причине вопрос цифрового копирования стал больным вопросом формата RDAT с момента его появления. Компаниипроизводители фонограмм посчитали что такие возможности DATмагнитофонов нарушают их права и права авторов записанного материала справедливо наверное.
27171. Формат цифровой звукозаписи «Компакт-диск» 190 KB
  Таблица 1 Технические параметры формата CD Параметры Значения Диаметр диска мм 120 Толщина диска мм 12 Диаметр центрального отверстия мм 15 Материал диска Поликарбонат Способ воспроизведения информации Постоянная линейная скорость 1214 м с Шаг дорожки записи мкм 16 Минимальная длина пита мкм 083 Длина волны лазера нм 780 Частота дискретизации кГц 441 Число разрядов и характеристика квантования 16 линейная Скорость считывания звуковой информации Мбит с 14112 Общая скорость считывания информации Мбит с 19404 Канальная скорость...
27172. Процедура записи информации с целью последующего ее воспроизведения 54 KB
  В зависимости от типа используемого носителя информации и способа формирования на нем сигналограммы различают несколько систем записи информации [1]. Системой записи принято называть совокупность технических средств обеспечивающих процесс формирования сигналограммы на определенном типе носителя и технических средств обеспечивающих воспроизведение этой информации. Можно выделить семь различных систем записи звуковой информации реально существовавших и применявшихся на практике с момента ее возникновения и до наших дней: механическая...