Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Програмирование. Структурное програмирование, подпрограммы, строки. Учебное пособие
.pdf
Например:
Исходная строка QWERTY
Строка результата WERTQ
11. Написать и протестировать подпрограмму. Подпрограмма осу-
ществляет циклический сдвиг литер в строке Str в заданном направлении на заданное число позиций.
Например:
Исходная строка QWERTY
Строка результата WERTQ
12. Написать и протестировать подпрограмму. Подпрограмма пре-
образует десятичное целое без знака в строку, содержащую его 16ричное представление.
Например:
Исходное число 65
Строка результата ‘41’
13. Написать и протестировать подпрограмму. Подпрограмма пре-
образует десятичную дробь без знака в строку, содержащую его 16ричное представление.
Например:
Исходное число 0.875
Строка результата ‘C’
14. Написать и протестировать подпрограмму. Подпрограмма пре-
образует 16-ричное целое без знака, представленное строкой, в его десятичное представление.
Например:
Исходное число ‘41’
Строка результата 65
15. Написать и протестировать подпрограмму. Подпрограмма пре-
образует 16-ричную дробь без знака, представленную строкой, в ее
десятичное представление.
Например:
Исходное число ‘C’
Строка результата 0.875
91

16. Написать и протестировать подпрограмму. Подпрограмма пре-
образует 16-ричное действительное число без знака, представленное
строкой, в ее десятичное представление.
Например:
Исходное число ’41.C’
Строка результата 65.875
ПРИМЕРЫ РЕШЕНИЙ
Задача 2
Условие
Написать и протестировать функцию. Функция получает через параметр строку и возвращает строку, полученную из исходной, путем
удаления из нее всех подряд идущих с правого края пробелов.
Например:
Исходная строка ‘QWERTY ’
Строка результата ‘QWERTY’
Решение
Для удаления подряд идущих пробелов справа будем использовать
цикл WHILEDO, потому что в случае пустой строки или строки, не
содержащей справа пробелов, ничего делать не надо. Условие продолжения цикла – строка не пуста и символ в последней позиции строки
равен пробелу. В цикле из строки удаляем символ, расположенный на
последней позиции
. Блок-схема алгоритма показана на рисунке ниже.
Удалить символ
на последней позиции
P
Л
И
Р – строка не пуста и символ последней позиции – пробел
92

Функция, реализующая приведенную блок-схему, приведена ниже.
//-----------------------------------------------------function delRightSpase(S: String): String;
//Возвращает строку, из символов строки S, в которой от-
сутствуют конечные пробелы.
begin
while (Length(S) <> 0) and (Copy(s,Length(S),1) = ' ')
do begin
delete(S,Length(S),1);
end;
Result:= s;
end;
//------------------------------------------------------
Тестирование. Набор тестов для тестирования разработанной
функции представлен в таблице.
Номер
теста
1 S – пустая строка Пустая строка
2 S = ‘ ‘ – строка из пробелов Пустая строка
3 S = ‘ ф ыв ‘ S = ‘ ф ыв‘
Исходные данные Ожидаемый результат
Задача 4
Написать и оттестировать функцию. Функция получает через параметр строку (Str) и подстроку (SubStr) и возвращает число вхождений
подстроки в строку.
Например:
Исходная строка Str ‘QWERTYQWERQW’
Подстрока SubStr ‘QW’
Строка результата 3
Решение
Для подсчета всех вхождений подстроки в строку будем использовать цикл WHILEDO, потому что в случае пустой строки или строки,
не содержащей подстроки, ничего делать не надо. Условие продолжения цикла – строка не пуста и подстрока в строке есть. В цикле из
строки удаляем первое вхождение подстроки и увеличиваем значение
счетчика
на единицу. Перед входом в цикл счетчик необходимо ини-
93

