Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!1-25.doc
Скачиваний:
7
Добавлен:
28.10.2018
Размер:
2.62 Mб
Скачать

2.4 Написать 2 варианта запуска Notepad.Exe для обработки файла

#include "iostream.h"

#include "string.h"

#include "windows.h"

void main()

{ STARTUPINFO si;

PROCESS_INFORMATION pi;

char FileName[100],CmdLine[100];

strcpy(CmdLine,"Notepad.exe");

cout<<"Text file name: ";

cin>>FileName; // ввод названия текстового файла

ShellExecute(NULL,NULL,CmdLine,FileName,NULL,SW_SHOW); // вариант №1

strcat(CmdLine," "); // формируем содержимое командной строки

strcat(CmdLine,FileName);

WinExec(CmdLine,SW_SHOW); // вариант №2

ZeroMemory(&si,sizeof(si)); // устанавливаем нужные параметры в структуре STARTUPINFO

si.cb=sizeof(si);

si.wShowWindow=SW_SHOW;

si.dwFlags=STARTF_USESHOWWINDOW;

CreateProcess(NULL,CmdLine,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi); // вариант №3

}

2.5

  • от 195.12.15.1 до 195.12.15.254

Маска подсети 255.255.255.0

  • от 6.8.0.1 до 6.15.255.254

1 Способ

6.8.0.1

6.15.255.254

255.?.0.0.

переводим из 10ой системы в 2ую

810=000010002

1510=000011112

111110002=24810

Маска подсети 255.255.248.0

2 Способ

определяем шаг подсети

следующая подсеть 16 значит 16-8=8 шаг подсети 8

Это вес младшей единицы в маске

111110002=24810

маска подсети 255.255.248.0

  • от 111.224.0.1 до 111.239.255.254

111.224.0.1

111.239.255.254

255.?.0.0.

определяем шаг подсети

следующая подсеть 240 значит 240-224=16 шаг подсети 16

Это вес младшей единицы в маске

111100002 = 24010

маска подсети 255.240.0.0

  • от 3.64.0.1 до 3.127.255.254

3.64.0.1

3.127.255.254

255.?.0.0.

определяем шаг подсети

следующая подсеть 128 значит 128-64=64 шаг подсети 64

Это вес младшей единицы в маске

110000002 = 19210

маска подсети 255.192.0.0

3.1 Типы данных языка программирования С++. Организация циклов

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

Тип данных определяет:

Формат представления в памяти компьютера

Множество допустимых значений, которые может принимать принадлежащая к выбранному типу переменная или константа

Множество допустимых операций, применимых к этому типу.

Основные типы данных:

Простые типы

Целочисленные типы

Логический тип

Символьный тип

Перечисляемый тип

Интервальный тип

Вещественный тип

Структурированные типы

Массив

Множество

Запись

В языках C/C++ данные представляются одним из восьми базовых типов: char (текстовые данные), int (целые числа), float (числа с плавающей запятой одинарной точности), double (числа с плавающей запятой двойной точности), void (пустые значения), bool(логические значения), перечисления и указатели. Остановимся на каждом из типов данных.

Текст (тип данных char) представляет собой последовательность символов, таких как a, Z, ? иЗ,которые могут быть разделены пробелами. Обычно каждый символ занимает 8 бит, или один байт, с диапазоном значений от 0 до 255.

Целые числа (тип данных int) находятся в диапазоне от -32768 до 32767 и занимают 16 бит, т.е. два байта, или одно слово. В Windows 98 и WindowsNTиспользуются 32-разрядные целые, что позволяет расширить диапазон их значе­ний от -2147483648 до 2147483647.

Числа с плавающей запятой одинарной точности (тип данных float) могут представляться как в фиксированном формате, например число л (3,14159), так и в экспоненциальном (7,56310). Диапазон значений — +/-3,4Е-38—3,4Е+38, размерность — 32 бита, т.е. 4 байта, или 2 слова.

