Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Задание №4. Оформить в виде процедуры.




 

Для выполнения задания необходимо знать:синтаксис объявления процедур; отличительные особенности видов подпрограмм.

 

Общие замечания ко всем задачам этого задания:

 

1. Положить на форму еще один компонент типа TButton.

 

2. Вызвать оформленную процедуру в обработчике события OnClick вновь положенной кнопки.

 

Задача:

 

Оформить соответствующую задачу (для своего варианта) из задания №2 в виде процедуры.

 

 

Контрольные вопросы к заданиям №3 и №4.

 

1. Что такое подпрограмма? Назовите виды подпрограмм. В чем состоит основное назначение подпрограмм?

2. Назовите сходства и различия подпрограммы и программы.

3. Назовите сходства и различия видов подпрограмм.

4. Что такое «область действия идентификатора»? Какие переменные называются локальными? глобальными?

5. Укажите элементы структуры, которые являются в описании подпрограммы обязательными.

6. Укажите элементы структуры, которые являются в описании подпрограммы необязательными.

7. Какие параметры называются параметрами-значениями? Параметрами-переменными? Параметрами-константами?

8. Какие параметры называют формальными? Фактическими?

9. Перечислите соответствия, которые необходимо соблюдать между формальными и фактическими параметрами.

10. Объясните, каким образом вызвать подпрограмму? Сколько раз можно вызвать подпрограмму из различных частей программы?

11. Укажите типы значений, которые может возвращать функция?

12. Проведите сравнительный анализ результатов задания №3 и задания №4. Какая подпрограмма в вашем варианте задач является более предпочтительной?

 

Дополнительное задание.

 

Задачи:

 

№ 1. Дано предложение, состоящее из русских слов, набранных заглавными буквами и раз-деленных пробелами (одним или несколькими). Найти количество слов, которые начинаются и заканчиваются одной и той же буквой.

 

№ 2. Дано предложение, состоящее из русских слов, набранных заглавными буквами и раз-деленных пробелами (одним или несколькими). Найти количество слов, которые содержат хотя бы одну букву «А».

 

№ 3. Дано предложение, состоящее из русских слов, набранных заглавными буквами и раз-деленных пробелами (одним или несколькими). Найти количество слов, которые содержат ровно три буквы «А».

 

№ 4. Дано предложение, состоящее из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, разделенные одним пробелом и расположенные в обратном порядке

 

№ 5. Дано предложение, состоящее из русских слов, набранных заглавными буквами и раз-деленных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, разделенные одним пробелом и расположенные в алфавитном порядке.

 

№ 6. Дано предложение с избыточными пробелами между словами. Преобразовать его так, чтобы между словами был ровно один пробел.

 

№ 7. Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных позициях строки, а затем, в обратном порядке, все символы, расположенные на нечетных позициях (например, строка «Программа» превратится в «ргамамроП»)

 

Приложение 1: Стандартные процедуры и функции для работы со строками

 

Concat (S1, S2, ... , Sn: string): string - возвращает строку, полученную в результате сцепления строк S1, S2, ..., Sn.

 

Copy (S: string, Index, Count: Integer): string - выделяет из строки S подстроку длиной Count символов, начиная с позиции Index.

 

Delete (var S: string, Index, Count: Integer) - удаляет Count символов из строки S, начиная с позиции Index.

 

Insert (Source: string; var S: string, Index: Integer) - вставляет строку Source в строку S, начиная с позиции Index.

 

Length (S: string): Integer - возвращает реальную длину строки S в символах.

 

SetLength (var S: string; NewLength: Integer) - устанавливает для строки S новую длину NewLength.

 

Pos (Substr, S: string): Byte - обнаруживает первое появление подстроки Substr в строке S. Возвращает номер той позиции, где находится первый символ подстроки Substr. Если в S подстроки Substr не найдено, результат равен 0.

 

Примеры:

Применение оператора Значение S
S := Concat ('Object ', 'Pascal'); 'Object Pascal'
S:= Copy ('Debugger', 3, 6); 'bugger'
S := 'Compile';  Delete (S, 1, 3); 'pile'
S := 'Faction'; Insert ('r ', S, 2); 'Fraction'
S := 'Faction'; SetLength (S, 4); 'Fact'
Применение оператора Значение K
S := 'Pascal'; K := Length (S); 6
S := 'Pascal'; K := Pos ('a', S); 2
S := 'Compile'; K := Pos ('a', S); 0

 

Str (X [: Width [: Decimals] ], var S: string) - преобразует числовое значение величины X в строку S. Необязательные параметры Width и Decimals являются целочисленными выражениями. Значение Width задает ширину поля результирующей строки. Значение Decimals используется с вещественными числами и задает количество символов в дробной части.

 