циировать нулем, поскольку он накопляет результат суммированием.
Блок-схема алгоритма показана на рисунке ниже.
Удалить первое
вхождение подстроки из строки. Увеличить счетчик на 1
P
Л
И
Р – строка не пуста
и подстрока в строке
есть
Функция, реализующая приведенную блок-схему, приведена ниже.
//----------------------------------------------------function CountCopy(S,SubS: String): Integer;
begin
Result:= 0;
while (Pos(SubS,s) <> 0) and (Length(S) <> 0) do begin
delete(S,1,Pos(SubS,s) + Length(SubS) - 1);
inc(Result);
end;
end;
//------------------------------------------------------
Тестирование. Набор тестов для тестирования разработанной
функции представлен в таблице.
Номер
теста
1 S – пустая строка, SubS – пустая строка 0
2 S – пустая строка, SubS – не пустая строка 0
3 S – не пустая строка, SubS – пустая строка 0
4 S = ‘abcabcabc’, SubS = ’ab’ 3
Исходные данные Ожидаемый результат
94

ГЛОССАРИЙ
Подпрограмма (англ. subprogram) – поименованная часть программы, содержащая описание определенного набора действий. Подпрограмму можно многократно вызывать из разных мест программы.
Стандартные подпрограммы (write, read, trunc и т. д.) описаны разработчиками и помещены в библиотеку времени выполнения (модуль
System), которая подключается автоматически. Поэтому они уже готовы для использования.
Подпрограммы пользователя –
это подпрограммы, которые пользователь может описать в своей программе, после чего они станут доступны для использования.
Функция – это подпрограмма, которая в результате своей работы
возвращает результирующее значение и, следовательно, может использоваться в выражениях.
result – идентификатор локальной переменной по умолчанию, тип
которой совпадает с типом результата, возвращаемого функцией.
Вызов
функции – синтаксическая конструкция, с помощью которой
в тексте программы выполняется активизация функции. Вызвать
функцию – это значит передать управление первому оператору раздела
операторов функции. После этого функция начинает выполнять описанные в ней действия.
Описание функции – определяет часть программы, в которой вы-
числяется и возвращается значение.
Заголовок функции – обязательный раздел описания функции
. В
заголовке описания функции указывается имя функции, описывается
список формальных параметров (если он присутствует) и тип результата, возвращаемого функцией.
Процедура – это подпрограмма, которая в отличие от функции не
обязана оставлять результат в месте ее вызова после своего завершения.
Описание процедуры определяет часть программы, в которой выполняются некоторые
действия.
95

Заголовок процедуры – обязательный раздел описания процедуры.
В нем указывается имя процедуры, описывается список формальных
параметров (если он присутствует)
Формальные и фактические параметры – это механизм, который
обеспечивает обмен данными между подпрограммой и вызвавшей ее
программой (или подпрограммой).
Формальные параметры – это параметры, которые описаны в заголовке описания подпрограммы. Через имена формальных
параметров в
разделе операторов вы описываете те действия, которые подпрограмма
будет выполнять при ее вызове.
Список формальных параметров-значений в описании подпрограммы – это группа параметров без предшествующего ключевого
слова var и со следующим за ней типом. Список может содержать
единственный параметр-значение.
Список формальных параметров-переменных в заголовке описания
подпрограммы – это
группа параметров с предшествующим ключевым
словом var и следующим за ней типом. Список может содержать единственный параметр-переменную.
Список формальных нетипированных параметров-переменных в
заголовке описания функции – это группа параметров с предшествующим ей ключевым словом var и без следующего за ней типа. Таким
образом, тип этого параметра не определен. Список
может содержать
единственный нетипированный параметр-переменную.
Фактические параметры – это параметры, которые подставляют на
место формальных параметров при вызове подпрограммы.
Фактический параметр-переменная – это параметр, который подставляется вместо формального параметра-переменной при вызове
подпрограммы. Им должен быть идентификатор переменной тождественного типа с типом замещаемого формального параметра.
Фактический параметр-значение – это
параметр, который подставляется вместо формального параметра-значения при вызове подпрограммы. Он может быть представлен в форме выражения, совместимого по присваиванию типа с типом замещаемого им формального параметра.
Фактический нетипированный параметр-переменная – это параметр, который подставляется вместо формального нетипированного
параметра-переменной при вызове подпрограммы. Им должен
быть
идентификатор переменной.
ShortString – короткие строки, которые имеют стандартное для Borland Turbo Pascal представление.
96

