Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системне програмне забезпечення.doc
Скачиваний:
4
Добавлен:
27.10.2018
Размер:
333.82 Кб
Скачать

Правила для пропуска значений параметров

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

Задание значений по умолчанию

Когда вы определяете функцию, C++ позволяет вам указать значения по умолчанию для одного или нескольких параметров. Если программа в дальнейших вызовах этой функции опускает один или несколько параметров, то функция будет использовать для них значения по умолчанию. Чтобы присвоить параметру значение по умолчанию, просто используйте оператор присваивания внутри определения функции. Например, следующая функция payroll указывает значения по умолчанию для параметров hours и rate:

float payroll(int employ_id, float hours = 40, float rate = 5.50)

{

   // операторы }

Когда программа опускает один параметр, она должна опускать все последующие параметры.

ЛОКАЛЬНЫЕ переменные подразделяются на АВТОМАТИЧЕСКИЕ и СТАТИСТИЧЕСКИЕ.

Автоматические переменные уничтожаются сразу после завершения того блока, в котором они описаны.

Автоматические переменные описываются со словом auto.

auto float с;

По умолчанию все переменные являются автоматическими, поэтому префикс auto можно не указывать.

Статистические переменные сохраняют свое значение на случай, если блок (функция) когда-нибудь будет выполнен во второй раз.

Для описания статистических переменных используется префикс static.

{

static int i=l;

}

Инициализация переменной происходит только при первом обращении к блоку (функции). Если Вы не проинициализируете переменную, то C++ сам обнулит ее при первом обращении.

  1. С++. Файлові операції над масивами і структурами.

Операції над масивами

Сортування масивів

У PHP для цього існує дуже багато функцій. З їх допомогою можна сортувати асоціативні масиви і списки в порядку зростання або убування, а також у тому порядку, в якому вам необхідно - за допомогою користувацької функції сортування.

Сортування масиву за значеннями за допомогою функцій asort() і arsort():

Функція asort() сортує масив, вказаний в її параметрі, так, щоб його значення йшли в алфавітному (якщо це рядки) або у зростаючому (для чисел) порядку. При цьому зберігаються зв'язки між ключами та відповідними їм значеннями, тобто деякі пари ключ=>значення просто "спливають" вгору, а деякі - навпаки, "опускаються"

Функція arsort() виконує те ж саме, за одним винятком: вона впорядковує масив не за зростанням, а за спаданням.

Сортування по ключам за допомогою функцій ksort() и krsort():

Функція ksort()практично ідентична функції asort(), з тїєю відмінністю, що сортування здійснюється не за значеннями, а за ключами (у порядку зростання).

Функція для сортування за ключам у зворотному порядку називається krsort() і застосовується точно в такому ж контексті, що і ksort().

Сортування по ключам за допомогою функції uksort():

Досить часто нам доводиться сортувати щось за більш складного критерію, ніж просто за алфавітом. Наприклад, нехай у $Files зберігається список імен файлів і підкаталогів в поточному каталозі. Можливо, ми захочемо вивести цей список не тільки в лексикографічному порядку, але також і щоб всі каталоги передували файлів. У цьому випадку нам варто скористатися функцією uksort(), написавши попередньо функцію порівняння з двома параметрами, як того вимагає uksort().

Звичайно, зв'язки між ключами і значеннями функцією uksort() зберігаються, тобто, знову ж таки, деякі пари просто "спливають" вгору, а інші - "осідають".

Сортування за значеннями за допомогою функції uasort()

Функція uasort() дуже схожа на uksort(),з тією різницею, що змінної (користувача) функції сортування "підсуваються" не ключі, а чергові значення з масиву. При цьому також зберігаються зв'язку в парах ключ=> значення.

Перевертання масиву за допомогою функції array_reverce()

Функція array_reverse() повертає масив, елементи якого слідують у зворотному порядку щодо масиву, переданого в параметрі. При цьому зв'язку між ключами і значеннями, звичайно, не губляться.

Звичайно, зазначена послідовність працює довше, ніж один-єдиний виклик arsort().

Сортування списку за допомогою функцій sort() и rsort()

Ці дві функції призначені в першу чергу для сортування списків.

Функція sort() сортує список (зрозуміло, за значеннями) у порядку зростання, а rsort() — в порядку спадання. Приклад для функції sort():

Функція shuffle() "перемішує" список, переданий їй першим параметром, так, щоб його значення розподілялися випадковим чином. Зверніть увагу, що, по-перше, змінюється сам масив, а по-друге, асоціативні масиви воспріімаются як списки.

Наведений фрагмент коду виводить числа 10, 20, 30, 40 і 50 </strong> у випадковому порядку.

Виконавши цей фрагмент кілька разів, ви можете виявити, що від запуску до запуску черговість проходження чисел не змінюється. Ця властивість обумовлена тим, що функція shuffle()використовує стандартний генератор випадкових чисел, який перед роботою необхідно ініціалізувати за допомогою виклику srand().

Операції з ключами і значеннями масиву

array_flip(array $arr)

Функція array_flip() "пробігає" по масиву і змінює місцями його ключі і значення. Вихідний масив $arr не змінюється, а результуючий масив просто повертається. Звичайно, якщо в масиві були присутні кілька елементів з однаковими значеннями, враховуватися буде тільки останній з них:

array_keys(array $arr [,mixed $SearchVal])

Функція array_keys() повертає список, що містить всі ключі масиву $arr. Якщо встановлено необов'язковий параметр $SearchVal, то вона поверне тільки ті ключі, яким відповідають значення $SearchVal.

Фактично, ця функція із заданим іншим параметром є зворотнім по відношенню до оператора [] — !!!!!извлеч!!!!! значення за його ключем.

array_values(array $arr)

Функція array_values() повертає список всіх значень в асоціативному масиві $arr. Очевидно, така дія марна для списків, але іноді виправдана для !!!!хешей!!!!

in_array(mixed $val, array $arr)

Функція in_array() повертає true, якщо елемент зі значенням $val присутній в масиві $arr. Втім, якщо вам часто доводиться долати цю операцію, поміркуйте: чи не краще буде скористатися асоціативним масивом і зберігати дані в його ключах, а не в значеннях?

array_count_values(list $List)

Функція array_count_values() підраховує, скільки разів кожне значення зустрічається в списку $List, і повертає асоціативний масив з ключами - елементами списку та значеннями - кількістю повторів цих елементів. Іншими словами, функція array_count_values() підраховує частоту появи значень у списку $List.

  1. С++. Поняття класу мови

Об'єктно-орієнтоване програмування - це новий спосіб підходу до програмування. Таке програмування, узявши кращі риси структурного програмування, доповнює його новими ідеями, які переводять в нову якість підхід до створення програм. Найбільш важливе поняття мов об'єктно-орієнтованого програмування - це поняття об'єкту (object). Об'єкт - це логічна одиниця, яка містить дані і правила (методи) обробки цих даних. У мові С++ як такі правила обробки виступають функції, тобто об'єкт в Borland C++ об'єднує в собі дані і функції, оброблювальні ці дані. Одним з найголовніших понять мови С++ є поняття класу (class). На мові С++ для того, щоб визначити об'єкт, треба спочатку визначити його форму за допомогою ключового слова class. Найближчою аналогією класу є структура. Пам'ять виділяється об'єкту тільки тоді, коли клас використовується для його створення.

Цей процес називається створенням екземпляра класу (class instance). Будь-який об'єкт мови С++ має однакові атрибути і функціональність з іншими об'єктами того ж класу. За створення своїх класів і поведінку об'єктів цих класів повну відповідальність несе сам програміст. Працюючи в деякому середовищі, програміст дістає доступ до обширних бібліотек стандартних класів. Зазвичай, об'єкт знаходиться в деякому унікальному стані, визначуваному поточними значеннями його атрибутів. Функціональність об'єктного класу визначається можливими операціями над екземпляром цього класу. Шаблони, або типи, що параметризуються, дозволяють конструювати сімейство зв'язаних функцій або класів. Узагальнений синтаксис визначення шаблону має вигляд:template список шаблонних типів. Розрізняють шаблони функцій і шаблони класів. Шаблон класів задає зразок визначень сімейства класів. Над елементами цього класу, що типізуються, виконуються однакові базові операції незалежно від конкретного типу елементів.

  1. Інтерфейсна оболонка.

Интерфейсная оболочка YSell предназначена для тех пользователей системы CDS/ISIS, которые непосредственно работают с самой системой.

Главная цель создания оболочки YSell – повысить удобство общения пользователя с системой, освобождая его от необходимости помнить точные имена многочисленных компонент базы данных, таких как рабочие листы, форматы, меню, программы и т.д., и уменьшить объем ввода этих

значений с клавиатуры и переключений клавиатуры с кириллического регистра на латинский и наоборот. Для этого для всех опций системных меню, которые требуют дальнейшего ввода с клавиатуры тех или иных имен, были разработаны меню- программы, подключение которых к системе позволяет заменить ввод с клавиатуры на выбор из меню. Там, где ввода с клавиатуры обойти нельзя, например при задании имени вновь создаваемого формата, оболочка позволяет произвести это без переключения на латинский регистр. Дополнительно оболочка предоставляет возможность при выводе документов на экран с помощью форматов воспроизведения выделять фрагменты выводимого текста разными видеоатрибутами. Наконец, наличие еще одной программы позволяет воспроизводить тексты на экране в их естественном виде и одновременно производить инвертирование выделенных в этих текстах словосочетаний в нормализованной форме.

Оболочка рассчитана на ее использование начиная с версии CDS/ISIS 3.0, не требует наличия дополнительной памяти и, как и сама система, ориентирована на полное интегрирование в многоязыковую среду.

Далее кратко описываются возможности программ оболочки.

Меню-программа YShellD. Позволяет произвести выбор базы данных из меню. При этом в список баз данных попадают и базы данных системных сообщений. Подключается к опции замены базы данных и всем тем опциям главного меню, которые требуют наличия текущей базы данных.

Меню-программа YShellF. Позволяет произвести выбор из меню ассоциированных с текущей базой данных форматов воспроизведения (служба ISISRET) и рабочих листов ввода данных (служба ISISENT).

Подключается к соответствующим опциям меню xXGEN и xXE1.

Меню-программа YShellM. Позволяет выбирать из меню либо имя файла сохраненных результатов поиска в службе ISISRET, либо имя системного меню в службе ISISUTL. Введение имен вновь создаваемых меню и запоминаемых результатов поиска, а также имен для копии не требуют переключения клавиатуры на латинский регистр. Подключается к соответствующим опциям системных меню xXGEN и xXM3.

Меню-программа YShelN. Должна подключаться к двум дополнительным опциям

  • Просмотр файлов DOS

  • Вызов других программ которые целесообразно разместить в главном меню системы.

Первая опция – Просмотр файлов DOS – позволяет выбрать тип файла (допускаются маски расширения), найти с помощью меню-каталогов необходимый файл определенного типа и выполнить ассоциированную с ним командную строку DOS (по образцу с Нортон командером).

Ассоциация между типами файлов и командной строкой задается с помощью текстового файла, имеющего формат, похожий на формат файла NC.EXT Нортон командера. Например, строка такого текстового файла

PCX: PCXSHOW !.! /E

означает, что при выборе из меню-каталога файла с расширением PCX необходимо вызвать утилиту PCXSHOW, передав ей в командной строке в качестве параметров имя выбранного файла и переключатель /E.

Таким образом, при выборе файла MYPIC.PCX из каталога C:\MYDIR на самом деле будет произведено обращение к операционной системе с командной строкой

PCXSHOW C:\MYDIR\MYPIC.PCX /E

Если в текстовом файле задана строка, которая начинается со звездочки, например,

* : WPVIEW

то это позволяет определить так называемую стандартную утилиту, то есть утилиту, которая должна выполняться при выборе файла с расширением, не специфицированным в данном текстовом файле. Приведенный выше пример означает, что в данном случае будет вызываться Нортоновский вьюер WPVIEW. Если стандартная утилита не указана, то нею считается команда DOS 'TYPE !.! | MORE'.

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

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

Нортон командер FOXSWAP /150K NC

приведет к тому, что в меню будет подана строка "Нортон командер", а при ее выборе произойдет вызов утилиты FOXSWAP, которая произведет своппинг оперативной памяти с освобождением 150К, и затем будет вызван Нортон командер.

Меню-программа YShelP. Позволяет с помощью меню выбирать на компиляцию и выполнение CDS/ISIS-Паскаль программы, а также осуществлять редактирование исходных текстов не выходя из системы.

Программа подключается к опции главного меню выбора на выполнение прикладной программы. При обращении к данной опции на экран выводится сообщение

Компиляция Выполнение Редактирование выХод

При выборе любой из первых трех возможностей на экран выводится меню со списком соответствующих компонент. Для редактирования в файле системных сообщений указывается имя текстового редактора, который должен использоваться в этом случае.

Меню-программа YShelS. Позволяет выбирать из меню и заполнять рабочие листы для печати и сортировки. Подключается к опциям меню xXPRT службы ISISPRT. Заполнение рабочих листов печати и сортировки с помощью программы YSellS имеет следующие особенности:

  • текущее поле рабочего листа, в которое производится ввод данных подсвечивается выбором соответствующего видеоатрибута;

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

  • непосредственное введение значения поля, текст которого должен быть задан в латинском алфавите (например, имена файлов), не требует переключения на латинский регистр;

  • ввод неправильного значения там, где это можно выявить, (например, буквы в числовом поле) приводит к подаче звукового сигнала и выводу сообщения. Нажатием клавиш и разрешается оставить поле неправильным (например, если вы решили прекратить печать), но вы не сможете приступить к выполнению соответствующей операции, не исправив ошибки.

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

Меню-программа YShelT. Позволяет выбирать из меню системные рабочие листы или рабочие листы ввода данных, или системные меню для их последующей печати, а также базу данных для конвертирования целевого файла. Подключается к соответствующим опциям меню xXM1 службы ISISUTL.

Меню-программа YShelU. Позволяет произвести выбор из меню компонент базы данных (имена базы данных, рабочий лист ввода, таблица выбора полей, выходной формат воспроизведения). Ввод имен создаваемых

компонент не требует переключения на латинский регистр. Подключается к опциям меню xXDEF службы ISISDEF и меню xXDBU службы ISISDEF.

Меню-программа YShelV. Позволяет выделять различными видеоатрибутами фрагменты документов, которые выводятся на экран с помощью форматов воспроизведения. Подключается к опциям просмотра меню xXGEN службы ISISRET. Для выделения фрагмента текста на экране он должен быть обрамлен соответствующими символами в формате воспроизведения.

Допускается выделять тексты следующими видеоатрибутами: реверсное, яркое, с подчеркиванием, мерцающее.

  1. Динаміка стану процесу.

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

     циклические нагрузки (вращающиеся части оборудования);

     внезапно приложенные нагрузки (удар или взрыв);

     случайные нагрузки (землетрясение);

     любые другие переменные нагрузки.

Задачи, связанные с колебаниями, играют важнейшую роль в современной инженерной механике. Только динамические расчеты позволяют досконально изучить целый ряд прикладных проблем: колебания турбинных лопаток и дисков, балансировку вращающихся валов и роторов, колебания зубчатых передач, мостов, фундаментов и т.п.

Для решения задач динамики применяются два основных способа:

      статический, основанный на применении уравнений динамического равновесия, которые отличаются от уравнений статического равновесия дополнительным учетом (согласно принципу Даламбера) сил инерции в виде произведения масс или их моментов инерции на ускорения;

      энергетический, основанный на применении закона сохранения энергии, согласно которому сумма потенциальной и кинетической энергии упругой системы есть величина постоянная.