Val (S: string, var V; var Code: Integer) - преобразует строку S в величину целого или вещественного типа и помещает результат в переменную V. Если во время операции преобразования ошибки не обнаружено, значение переменной Code равно нулю; если ошибка обнаружена (строка содержит недопустимые символы), Code содержит номер позиции первого ошибочного символа, а значение V не определено.

 

FloatToStr(const Value: real): string — преобразует вещественное число в строку.

 

IntToStr (Value: Integer): string — преобразует целое число Value в строку.

 

StrToFloat (const S: string): real — преобразует строку в вещественное число.

 

StrToInt (const S: string): Integer — преобразует строку в целое число. Если строка не может быть преобразована в целое число, функция генерирует исключительную ситуацию класса EConvertError

 

Примеры:

Применение оператора Значение S
Str(–200, S); '–200'
Str(200 : 5, S); '  200'
Str(1.5E+02 : 4, S); ' 150'
Применение оператора Значение V Значение Code
Val('100', V, Code); 100 0
Val('2.5E+01', V, Code); 25.0 0
Val('2.5A+01', V, Code); не определено 4

 

Применение оператора Значение K
K:=IntToStr(234); '234' (строка)
K:=FloatToStr(2.076); '2,076' (строка)
K:=StrToInt('-45'); -45 (целое число)
K:=StrToFloat('32,389'); 32,389 (вещественное число)

 

Приложение 2: Подпрограммы обработки строк из модуля SysUtils.

 