AnsiString – длинные строки (символы кода ANSI), которые не
имеют ограничений на длину.
WideString – длинные строки (символы кода Unicode), которые не
имеют ограничений на длину.
Длина строки – количество символов, содержащихся в строке.
Пустая строка – строка, не содержащая ни одного символа, длина
которой равна 0.
Строка (значение строкового типа, строковый литерал) – последовательность символов, заключенная в
одиночные кавычки (апостро-
фы). Апострофы в состав строки не входят.
Значение типа AnsiString – строка символов расширенного кода
ANSI. Строка может содержать от 0 до ~2
31
символов, которые заклю-
чены в одиночные кавычки (апострофы). Количество символов в строке называется длиной строки или динамическим атрибутом длины
строки.
Строковая переменная – это одна из форм представления строки
(строкового значения) в программе.
Литеральная строковая константа (строка) – это непосредственное
изображение строкового значения в программе с помощью последовательности символов расширенного
кода ANSI, заключенной в апо-
строфы.
Простая строковая константа – это идентификатор (имя) строкового литерала, доступного только для копирования. Простая строковая
константа представляет литеральную константу в тексте программы.
Отношение на строках – отношение между любыми двумя строковыми значениями. Оно устанавливается согласно отношению порядка
между значениями кодов символов в соответствующих позициях.
Операция
сложения строк – двухоперандная операция. Она определена на значениях операндов любых строковых типов и типе Char. Результатом операции является строка, полученная из исходных строк
путем добавления к символам левой строки (левого операнда) символов правой строки (правого операнда).
Length – имя стандартной функция, которая возвращает значение
динамического атрибута длины строки.
Concat – имя функции
, которая выполняет конкатенацию (сложе-
ние) последовательности строк.
Copy – имя функции, которая выделяет подстроку из строки.
Pos – имя функции, которая производит поиск подстроки в строке.
Delete – имя процедуры, которая удаляет подстроку из строки.
97

Insert – имя процедуры, которая вставляет подстроку в строку.
Str – имя процедуры, которая преобразует числовое значение в его
строковое представление.
Val – имя процедуры, которая преобразует строковое значение в
его числовое представление.
Простая (именованная) константа – идентификатор (имя), пред-
ставляющее литеральную константу в тексте программы.
Структурное программирование – это технология создания про-
грамм, позволяющая путем соблюдения
определенных правил уменьшить время разработки и количество ошибок, а также облегчить возможность модификации программы.
«Разделяй и властвуй» – принцип решения трудных проблем путем
разбиения их на множество меньших независимых задач, легких для
понимания и решения.
Принцип иерархического упорядочения – принцип организации составных частей системы в иерархические древовидные структуры с
добавлением новых деталей на каждом уровне.
Принцип «слабой связанности» (Low Coupling) – состоит в том, что
количество связей между отдельными модулями должно быть минимальным.
Принцип «сильного сцепления» (High Cohesion) – состоит в том,
что связность отдельных частей внутри каждого модуля должна быть
максимальной.
Базовые конструкции структурного программирования – это следование, ветвление и цикл.
Тестирование – процесс
выполнения программ с целью обнаруже-
ния логических ошибок.
Логическая ошибка – любое несоответствие работы программы заданной на нее спецификации.
Отладка программы – процесс локализации и исправления ошибки,
обнаруженной после удачного выполнения теста.
98

