Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Програмирование. Структурное програмирование, подпрограммы, строки. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Например:
Исходная строка 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 – короткие строки, которые имеют стандартное для Bor­land 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]