nsutextbook (1037554), страница 8

Файл №1037554 nsutextbook (Методические указания по выполнению лабораторной работы №1) 8 страницаnsutextbook (1037554) страница 82017-12-25СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 8)

P2 вызывается из P1. Переменные x и y существуют только в P2. Передача их значений в вызывающую программуневозможна.Можно использовать команду New в процедурах. При этом переменные, созданные спомощью команды New отличаются от локальных(private) переменных процедур. Команда New используется только для public-переменных, при этом public-переменная, объявленная с помощью New, существует с момента объявления до оператора Quit процедуры,в которой она была объявлена. Таким образом, можно скрыть public-переменные с темиже именами, которые возможно уже существуют на момент вызова процедуры.Например, имеем код в файле abc.Mac:abcset name="Tom"do MyProc(9,4)write !,"abc name= ", nameMyProc(x,y)[name]{New nameSet name="John"write !,"MyProc name = ",nameDo xyz()Quit}xyz()[name]{ write !,"xyz name = ",name}В данном примере процедуре “xyz” в программе “abc” позволяется видеть значение“John” переменной name, т.к.

name – public-переменная. Вызов команды New для переменной name защитит (скроет) public-переменную с именем “name” и со значением “Tom”,которая уже существует к моменту вызова “MyProc”.В результате вызова программы ^abc будет напечатано:MyProc name = Johnxyz name = Johnabc name= Tom3.3.8. Передача параметровПередача параметров происходит при:• Глобальном или локальном вызове программы• Вызове пользовательской функции• Вызове процедуры.Формы передачи параметров:• По значению33•По ссылке.3.3.10. Передача по значениюПри передаче по значению формальные параметры в начале вызываемой программыподчиняются неявной команде New.

При завершении вызываемой программы выполняется неявная команда Kill. Т.е. формальные параметры существуют только внутри вызываемой программы. Пример:Set a=1, b=2, c=3Do p1(a,b,c) // фактические параметрыwrite…P1(r,s,t)// формальные параметрыSet summ = r+s+tQuitПри вызове подпрограммы список фактических параметров должен точно соответствовать списку формальных параметров. Отдельные фактические параметры могут отсутствовать, однако запятые, обозначающие пропуск параметра должны быть поставлены.3.3.11.

Передача по ссылкеСинтаксис передачи по ссылке – это точка перед именем переменной в списке параметров. Переменная может, в отличие от метода, не существовать. Пример:Kill var// var не существуетDo P1(.var)// вызов с передачей параметра по ссылке…P1(x)// формальный параметр xSet x=0, x(1)=1, x(2), x(3)=3…QuitПосле выхода из подпрограммы P1 в основной программе существуют переменныеvar, var(1), var(2), var(3).При вызове подпрограммы обе формы передачи параметров могут смешиваться:Do ^Summ(a, b, c, .var)3.3.12.

Процедуры, программы, подпрограммы, функции, методы. Отличия и особенностиНаиболее гибкой и мощной формой является пользовательский блок, оформленный ввиде процедуры. Особенности процедур:• Может быть private или public.• Может иметь ноль или более аргументов.• Любые внутренние переменные процедуры являются локальными.• Может изменять внешние переменные или ссылаться на них.• Может возвращать значение любого типа или не возвращать ничего.Для сравнения:•Подпрограмма всегда является public и не может возвращать значение.•Функция всегда является public; требует явного объявления локальных переменных, иначе перекрывает внешние переменные; должна возвращать значение.•По умолчанию, метод является процедурой, которая объявляется как частьопределения класса.•Программа Caché ObjectScript может включать одну или более процедур,подпрограмм, функций, так же и различные их комбинации.34Замечание: ObjectScript также поддерживает особую форму пользовательского кода спомощью механизма макровызовов.3.4.

Оператор косвенности @Оператор косвенности позволяет преобразовать строку символов в программный кодв четырех четко описанных случаях:• Косвенное имя: преобразование в имя (например, переменной).• Косвенный аргумент: преобразование в полный аргумент команды.• Индексная косвенность: преобразование в индексированную переменную.• Косвенный шаблон: преобразование в шаблон при проверке по шаблону.3.4.1.

Косвенное имяСтрока преобразуется в имя переменной или имя программы.Пример:Set pname=”Prog1”do @pname // будет вызвана программа с именем Prog1Set var=”locvar”Set @var=4 // переменной с именем locvar будет присвоено число 43.4.2. Косвенный аргументСтрока преобразуется в аргумент команды, за исключением for, который косвенности не допускает.Пример:Set isetarg=”x=1”, @isetarg // set x=1Set ikill=”(e,f,g)”Kill @ikillSet inew=”(a,b,c)” New @inew3.4.3. Индексная косвенностьСлужит для расширения имен глобальных и локальных переменных. Ее синтаксический признак – дважды встречающийся оператор косвенности. Первый из них преобразуетидущую вслед за ним строку в имя переменной, второй добавляет к полученному именизаданный в скобках индекс (или индексы):Пример:Set x(2, 5,3)=“IndInd”Set feld=”x(2,5)”, d1=3Write @feld@(d1)Будет напечатано:IndIndМы видим расширение ссылки x(2,5) индексом третьего уровня со значением 3.3.4.4.

Косвенный шаблонС помощью косвенного шаблона появляется возможность при сравнении по шаблонурассматривать полный шаблон косвенно. Пример:Set lvmuster=”1.3N”If eingabe ‘?@lvmuster Do error353.5. Работа со строкамиТак как данные в Caché хранятся как строки, то работа со строками имеет большоезначение. COS не является языком строгой типизации, в отличие от большинства известных языков программирования. Все значения данных интерпретируются с соответствии сконтекстом, в котором они используются. При этом имена переменных чувствительны крегистру букв, в то время как команды нет.

