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

0, 2, 4, 6, 8: Writeln('Четная цифра');

1, 3, 5, 7, 9: Writeln('Нечетная цифра');

10..100: Writeln('Между 10 и 100');

end;

  1. Оператори циклу мови C++. Програмування конструкції цикл-Доки.

Оператор цикла задает повторное выполнение определенных опе-

раторов.

------------------¬

оператор цикла ---T-->¦ оператор repeat +------>

¦ L------------------ ^

¦ ------------------¬ ¦

+-->¦ оператор while +--+

¦ L------------------ ¦

¦ ------------------¬ ¦

L-->¦ оператор for +---

L------------------

Если число повторений заранее известно, то подходящей конс-

трукций является оператор for. В противном случае следует исполь-

зовать операторы while или repeat.

Для управления повторением операторов можно использовать

стандартные процедуры Break и Continue. Break завершает оператор

цикла, а Continue продолжает со следующей итерации этого операто-

ра. Подробности вы можете найти в Главе 1 "Справочного руководс-

тва программиста".

  1. Переривання в операційних системах.

Переривання (англ. interrupt) — сигнал, що повідомляє процесор про настання якої-небудь події. При цьому виконання поточної послідовності команд призупиняється і керування передається обробнику переривання, який реагує на подію та обслуговує її, після чого повертає управління в перерваний код.[1]

Залежно від джерела виникнення сигналу переривання поділяються на:

  • Асинхронні або зовнішні (апаратні) — події, які створені зовнішніми джерелами (наприклад, периферійними пристроями) та можуть відбутися в довільний момент: сигнал від таймера, мережевої карти або дискового накопичувача, натискання клавіш клавіатури, рух миші;

  • Синхронні або внутрішні — події в самому процесорі як результат порушення якихось умов при виконанні машинного коду: поділ на нуль або переповнення, звернення до неприпустимих адрес або неприпустимий код операції;

  • Програмні (частковий випадок внутрішнього переривання) — ініціюються виконанням спеціальної інструкції в коді програми. Програмні переривання, як правило використовуються для звернення до функцій вбудованого програмного забезпечення (firmware), драйверів й операційної системи.

Термін «пастка» (англ. trap) іноді використовується як синонім терміну «переривання» чи «внутрішнє переривання». Як правило, слововживання встановлюється в документації виробника конкретної архітектури процесора.

  1. Оператори циклу мови C++. Програмування конструкції цикл-До.

Оператор do имеет вид

do оператор while ( выражение ) ;