БИБЛИОГРАФИЧЕСКИЙ СПИСОК
Основной
1. Павловская Т.А. Паскаль. Программирование на языке высокого уров-
ня: учебник для вузов / Т.А. Павловская и др. – М., 2004. Рекомендовано МО.
2. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: практикум: учебное пособие для вузов по направлению «Информатика и
вычислительная техника» / Т.А
Издательская программа 300 лучших учебников для высшей школы. – Рекомендовано МО.
3. Архангельский А.Я. Язык Pascal и основы программирования в Delphi /
А.Я. Архангельский. –М.: Бином-Пресс, 2008.
4. Бобровский С.И. Delphi 7: учебный курс / С. Бобровский и др. – СПб.,
2007.
5. Фаронов В.В. Delphi. Программирование на
учебник для вузов по направлению «Информатика и вычислительная техника» / В. В. Фаронов и др. – СПб., 2007. – Издательская программа 300 лучших
учебников для высшей школы. – Рекомендовано МО.
6. Вендров А.М. Проектирование программного обеспечения экономических информационных систем / А.М. Вендров. – М.: Финансы и статистика,
2000.
7. С/С++.
ская. – СПб.: Питер, 2002.
8. Зиглер К. Методы проектирования программных систем: пер. с англ. /
К. Зиглер. – М.: Мир, 1985.
9. Вирт Н. Систематическое программирование. Ведение: пер. с англ. /
Н. Вирт. – М.: Мир,1977.
10. Лингер Р. Теория и практика структурного программирования: пер. с
англ. / Р
11. Майерс Г. Искусство тестирования программ: пер. с англ. / Г. Майерс. –
М.: Финансы и статистика, 1982.
12. Марченко А.И. Программирование на языке Object Pascal 2.0 /
А.И. Марченко. – Киев: ЮНИОР, 1998.
13. Архангельский А.Я. Программирование в Delphi: учебник по классическим версиям Delphi: версии 5–7 / А.Я. Архангельский
[5] с.: ил. + 1 CD-ROM.
Программирование на языке высокого уровня / Т.А. Павлов-
. Лингер, Х. Миллс, Б. Уитт. – М.: Мир, 1982.
. Павловская и др. – СПб., 2007. – На тит. л.:
языке высокого уровня:
Дополнительный
. – М., 2008. – 804.
99

14. Фаронов В.В. Система программирования Delphi / В. Фаронов. – СПб.,
2006. – 888 с.: ил. + 1 CD-ROM.
15. Тюкачёв Н.А. Программирование в Delphi для начинающих: учебное
пособие для вузов по специальности 351400 «Прикладная информатика (по
областям)» и другим специальностям / Н. Тюкачев, К. Рыбак, Е. Михайлова. –
СПб., 2007. – 651 с.: ил. + 1 CD-ROM. – Рекомендовано УМО.
16. Аганин А.А. Изучение основ языка
А.А. Аганин, З.Р. Халитова, Н.А. Хисматуллина. – Казань: ТГГПУ, 2006. –
80 с.
17. Культин Н.Б. Delphi 6. Программирование на Pascal Delphi / Н.Б. Культин. – СПб.: БХВ – Петербург, 2002.
18. Немнюгин С.А. Turbo Pascal. Программирование на языке высокого
уровня / С.А. Немнюгин. – СПб.: Питер, 2008.
19. Фаронов В. Delphi 6: учебный курс / В. Фаронов. – СПб.: Питер,
2002. – 512 с.
20. Программирование. Delphi [Электронный ресурс] URL: http://www.
cyberguru.ru/programming/delphi.html (дата обращения 25.11.2014)
21. Электронные книги по программированию на Delphi [Электронный ре-
сурс] URL: http://www.delphi-ex.narod.ru/ebook.htm (дата обращения 25.11.2014)
22. Изучаем Delphi [Электронный ресурс] URL: http://www.snkey.
net/books/ delphi/ (дата обращения 25.11.2014)
23. Языки программирования. Pascal [Электронный ресурс] URL:
http://www.codenet.ru/progr/delphi/Object-Pascal-short/ (дата обращения
25.11.2014).
24. Все о Паскале [Электронный ресурс] URL: http://forum.pascalnet.ru/ (дата обращения 25.11.2014)
25. Программирование IV. Pascal [Электронный ресурс] URL: http://www.
ph4s.ru/bookprogramir_4.html (дата обращения 25.11.2014)
26. ИВТ
ный ресурс] URL: http://xn--90abr5b.xn--p1ai/wiki (дата обращения 25.11.2014)
(б)-вики. Структуры и алгоритмы обработки данных [Электрон-
программирования Pascal Delphi /
100
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
