Процедуры пользователя
Операции над множествами. 1. Объединением 2-х множеств A и B называется множество,состоящее из эелементов, входящих хотя бы в одно множество А и В. Знак операции объединения в Паскале «+». A BОбъединение
Примеры: 1)[1,2,3,4]+[3,4,5,6]=>[1,2,3,4,5,6]; 2)[ ]+[‘a’..’z’]+[‘A’..’E’,’k’]=>[‘A’..’E’,’a’,’z’] 2. Пересечением 2 множеств А и В называется множество, состоящее из элементов, одновременно входящих во множество А и во множество В. Знак операции пересечения в Паскале «*». А В
[1,2,3,4]*[3,4,5,6]=>[3,4]; [‘a’..’z’]+[‘A’’E’,’k’]=>[‘k’]
3. Разностью 2-х множеств А и В называется множество, состоящее из элементов множества А, не входящих в множество В. А В А В
А-В В-А Примеры: 1)[1,2,3,4]-[3,4,5,6]=>[1,2]: 2)[3,4,5,6]-[1,2,3,4]=>[5,6]; 3) [‘a’..’z’]+[‘A’’E’,’k’]=>[‘a’] Операции вхождения Это операция, устанавливающая связь между множеством и скалярной величиной, тип которой совпадает с базовым типом множества. Если х-такая скалярная величина, а М-множество, то операция вхождения записывается так: xinM. Результат-логическая величина true, если значение х входит во множество М и false – в противном случае. Например, 4 in [3,4,7,9]- -true,5 in [3,4,7,9]- -false Задача. Дана строка Сохранить в ней только первые вхождения символов, удалив все остальные. Program ss; Var m:set of char; s:string; i:byte; begin write(‘Введитестроку ’);readln(s); m:=_; i:=1; whilei<=…. Clrscr;//Очищаемэкран
22. Подпрограммы в языке Pascal: понятие подпрограммы, функция пользователя в языке Pascal. Подпрограммы Язык программирования Pascal позволяет разделять программу на отдельные части, которые называются подпрограммами. Сам термин подпрограмма говорит о том, что она подобна и подчинена основной программе. Подпрограммы решают три важные задачи, значительно облегчающие программирование: 1)избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты, т. е. сократить объем программы; 2)улучшают структуру программы, облегчая понимание при разборе; 3)уменьшают вероятность появления ошибок, повышают устойчивость к ошибкам программирования и непредвиденным последствиям при модификации. Таким образом, подпрограмма- это повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы. Она записывается однократно, а в соответствующих местах программы обеспечивается лишь обращение к ней по имени. Сформулируем общие принципы выделения подпрограмм: * Если вы в программе повторяются одни и те же последовательности команд, то стоит эту последовательность команд оформить в виде подпрограммы. * Иногда слишком много мелочей закрывают главное. Стоит перенести в подпрограмму подробности, заслоняющие основной смысл программы. * Слишком большую программу полезно разбить на составные части - подобно тому, как книгу разбивают на главы. При этом основная программа становится похожей на оглавление. * При решении задачи могут возникать слишком сложные подзадачи. Целесообразней отладить их отдельно в небольших программах. Добавление этих программ в основную задачу будет легким, если они оформлены как подпрограммы. * Все, что вы сделали хорошо в одной программе, вам захочется перенести в новые программы. Для повторного использования частей кода лучше сразу выделять в программе полезные вам подзадачи в виде отдельных подпрограмм. Подпрограммы могут быть: 1. встроенные (стандартные). Они входят в состав языка и вызываются для выполнения по строго фиксированному имени. Все стандартные средства располагаются в специализированных библиотечных модулях, которые имеют системные имена. 2.определенные пользователем. Они разрабатываются и именуются самим пользователем. В языке Pascal механизм подпрограмм реализуется в виде ПРОЦЕДУР и ФУНКЦИЙ, которые вводятся в программу с помощью своего описания, но их структура такая же, как и структура программы. Они различаются назначением и способом их использования. Функция пользователя Функция — это независимая именованная часть программы, которую можно вызвать по имени для выполнения определенных действий. Функция, определяется пользователем, состоит из заголовка и тела функции. Заголовок состоит из зарезервированного слова function, далее идентификатор(имя) функции, заключенные в крупные скобки, необязательный список формальных параметров и тип возвращаемого функцией значения. Функция сходна с процедурой, но имеет четыре отличия: (Отличие в том, что функция является выражением, которое присваивается какой-то переменной) * Функция возвращает в точку вызова только единственный результат; * в качестве формальных параметров у функции могут быть только параметры-значения; * в теле функции имени функции обязательно нужно присвоить результат, которое является скалярным значением; * вызов функции осуществляется только в выражениях. Функция оформляется в следующем формате: function<имя функции> (<формальные параметры>): <тип функции>; label …; const ...; type ...; var ...; procedure … ; function… ; begin <операторы> ; <имя функции>:=<результат>; end; В разделе операторов должен присутствовать хотя бы 1 оператор. Обращение к функции осуществляется по имени обязательно с указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам, указанным в заголовке описания функции, и иметь тот же тип. В точку вызова возвращается результат последнего присваивания (имени функции значения). ПРИМЕР 1. Написать программу нахождения минимума 4-ех произвольных чисел, используя функцию нахождения минимума из двух чисел. program m; ПРИМЕР 2 Program pr5; Uses crt; Varx,y:real; Function min(a,b:real):real; Begin If a>b then min:=b else min:=a; End; Begin Clrscr; Write(‘Введитедвачисла: ’);readln(x,y); y:=min(x,y); writeln(‘Введитетретьечисло: ’); readln(x); y:=min(x,y); writeln(‘Введите четвертое число: ’); readln(x); writeln(‘Минимум этих чисел =’,min (x,y):4:1); readln; end.
22. Подпрограммы в языке Pascal: понятие подпрограммы, процедура пользователя в языке Pascal. Подпрограммы Язык программирования Pascal позволяет разделять программу на отдельные части, которые называются подпрограммами. Сам термин подпрограмма говорит о том, что она подобна и подчинена основной программе. Подпрограммы решают три важные задачи, значительно облегчающие программирование: 1)избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты, т. е. сократить объем программы; 2)улучшают структуру программы, облегчая понимание при разборе; 3)уменьшают вероятность появления ошибок, повышают устойчивость к ошибкам программирования и непредвиденным последствиям при модификации. Таким образом, подпрограмма- это повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы. Она записывается однократно, а в соответствующих местах программы обеспечивается лишь обращение к ней по имени. Сформулируем общие принципы выделения подпрограмм: * Если вы в программе повторяются одни и те же последовательности команд, то стоит эту последовательность команд оформить в виде подпрограммы. * Иногда слишком много мелочей закрывают главное. Стоит перенести в подпрограмму подробности, заслоняющие основной смысл программы. * Слишком большую программу полезно разбить на составные части - подобно тому, как книгу разбивают на главы. При этом основная программа становится похожей на оглавление. * При решении задачи могут возникать слишком сложные подзадачи. Целесообразней отладить их отдельно в небольших программах. Добавление этих программ в основную задачу будет легким, если они оформлены как подпрограммы. * Все, что вы сделали хорошо в одной программе, вам захочется перенести в новые программы. Для повторного использования частей кода лучше сразу выделять в программе полезные вам подзадачи в виде отдельных подпрограмм. Подпрограммы могут быть: 1. встроенные (стандартные). Они входят в состав языка и вызываются для выполнения по строго фиксированному имени. Все стандартные средства располагаются в специализированных библиотечных модулях, которые имеют системные имена. 2.определенные пользователем. Они разрабатываются и именуются самим пользователем. В языке Pascal механизм подпрограмм реализуется в виде ПРОЦЕДУР и ФУНКЦИЙ, которые вводятся в программу с помощью своего описания, но их структура такая же, как и структура программы. Они различаются назначением и способом их использования. Процедуры пользователя Процедура — это независимая именованная часть программы, которую можно вызвать по имени для выполнения определенных действий. Подпрограмма – это фрагмент программы, реализующий решение подзадачи и имеющий свое имя. Подпрограмму можно неоднократно вызывать из разных частей программы. При вызове подпрограммы (процедуры или функции), определенной программистом, работа главной программы на некоторое время приостанавливается и начинает выполняться вызванная подпрограмма. Она обрабатывает данные, переданные ей из главной программы. По завершении выполнения подпрограмма-функция возвращает главной программе результат (подпрограмма-процедура не возвращает явно результирующего значения). Процедура оформляется в разделе процедур и имеет почти ту же структуру, что и программа. Разница состоит только в оформлении заголовка процедуры, процедура не должна содержать раздел библиотек и в конце после служебного слова end ставится точка с запятой. Процедура не может выступать в качестве операнда в выражении. Процедура оформляется в следующем формате: procedure<имя> (<формальные параметры>); label …; const ...; type ...; var ...; procedure … ; function … ; begin <операторы> ; end; Вызов процедуры: <имя процедуры>(<фактические параметры>); При вызове процедуры фактические параметры присваиваются соответствующим формальным параметрам. Переменные определенные в процедуре, действуют только в этой процедуре. Они называются локальными. А переменные, определенные в программе, автоматически определенны и в процедуре. Они называются глобальными. Формальные параметры — это переменные, определенные в заголовке подпрограммы и определяющие тип и место подстановки фактических параметров. Фактические параметры - это выражения, задающие конкретные значения при обращении к подпрограмме. При обращении к подпрограмме ее формальные параметры замещаются фактическими, переданными из главной программы. ВНИМАНИЕ: число и тип формальных и фактических параметров должны совпадать с точностью до их следования! Формальные параметры делятся на два основных вида: параметры-переменные и параметры-значения. Параметры-переменные в языке Pascal - это те формальные параметры, перед которыми стоит служебное слово var. Они предназначены для передачи результатов, полученных в процедуре, в программу. Параметры-значения - перед ними слово var не ставится, они передают данные из программы в процедуру. Формальные параметры описываются внутри заголовка процедуры следующим образом: <имя>: <тип>, <имя>: <тип>, … ;var<имя>: <тип>, ... где имя — имя формального параметра, тип — тип формального параметра. При этом тип формального параметра обязательно должен быть стандартным или типом, объявленным пользователем. Это означает, что нельзя в качестве формального параметра напрямую использовать массив. Например: a: array [1..10] ofreal Надо сначала объявить тип массива и затем описать формальный параметр типа массива. Например: Type mas: array [1 .. 10] of real; Procedure matrica(a: mas); … Если формальный параметр объявлен как параметр-значение, то фактическим параметром может быть или постоянная, или переменная, или выражение. А если формальный параметр объявлен как параметр-переменная, то фактическим параметром должна быть обязательно только переменная!. ПРИМЕР 1. Написать программу нахождения максимума четырех произвольных чисел, используя процедуру нахождения максимума из двух чисел. ВАРИАНТ 1. (процедура с параметрами-значений и параметрами-переменными) Program pr3; Uses crt; Var a, b, m1, m2, m3: real; procedure max( x, y : real; var m : real); begin if x>y then m:=x else m:=y end; Begin Clrscr; Write (' Введитедвачисла: '); Readln(a,b); max(a,b,m1); Write (' Введите третье число: '); Readln(a); max(a,m1,m2); Write ('Введите четвертое число: '); Readln(a); max(a,m2,m3); writeln('Максимум этих четырех чисел = ', m3:4:1); Readln; End. ВАРИАНТ 2. (процедура без параметров) Program pr1; Uses crt; Var a, b, m: real; procedure max; begin if a>b then m:=a else m:=b end; Begin Clrscr; Write (' Введитедвачисла: '); Readln (a,b); max; b:=m; Write (' Введите третье число: '); Readln (a); max; b:=m; Write ('Введите четвертое число: '); Readln (a); max; writeln('Максимум этих четырех чисел = ', m:4:1); Readln; End. 24.Рекурсия - это такой способ организации вычислительного процесса, при котором процедура или ф-ция в ходе выполнения составляющих ее операторов обращается сама к себе . Объект, который частично определяется ч/з самого себя , н/ся –рекурсивным Рекурсивные определения как мощный аналитический аппарат используется во многих областях науки , особенно в математике. Для того,чтобы не было бесконечного обращения подпрограммы к самой себе, требуется наличие некоторого условия в тексте подпрограммы , по достижении которого дальнейшее обращение не происходит. Примером рекурсивной задачи может служить вычисление факториала числа. Факториалом натурального числа n называют произведение чисел 1∙2∙…∙n. Это итеративное определение. Существует и другое определение(рекурсивное). Используем эту формулу при написании ф-ции вычисления факториала: Program Rekurs; Var N:integer; functionFakt(х:integer):longint ; begin if x=1 then Fakt:=1 else Fakt:=x*Fakt(x-1 end; begin Write (‘Введите натуральное число:’); Readln(N); Writeln(N,’!=’,Fakt(N)); end.
16.
17. Вложенные циклы. Цикл-это многократное выполнение одинаковой последовательности действий. Очень часто в задачах требуется несколько раз повторить одно и тоже действие. Например, вывести на экран 5 раз слово <школа>. В данном случае в программе придется использовать оператор вывода 5 раз. Например, найти сумму всех натуральных чисел от одного до тысячи. Один из способов решения: S:=1+2+3+4+5+6+7+...+1000 Но тут придется учитывать, что строка в программе не должна превышать 255 символов. Поэтому лучше использовать другой способ решения: S:=0; S:=S+1; S:=S+2; ... S:=S+999; S:=S+1000; В данном случае сумма вычисляется пошагово. Первый раз значение суммы равно 0, далее к предыдущему значению суммы прибавляется 1, сумма стала равна 1. Следующий шаг повторяется – опять к предыдущему значению суммы (=1) прибавляется следующее число, т.е. 2 и.т.д. Здесь придется использовать 1001 раз оператор присваивания. Однако подобные задачи удобно решать, используя операторы цикла. В языке PascalABC.NET имеется три оператора цикла: оператор цикла c параметром (или со счетчиком); оператор цикла с предусловием; оператор цикла с постусловием. Решение задачи без использования оператора цикла: program pr8; var s : integer; begin s:=1+2+3+4+5+6+7+8+9+10; s:=s+11+12+13+14+15+16+17+18+19+20; s:=s+21+22+23+24+25+26+27+28+29+30; s:=s+31+32+33+34+35+36+37+38+39+40; .................................. s:=s+981+982+983+984+985+986+987+988+989+990; s:=s+991+992+993+994+995+996+997+998+999+1000; writeln(' Суммапервых 1000 натуральныхчисел =', s); end. Здесь мы попытались упростить текст программы, но все равно в ней используется 100 операторов присваивания. Решение задачи с использованием оператора цикла со счетчиком: program pr9; vari, s : integer; begin s:=0; fori := 1 to 1000 do s:=s+i; write('Сумма первых 1000 натуральных чисел = ', s) end. В это программе оператор цикла со счетчиком (For) занимает всего одну строку.
Популярное: Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (438)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |