Методические указания
Варианты заданий на выполнение РГЗ сгруппированы в четыре раздела:
• перевод чисел в заданную систему счисления;
• калькулятор p-ичных чисел;
• обработка строковых данных;
• изучение функций для работы с файлами.
Программы, реализуемые в рамках третьего раздела должны использовать только графический интерфейс. В качестве среды разработки Турбо Паскаль.
3. Раздел «Обработка строк, использование процедур и функций преобразования дат и времени»
3.1 Задание
Спроектируйте и реализуйте приложение, выполняющее обработку строк в соответствии с заданным вариантом.
3.2 Спецификация программы
1. Программа должна работать в режиме диалога с пользователем. Основные этапы работы:
• вывод на экран монитора текста задания;
• ввод исходной строки пользователем и ее контроль на соответствие зада-нию; (вывод результата на экран)
• обработка входной строки и вывод результата.
2. В программе необходимо обеспечить контроль ввода исходных данных. Если по заданию входная строка должна состоять только из цифр, то в случае ввода недопустимых символов программа должна выводить сообщение о номере первого ошибочного символа и завершать выполнение.
3. Программа должна корректно обрабатывать любые правильные строки, вводимые пользователем, независимо от количества слов в строке, порядка расположения символов и их регистра (прописные или строчные символы).
3.3 Варианты заданий
1. Варианты заданий раздела «Обработка строк» приведены в таблице 4.
Таблица 4
Номер варианта Задание
7 Из списка мероприятий вывести только те, которые будут проходить в указан-ный день недели.
3.4 Методические рекомендации
Для обработки строк в языке Паскаль имеется большое число специальных процедур и функций, сведения по наиболее часто используемым из них приведе-ны в таблице 5.
Таблица 5
Имя проце-дуры или функции Назначение Синтаксис
Concat Функция возвращает строку, являющуюся объединением нескольких строк, например s1 и s2. Concat(s1,s2: string): string; Возможен также следующий вариант: s3:=s1 + s2;
Copy Функция выделяет из строки (s1) заданное число символов (m), начиная с заданной позиции (n).
Copy(s1: string; n: integer;m: in-teger): string;
Delete Процедура удаляет из строки (s1) заданное числа символов (m), начиная с заданной по-зиции (n). Delete(var s1:string; n: integer; m: integer);
Insert Процедура вставляет подстроку (s1) в стро-ку (s2) начиная с заданной позиции (m)
Insert(s1: string; var s2: string; m: integer);
Pos Функция проводит поиск подстроки. Если подстрока найдена, то возвращает номер позиции первого символа подстроки s1 в строке s2; иначе возвращает 0.
Pos(s1, s2: string): Byte;
Str Процедура преобразует вещественное или целое число x в символьную строку s Str(x; var s: string);
Val Процедура преобразует символьное пред-ставление числа (строка s) в числовую пе-ременную целого или вещественного типа (v). Переменная code равна 0, если преобра-зование выполнено правильно.
Val(s: string; var v; code: integer);
UpCase Функция преобразует одиночный строчный символ в прописной
UpCase(ch: char): char;
UpperCase Функция возвращает заданную символьную ASCII строку в виде прописных символов
UpperCase(S: string): string;
LowerCase Функция возвращает заданную символьную ASCII строку в виде строчных символов
LowerCase(S: string): string;
Ord Функция возвращает код символа (его по-рядковый номер в кодировочной таблице)
Ord(x: char): longint;
Chr Функция возвращает символ по заданному коду
Chr(x: byte): char;
Обратите внимание: функции UpperCase и LowerCase могут корректно обрабатывать строки, состоящие только из символов латинского алфавита.
В приведенной ниже таблице 6. перечислены некоторые из функций обработки дат и времени, имеющихся в модуле SysUtils.
Таблица 6
Имя проце-дуры или функции Назначение Синтаксис
Date Функция возвращает текущую дату.
Date: TDateTime;
DateTime-ToStr Функция преобразовывает параметр типа TDateTime, содержащий дату и время, в строку. Если параметр DateTime не содер-жит значения даты, дата устанавливается в 00/00/00. Если параметр DateTime не со-держит значения времени, время устанав-ливается в 00:00:00.
DateTimeToStr(DateTime: TDateTime): String;
DateToStr Функция преобразовывает параметр типа TDateTime, содержащий дату, в строку. Преобразование использует формат, опре-деленный глобальной переменной ShortDateFormat.
DateToStr(Date: TDateTime): String;
DayOfWeek Функция возвращает день недели опреде-ленной даты как целое число между 1 и 7. Воскресенье - первый день недели, и суббо-та - седьмой.
DayOfWeek(Date: TDateTime): Integer;
DecodeDate Процедура извлекает дату из формата TDateTime и помещает год, месяц и день соответственно в переменные Year, Month и Day.
DecodeDate(Date: TDateTime; var Year, Month, Day: Word);
DecodeTime Процедура извлекает время из формата TDateTime и помещает часы, минуты, се-кунды, и миллисекунды соответственно в переменные Hour, Min, Sec и MSec.
DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
EncodeDate Функция возвращает дату в формате TDateTime, полученную из значений пара-метров Year, Month и Day.
Year должен быть между 1 и 9999.
Допустимые значения Month - от 1 до 12.
Допустимые значения Day - от 1 до 28, 29, 30, или 31, в зависимости от значения Month. Например, возможные значения Day в течение второго месяца (февраля) - от 1 до 28, или от 1 до 29, в зависимости от того, определяет или нет значение Year високос-ный год.
Если значения находятся вне диапазона, возникает исключительная ситуация EConvertError. Возникающее в результате значение - единица плюс число дней между 30/12/1899 и данной датой.
EncodeDate(Year, Moth, Day: Word): TDateTime;
EncodeTime Функция возвращает время в формате TDateTime, полученное из значений пара-метров Hour, Min, Sec и MSec.
Если значение типизированной константы Time24Hour ложно (False), значения Hour лежат в пределах от 0 до 12, если истинно (True) - от 0 до 23.
Допустимые значения Min и Sec - от 0 до 59. Допустимые значения MSec - от 0 до 999.
Если значения находятся вне диапазона, возникает исключительная ситуация EConvertError.
EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
Now Функция возвращает текущую дату и время в формате TDateTime (дата + время).
Now: TDateTime;
StrToDate Функция преобразовывает строковое пред-ставление даты в формат TDateTime. Дата в параметре S должна быть записана по пра-вилам Windows, т.е. должна состоять из двух или трех чисел, отделяемых символом, определенным в глобальной переменной DateSeparator. Порядок следования месяца, дня и года определен в глобальной пере-менной ShortDateFormat. Возможные комбинации - m/d/y, d/m/y, и y/m/d.
Если строка содержит только два числа, это интерпретируется как дата (m/d или d/m) в текущем году. Значения Year между 0 и 99 означают год в текущем столетии.
Если строка содержит дату в неверном формате, возбуждается исключительная си-туация EConvertError. StrToDate(const S: String): TDateTime;
StrToTime Функция преобразовывает строковое пред-ставление времени в формат TDateTime.
Строка должна состоять из двух или трех чисел, отделяемых символом, определен-ным в глобальной переменной TimeSeparator. Числа представляют собой часы, минуты, и (необязательно) секунды, в соответствующем порядке.
Если строка содержит время в неверном формате, возбуждается исключительная си-туация EConvertError. StrToTime(Const S: String): TDateTime;
Time Функция возвращает текущее время.
Time: TDateTime;
TimeToStr Функция преобразовывает время из форма-та TDateTime в строковое представление.
Преобразование использует формат, опре-деленный в глобальной переменной LongTimeFormat. Вы можете изменять фор-мат отображения времени, изменяя значе-ния переменных даты и времени (или ис-пользуя Панель управления Windows).
TimeToStr(Time: TDateTime): String;