Выполнение подоператора повторяется до тех пор, пока значение остается не нулем. Проверка выполняется после каждго выполнения оператора. Выражение обрабатывается как в уловном операторе (#9.3).

  1. C++. Масиви і їхня обробка за допомогою циклів.

Массивы представляют собой производные типы (указатели также относятся к производным типам).

Объект типа "массив элементов заданного типа" представляет последовательность объектов этого самого типа, объединенных одним общим именем. Количество элементов массива является важной характеристикой самого массива, но не самого типа. Эта характеристика называется размерностью массива.

  1. C++. Опис і виклик функцій.

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

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

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

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

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

  1. C++. Перевантаження функцій.

При определении функций в своих программах вы должны указать тип возвращаемого функцией значения, а также количество параметров и тип каждого из них. В прошлом (если вы программировали на языке С), когда у вас была функция с именем add_values, которая работала с двумя целыми значениями, а вы хотели бы использовать подобную функцию для сложения трех целых значений, вам следовало создать функцию с другим именем. Например, вы могли бы использовать add_two_values и add_three_values. Аналогично если вы хотели использовать подобную функцию для сложения значений типа float, то вам была бы необходима еще одна функция с еще одним именем. Чтобы избежать дублирования функции, C++ позволяет вам определять несколько функций с одним и тем же именем. В процессе компиляции C++ принимает во внимание количество аргументов, используемых каждой функцией, и затем вызывает именно требуемую функцию. Предоставление компилятору выбора среди нескольких функций называется перегрузкой. В этом уроке вы научитесь использовать перегруженные функции. К концу данного урока вы освоите следующие основные концепции:

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

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

Перегрузка функций является особенностью языка C++, которой нет в языке С. Как вы увидите, перегрузка функций достаточно удобна и может улучшить удобочитаемость ваших программ.

  1. C++. Складні типи даних. Структури.

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

Складний тип — тип даних, об'єкти (змінні або постійні) якого мають внутрішню структуру, доступну програмістові.

Складні типи даних - це типи, які складаються з елементів, що відносяться до простих типів. До складних типів даних відносяться: -   масиви; -   множини; -   стрічки; -   записи; -   файли; -   динамічні змінні; -   вказівки; -   лінійні списки (стеки, черги); -   нелінійні списки (двійкові дерева, несиметричні дерева, тексти, графи); -   процедурний тип; -   об’єкти.

 

У різних мовах програмування набір базових складних типів може трохи відрізнятися (частіше за назвою й деталями реалізації). Є, однак, об'єктивні критерії - однотипність елементів і спосіб доступу, що дозволяють виділити головні представники складних типів.

Крім цього, типи даних у Turbo Pascal можна поділити на впорядковані та невпорядковані. Впорядковані - це типи, в яких дані розміщені в певному, наперед визначеному, порядку і кожен з елементів характеризується своїм порядковим номером. Невпорядковані - це типи, в яких дані не мають своїх порядкових номерів.

Складний тип даннях містить у собі: масив (array) — елементи тільки однотипні, доступ довільний; запис (record) — елементи можливо різних типів, доступ довільний;

файл (file) - елементи однотипні, доступ послідовний.

У програмуванні масив (array) - одна з найпростіших структур даних, сукупність елементів переважливо одному типу даних, впорядкованих за індексами, які зазвичай репрезентовані натуральними числами, що визначають положення елемента в масиві.

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

Загальний тип Специфічні типи примітивні тип даних

  • int

  • char

Запис (програмування) або складні типи даних

  • Ціле

  • Рядок

  • Дійсне подвійної точності

  • Дійсне

  • Об'єднання, Варіант

    • Мічене об'єднання (Tagged union)

  • Буфер з проміжками

  1. C++. Складні типи даних. Об'єднання.

Объединение в языке С++ отличаеться от структур способом хранения информации. В каждый момент времени объединение хранит значение только одного элемента.

Пам'ять распределяеться для хранениянаибольшего элемента объединения. Под элементы обьединения будет обведено 4 Байта памяти так как наибольший элемент имеет тип long. Переменная обьединения может быть обьявлена вне описания обьединения. Преобращение к элементу обьединения необходимо указать имя переменной и имя элемента обьединения разделив их точкой

  1. C++. Файли і робота з ними. Виведення (запис) даних у файл.

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

Для того что бы програма на языке С++ могла рабо тать с файлами не обходимо вначало програмы включить заголовочный файл fstream.h

Ввод(запись) данных в файл:

Запись в файл возможна в 2-х режимах:

1.Создание нового файла

2.Добавления данных в существующий файл

Для открытия файла в режиме создания используется оператор ofstream out_file(“имя_файла.расширение”);

В круглых скобках оператора ofstream можно указывать второй параметр из списка:

Ios:out-открыть файл для вывода

Ios::tranc-перезаписать содержимое сущ. файла

Ios::noreplace-если файл сущ. Не открывать файл

Ios::nocreate-если файл сущ. Не создавать его

Ios::ate-расположить файловый указатель в конце файла.

  1. C++. Файли і робота з ними. Введення (читання) даних з файлу.

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

Для того что бы програма на языке С++ могла рабо тать с файлами не обходимо вначало програмы включить заголовочный файл fstream.h

Ввод(чтение) данных из файла

Ввести данные в программу на языке С++ можно не только с клавиатуры но и из файла. Для открытия файла в режиме ввода используеться оператор: ifstream in_file («имя_файла.расширение») В операторе ifstream можно указывать второй параметр:

Ios::in-открыть файл для ввода. Ввод из файла осуществить спомощью оператора извлечения (>>).

  1. C++. Конструктори і деструктори.

Определение ostream как класса сделало члены данные зарытыми. Только функция член имеет доступ к закрытым членам, поэтому надо предусмотреть функцию для инициализации. Такая функция называется конструктором и отличается тем, что имеет то же имя, что и ее класс:

class ostream (* //... ostream(streambuf*); ostream(int size, char* s); *);

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

ostream my_out( amp;some_stream_buffer); char xx[256]; ostream xx_stream(256,xx);

Описание my_out не только задает соответствующий объем памяти где-то в другом месте, оно также вызывает конструктор ostream::ostream(streambuf*), чтобы инициализировать его параметром amp;some_stream_buffer, предположительно указателем на подходящий объект класса streambuf. Описание конструкторов для класса не только дает способ инициализации объектов, но также обеспечивает то, что все объекты этого класса будут проинициализированы. Если для класса были описаны конструкторы, то невозможно описать переменную этого класса так, чтобы конструктор не был вызван. Если класс имеет конструктор, не получающий параметров, то этот конструктор будет вызываться в том случае, если в описании нет ни одного параметра.

Если у класса есть конструктор, то он вызывается всегда, когда создается объект класса. Если у класса есть деструктор, то он вызывается всегда, когда объект класса уничтожается. Объекты могут создаваться как:

1. Автоматический объект: создается каждый раз, когда его описание встречается при выполнении программы, и уничтжается каждый раз при выходе из блока, в котором оно появлось;

2. Статический объект: создается один раз, при запуске программы, и уничтожается один раз, при ее завершении;

3. Объект в свободной памяти: создается с помощью опрации new и уничтожается с помощью операции delete;

4. Объект член: как объект другого класса или как элмент вектора.

Объект также может быть построен с помощью явного примнения конструктора в выражении (см. #6.4), в этом случае он является автоматическим объектом. В следующих подразделах предполагается, что объекты принадлежат классу, имеющему конструктор и деструктор. Примером может служить класс table из #5.3.

C++ обеспечивает удобные способы создания и удаления объектов, через специальные процедуры. Процедуры создания объектов называются конструкторами, а процедуры уничтожения - деструкторами. Конструкторы автоматически вызываются при описании объекта, а деструкторы - при выходе из блока, в котором этот объект был описан. Если необходимые конструкторы или деструктор для класса не описаны, то транслятор создает их сам. Для того, чтобы понять важность конструкторов, сделаем маленькое отступление. Общей проблемой для всех традиционных языков программирования является инициализация: прежде чем использовать структуру данных, нужно выделить ей память и проинициализировать. Рассмотрим задачу инициализации следующей структуры: class rectangle { // Прямоугольник public: int wd, ht; // Ширина и высота };

Неопытные программисты могут попробовать присвоить значения элементам wd и ht следующим образом: rectangle this_rect // Создание нового объекта this_rect this_rect.wd = 20; // с заданной шириной this_rect.ht = 10; // и высотой

Ошибки не будет, но такой способ тесно связан с конкретным объектом, this_rect. Если понадобится проинициализировать несколько объектов типа rectangle, то операция присваивания потребуется использовать неоправданно часто. В данном случае естественным шагом является создание функции инициализации, которая обобщает операции присваивания, работая с любым объектом типа rectangle, переданным ей в качестве аргумента: void init_rect(rectangle* target, int wd, int ht) { target->wd = new_wd; targrt->ht = new_ht; }

Данная функция использует переданный ей указатель на объект типа rectangle для присваивания элементам объекта значений ее аргументов. С помощью операции -> указывается элемент, ссылающийся на элементы класса. Функция init_rect, разработанная специально для структуры rectangle, работает корректно.

Объектно-ориентированный подход требует возможности создания функции элемента, которая сможет инициализировать любой объект класса rectangle. Такой функцией является конструктор.