·           AdjustLineBreaks(const S: string): string — возвращает копию строки S, в которой все мягкие переносы строк (одиночные символы #13 или #10) заменены жесткими переносами строк (последовательность символов #13#10).

 

·           AnsiCompareStr(const S1, S2: string): Integer — сравнивает две строки, делая различие между заглавными и строчными буквами; учитывает местный язык. Возвращаемое значение меньше нуля, если S1 < S2, равно нулю, если S1 = S2, и больше нуля, если S1 > S2.

 

·           AnsiCompareText(const S1, S2: string): Integer — сравнивает две строки, не делая различий между заглавными и строчными буквами; учитывает местный язык. Возвращаемое значение меньше нуля, если S1 < S2, равно нулю, если S1 = S2, и больше нуля, если S1 > S2.

 

·           AnsiLowerCase(const S: string): string — преобразует заглавные буквы строки S к строчным буквам с учетом местного языка.

 

·           AnsiPos(const Substr, S: string): Integer — выполняет те же действия, что и функция Pos, но в отличие от нее поддерживает работу с многобайтовой MBCS-кодировкой.

 

·           AnsiSameStr(const S1, S2: string): Boolean — сравнивает строки, делая различие между строчными и заглавными буквами; учитывает местный язык.

 

·                AnsiSameText(const S1, S2: string): Boolean — сравнивает строки, не делая различие между строчными и заглавными буквами; учитывает местный язык.

 

·           AnsiUpperCase(const S: string): string — преобразует все строчные буквы в заглавные; учитывает местный язык.

 

·           CompareStr(const S1, S2: string): Integer — выполняет сравнение двух строк, делая различие между строчными и заглавными буквами; не учитывает местный язык. Возвращаемое значение меньше нуля, если S1 < S2, равно нулю, если S1 = S2, и больше нуля, если S1 > S2.

 

·           CompareText(const S1, S2: string): Integer — выполняет сравнение двух строк, не делая различий между строчными и заглавными буквами; не учитывает местный язык. Возвращаемое значение меньше нуля, если S1 < S2, равно нулю, если S1 = S2, и больше нуля, если S1 > S2.

 

·           DateTimeToStr(const DateTime: TDateTime): string — преобразует значение даты и времени в строку.

 

·           DateTimeToString(var Result: string; const Format: string; DateTime: TDateTime) — преобразует значение даты и времени в строку, выполняя при этом форматирование в соответствии со значением строки Format. Управляющие символы строки Format подробно описаны в справочнике по среде Delphi.

 

·           DateToStr(const DateTime: TDateTime): string — преобразует числовое значение даты в строку.

 

·           Format(const Format: string; const Args: array of const): string — форматирует строку в соответствии с шаблоном Format, заменяя управляющие символы шаблона на значения элементов открытого массива Args. Управляющие символы подробно описаны в справочнике по среде Delphi.

 

·           FormatDateTime(const Format: string; DateTime: TDateTime): string — преобразует значение даты и времени в строку, выполняя при этом форматирование в соответствии со значением строки Format. Управляющие символы строки Format подробно описаны в справочнике по среде Delphi.

 

·           BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string — преобразует булевское значение в строку. Если параметр UseBoolStrs имеет значение False, то результатом работы функции является одно из значений '0' или ‘–1’. Если же параметр UseBoolStrs имеет значение True, то результатом работы является одно из значений ‘FALSE’ или ‘TRUE’ (программист может задать другие значения; о том, как это сделать, читайте в справочнике по системе Delphi).

 

·           IntToHex(Value: Integer; Digits: Integer): string — возвращает шестнадцатиричное представление целого числа Value. Параметр Digits задает количество цифр результирующей строки.

 

·           IntToStr(Value: Integer): string — преобразует целое число Value в строку.

·           IsDelimiter(const Delimiters, S: string; Index: Integer): Boolean — проверяет, является ли символ S[Index] одним из символов строки Delimiters. Функция поддерживает работу с многобайтовой MBCS-кодировкой.

 

·           IsValidIdent(const Ident: string): Boolean — возвращает True, если строка Ident является правильным идентификатором языка Delphi.

 

·                LastDelimiter(const Delimiters, S: string): Integer — возвращает индекс последнего вхождения одного из символов строки Delimiters в строку S.

 

·           LowerCase(const S: string): string — преобразует все заглавные буквы строки S к строчным; не учитывает местный язык (в преобразовании участвуют лишь символы в диапазоне от 'A' до 'Z').

 

·                QuotedStr(const S: string): string — преобразует исходную строку в строку, взятую в одиночные кавычки; внутри строки символы кавычки дублируются.

 

·           SameText(const S1, S2: string): Boolean — сравнивает строки, не делая различие между строчными и заглавными буквами; учитывает местный язык.

 

·           StringOfChar(Ch: Char; Count: Integer): string — возвращает строку, в которой повторяется один и тот же символ. Количество повторений задается параметром Count.

 

·           StrToBool(const S: string): Boolean — преобразует строку в булевское значение.

 

·           StrToBoolDef(const S: string; const Default: Boolean): Boolean — преобразует строку в булевское значение. В случае невозможности преобразования, функция возвращает значение, переданное через параметр Default.

 

·           StrToDate(const S: string): TDateTime — преобразует строку со значением даты в числовой формат даты и времени.

 

·           StrToDateDef(const S: string; const Default: TDateTime): TDateTime — преобразует строку со значением даты в числовой формат даты и времени. В случае невозможности преобразования, функция возвращает значение, переданное через параметр Default.

 

·           StrToDateTime(const S: string): TDateTime — преобразует строку в числовое значение даты и времени.

 

·           StrToDateTimeDef(const S: string; const Default: TDateTime): TDateTime — преобразует строку в числовое значение даты и времени. В случае невозможности преобразования, функция возвращает значение, переданное через параметр Default.

 

·           StrToInt(const S: string): Integer — преобразует строку в целое число. Если строка не может быть преобразована в целое число, функция генерирует исключительную ситуацию класса EConvertError

 

·           StrToIntDef(const S: string; Default: Integer): Integer — преобразует строку в целое число. Если строка не может быть преобразована в целое число, функция возвращает значение, заданное параметром Default.

 

·           StrToInt64(const S: string): Int64 — 64-битный аналог функции StrToInt — преобразует строку в 64-битное целое число. Если строка не может быть преобразована в 64-битное число, функция генерирует исключительную ситуацию класса EConvertError.

 

·           StrToInt64Def(const S: string; const Default: Int64): Int64 — 64-битный аналог функции StrToIntDef — преобразует строку в 64-битное целое число. Если строка не может быть преобразована в 64-битное число, функция возвращает значение, заданное параметром Default.

 

·           StrToTime(const S: string): TDateTime — преобразует строку в числовой формат времени. Если строка не может быть преобразована в числовой формат времени, функция генерирует исключительную ситуацию класса EConvertError.

 

·           StrToTimeDef(const S: string; const Default: TDateTime): TDateTime — преобразует строку в числовой формат времени. В случае ошибки преобразования, функция возвращает значение, заданное параметром Default.

 

·           TimeToStr(Time: TDateTime): string — преобразует числовое значение времени в строку.

 

·           Trim(const S: string): string — возвращает часть строки S без лидирующих и завершающих пробелов и управляющих символов.

 

·           Trim(const S: WideString): WideString — Unicode-аналог функции Trim — возвращает часть строки S без лидирующих и завершающих пробелов и управляющих символов.

 

·           TrimLeft(const S: string): string — возвращает часть строки S без лидирующих пробелов и управляющих символов.

 

·           TrimLeft(const S: WideString): WideString — Unicode-аналог функции TrimLeft — возвращает часть строки S без лидирующих пробелов и управляющих символов.

 

·           TrimRight(const S: string): string — возвращает часть строки S без завершающих пробелов и управляющих символов.

 

·           TrimRight(const S: WideString): WideString — Unicode-аналог функции TrimRight — возвращает часть строки S без завершающих пробелов и управляющих символов.

 

·           UpperCase(const S: string): string — преобразует все строчные буквы строки S в заглавные; не учитывает местный язык (в преобразовании участвуют лишь символы в диапазоне от 'a' до 'z').

 

·           WideFormat(const Format: WideString; const Args: array of const): WideString — Unicode-аналог функции Format, учитывающий символы местного языка, — форматирует строку в соответствии с шаблоном Format, заменяя управляющие символы в шаблоне на значения элементов открытого массива Args. Управляющие символы подробно описаны в справочнике по системе Delphi.

 

·           WideFmtStr(var Result: WideString; const Format: WideString; const Args: array of const) — аналог функции WideFormat. Отличие в том, что WideFmtStr возвращает результат через параметр Result, а не как значение функции.

 

·           WideLowerCase(const S: WideString): WideString — Unicode-аналог функции LowerCase (учитывает местный язык) — преобразует все заглавные буквы строки S к строчным буквам.

 

·           WideSameCaption(const Text1, Text2: WideString): Boolean — Unicode-аналог функции AnsiSameCaption — сравнивает две строки, не делая различие между строчными и заглавными буквами, а также не учитывая символ ‘&’; учитывает местный язык.

 

·           WideSameStr(const S1, S2: WideString): Boolean — Unicode-аналог стандартной операции сравнения строк — сравнивает две строки, делая различие между строчными и заглавными буквами.

 

·           WideSameText(const S1, S2: WideString): Boolean — Unicode-аналог функции SameText (учитывает местный язык) — сравнивает строки, не делая различие между строчными и заглавными буквами.

 

·           WideUpperCase(const S: WideString): WideString — Unicode-аналог функции UpperCase (учитывает местный язык) — преобразует все строчные буквы строки S в заглавные.

 

·           WrapText(const Line: string; MaxCol: Integer = 45): string — разбивает текст Line на строки, вставляя символы переноса строки. Максимальная длина отдельной строки задается параметром MaxCol.

 

·           WrapText(const Line, BreakStr: string; const BreakChars: TSysCharSet; MaxCol: Integer): string — более мощный аналог предыдущей функции — разбивает текст Line на строки, вставляя символы переноса строки.

 

Приложение 3: Функции, созданные программистом

Объявление функции:

function <имя функции> ( <список формальных параметров> ): <тип возвращаемого значения> ;

<локальные объявления>

const ...;

type ...;

var ...;

<вложенные подпрограммы>

Begin

<операторы>

end;

<имя функции> - любой корректный идентификатор

<операторы> - операторы, которые будут выполнены при вызове функции

<список формальных параметров>, <локальные объявления> могут отсутствовать

 

Вызов функции:

Вызов функции для выполнения осуществляется по ее имени, за которым в круглых скобках следует список фактических параметров, т.е. передаваемых в процедуру данных:

<переменная> := <имя функции> ( <список фактических параметров> );

 

В теле функции должен быть, по крайней мере, один оператор, присваивающий значение имени функции или неявной локальной переменной Result. Если такого оператора нет, то значение функции будет не определено.

 

Пример:

       Type TArr = array[1..5] of real;

       Const Arr: TArr = (2, 3, 5, 7, 1);

     Var A: real;

       function Average(M: TArr): real;

       var k: byte;

       begin Result:= 0;

       For k := 1 to 5 do Result:= Result +M[k];

       Result:= Result/ 5;

       end;

 

       begin

       A := Average(Arr); Writeln ('Среднее арифметическое = ', A:6:2);

       end.

 



Приложение 4: Процедуры, созданные программистом

Объявление процедуры:

procedure <имя процедуры> ( <список формальных параметров> );

<локальные объявления>

const ...;

type ...;

var ...;

<вложенные подпрограммы>

Begin

<операторы>

end;

 

<имя процедуры> - любой корректный идентификатор

<операторы> - операторы, которые будут выполнены при вызове процедуры

<список формальных параметров>, <локальные объявления> могут отсутствовать

Список формальных параметров – последовательность объявлений однотипных параметров. Объявления отделяются друг от друга точкой с запятой. Каждое объявление состоит из списка имен параметров, символа ':' и указания их типа. Внутри объявления имена параметров разделяются запятой.

 

Вызов процедуры:

Вызов процедуры для выполнения осуществляется по ее имени, за которым в круглых скобках следует список фактических параметров, т.е. передаваемых в процедуру данных:

<имя процедуры> ( <список фактических параметров> );

 

Пример:

       Var A, G: real;

       procedure Average(X, Y: real; var M, P: real);

       begin

       M := (X + Y) / 2; P := Sqrt(X * Y);

       end;

 

       begin

       Average(10, 20, A, G);

          Writeln ('Среднее арифметическое = ', A:6:2);

       Writeln ('Среднее геометрическое = ', G:6:2);

       end.










Последнее изменение этой страницы: 2018-06-01; просмотров: 195.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...