Числа с плавающей запятой двойной точности (тип данных double) имеют диапа­зон значений от +/-1,7Е-308 до +/-1,7Е+308 и размерность 64 бита, т.е. 8 байтов, или 4 слова. Ранее существовал тип longdouble с размерностью 80 бит и диапазоном от +/-1,18Е-4932 до +/-1Д8Е+4932. В новых 32-разрядных версиях компиляторов он эквивалентен типу double и поддерживается из соображений обратной совместимости с написанными ранее приложениями.

Перечисления.

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

Объявление перечисления начинается с ключевого слова enum и имеет следующую форму:

enum имя_тега_перечисления {список_перечисления}

описатель [,описатель...];

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

Указатели, в отличие от переменных других типов, не содержат данных в обычном понимании этого слова. Вместо этого указатели содержат адреса памяти, где хранятся данные. Переменные типа данных bool в C++ могут содержать только одну из двух констант: true или false.

Примеры:

float f, a, b;

double x,y;

Организация циклов

1. Оператор цикла с постусловием. Обычно используется тогда, когда число повторений цикла заранее неизвестно, а определяется в процессе его выполнения. Оператор цикла с постусловием имеет вид:

do <тело цикла> while <условие>;

При выполнении этого оператора цикла операторы тела цикла выполняются хотя бы один раз. После выполнения операторов тела цикла проверяется <условие>. Если его значение TRUE , то операторы тела цикла повторяются, в противном случае цикл завершает свою работу.

2. Оператор цикла с предусловием. Используется тогда, когда число повторений неизвестно заранее, причем, при некоторых значениях исходных данных предусмотренные в цикле действия не должны выполниться ни одного раза. Этот оператор цикла имеет вид

While <условие> {тело цикла};

Если логическое выражение, задающее <условие>, имеет значение TRUE, то выполняется тело цикла, после чего повторяется проверка условия. Если <условие> имеет значение FALSE, оператор While прекращает свою работу. Поскольку условие завершения циклического процесса проверяется до выполнения тела цикла, то оператор цикла данного вида называется оператором цикла с предусловием.

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

For (V=E1;E1<= E2; E1++)

{ тело цикла

};

где for (для) , to ( увеличиваясь к ), do (делать) - кодовые слова, V - переменная порядкового типа (любой скалярный кроме real ), V называют параметром цикла; E1, E2 - выражения того же типа, что и V. При выполнении оператора цикла с параметром предусматривается присваивание параметру цикла V последовательных значений от начального, равного значению выражения E1, до конечного, равного значению выражения E2, и выполнение тела цикла при каждом значении параметра цикла V. При этом значения выражений E1 и E2 вычисляются один раз, при входе в оператор цикла, а значение параметра V не должно изменяться в результате выполнения тела цикла. Если заданное конечное значение параметра цикла меньше начального, то тело цикла не выполняется ни разу.

Оператор continue , как и оператор break, используется только внутри операторов цикла for, while или do while. Этот оператор позволяет продолжить выполнение цикла, пропустив операторы оставшиеся в теле цикла. Обычно этот оператор входит в состав оператора if. Формат оператора: continue;

Пример:

int main ( )

{ int a,b;

for ( a=1, b=0 ; a<100; b+=a, a++)

{ if (b%2) continue;

... /* обработка четных сумм */

}

return 0;

}

Когда сумма чисел от 1 до а становится нечетной, оператор continue передает управление на очередную итерацию цикла for, не выполняя операторы обработки четных сумм.

Оператор continue, как и оператор break, прерывает самый внутренний из объемлющих его циклов.

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

Формат этого оператора следующий:

goto метка;

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

Оператор break может быть использован только внутри операторов switch, for, while или do while и обеспечивает прекращение выполнения самого внутреннего из содержащих его операторов. После выполнения оператора break управление передается оператору следующему за прерванным.

Формат оператора:

break;

Заметим, что оператор break нельзя использовать для выхода из нескольких вложенных циклов, а составной оператор, состоящий из двух операторов break, эквивалентен одному оператору break.