Примеры интерпретации данных в соответствии с контекстом приведены ниже.SAMPLES>set x = 4 write x + 26SAMPLES>set x = "5" write x * 210SAMPLES>set x = "fred" write x + 33SAMPLES>set x = "32hut" write x / 48SAMPLES>write +x32SAMPLES>write 5 + 2, ?10, "5" + "2" , ?20, "5 + 2"775+2SAMPLES>3.5.1. Сохранение строк на дискеДля сохранения строки на диске перед именем переменной нужно поставить ^ (циркумфлекс). В этом случае, если удалить все переменные с помощью команды kill, глобальные переменные сохраняются. Пример:SAMPLES>set x = 4SAMPLES>set ^x = "Глобальная переменная"SAMPLES>killSAMPLES>writeSAMPLES>write ^xГлобальная переменнаяДля удаления глобальной переменной введите: SAMPLES > kill ^x.3.5.2. Операторы для строкДля строк определены два оператора:( _ ) – оператор конкатенации, сцепления строк(?) – оператор соответствия шаблону, один из наиболее интересных операторов Cache Object Script.3.5.3.

Оператор соответствия шаблону – ?Оператор ? – используется в логических выражениях и проверяет соответствие строки шаблону. Синтаксис:<Строка> ?<шаблон>Если соответствует, то выражение возвращает 1 (true), если нет то 0 (false).Шаблон состоит из одного или нескольких шаблонов, следующего вида:<кол-во><чего>[<кол-во><чего>]где <кол-во> это фактор повторения шаблона, <чего> – класс символов, которые могут повторяться. В табл.

4 приведены форматы факторов повторения, в табл.5 классы символов.36Таблица 4Форматы факторов повторенияКол-во3(число)ЗначениеШаблон должен повторяться ровно столько раз1.3Шаблон должен повторяться от 1 до 3 раз.3Шаблон должен повторяться самое большее 3 раза3.Шаблон должен повторяться не меньше 3 раз.Шаблон должен повторяться любое число, включая 0Таблица 5Классы символовКодЗначениеКодЗначениеAБуква (в верхнем или нижнемрегистре)CУправляющий символUБуква в верхнем регистреEЛюбой символLБуква в нижнем регистреANP Комбинация кодовNЧисло"abd" Литеральная строкаPПунктуацияПримеры:1.

348?3N – выдаст истину, т.к. строка – это 3 цифры.2. в переменной date находится дата в формате дд.мм.гггг. Следующая строка кодаможет служить проверкой правильности даты:if date?2N1P2N1P4N write “Ввод даты верен”.3. Для даты также может использовать следующий шаблон: 2N1”.”2N1”.”4N.4. 1U.AP – первый символ – прописная буква, остальные любое количество букв изнаков препинания.3.5.4.

Функции для работы со строкамиСо строками работают следующие основные функции:$Length(<строка>,[<разделитель>]) – возвращает длину строки или число подстрокстроки, если указан второй параметр.$Extract(<строка>,<выр2>,<выр3>) – возвращает подстроку из строки, начало и конец которой определяются вторым и третьим аргументом.$Find(<строка>,<подстрока>,<позиция>) – ищет подстроку в строке и возвращаетпозицию символа следующего за подстрокой, третий аргумент задает начальную позициюдля поиска.$Piece(<строка>,<разделитель>,<начало>,<конец>) – рассматривает строку как набор подстрок, разделенных разделителями, возвращает нужную подстроку, находящуюсямежду начальным и конечным разделителями.

Второй аргумент задает номер начальногоразделителя, третий аргумент – задает номер конечного разделителя.$Justify(<строка или числ выражение>,<длина>,<позиция точки>) – выравниваниечисла, которое может быть задано в виде строки заданной длины, с указанием нужногоколичества цифр после точки.Каждая из этих функций имеет альтернативную форму, см. документацию по Caché.Подобно командам функции не чувствительны к регистру букв.37SAMPLES>write $length("Длина этой строки?")18SAMPLES>write $extract("Клад в горах", 8, 12)горах ; извлечь символы с 8 по 12SAMPLES>write $find("Клад в горах", "гор")11SAMPLES>write $piece("кусочек пиццы", " ", 2)пиццыSAMPLES>write $justify(3.1415, 10, 3)3.142Функция $Piece уникальна и требует дополнительного обсуждения.

Эта функция работает со строкой, использующей разделители, например: «22-55-77», где “-“ – разделитель. Она может возвращать пустую строку, если строка находится между двумя разделителями. Сама строка рассматривается как запись, а подстроки как поля этой записи. $Pieceрассматривает передаваемую в виде первого аргумента строку символов как последовательность полей, разделенных разделителем, передаваемым в качестве второго аргумента.В форме с двумя аргументами функция возвращает первое поле:$Piece(<строка>, <разделитель>[, ])Например:SAMPLES>write $piece("кусочек пиццы", " ")кусочекВ форме с тремя аргументами функция возвращает заданное третьим аргументомполе:SAMPLES>write $piece("кусочек пиццы ", "ц", 1)кусочек пиSAMPLES>set street=$piece("Новосибирск^Русская^35^630058", "^", 2)SAMPLES>write streetРусскаяВ форме с четырьмя аргументами – поля в области от аргумента три до аргументачетыре:SAMPLES>write $piece("Новосибирск^Русская^35^630058", "^",2,3)Русская^35Также заметим, что $Length имеет ориентированный на такие строки вариант: онавозвращает число подстрок в такой строке, базирующейся на разделителях.SAMPLES>write $length("Новосибирск^Русская^35^630058", "^")43.5.5.

Характеристики

Тип файла
PDF-файл
Размер
2,42 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее