Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Метода(c++)

.pdf
Скачиваний:
39
Добавлен:
04.06.2022
Размер:
1.77 Mб
Скачать

Функция возвращает псевдослучайное целое число (тип int) в диапазоне от 0 до RAND_MAX. RAND_MAX – константа, определяющая максимальное значение, которое может быть возвращено функцией rand(). RAND_MAX = 232 = 4 294 967 296.

Примечания:

1. Для генерации случайных чисел, находящихся в диапазоне 0…N следует пользоваться следующей записью:

<ИмяПеременной> = rand() % (N+1);

2.Для генерации случайных чисел, находящихся в диапазоне -N…N следует пользоваться следующей записью:

<ИмяПеременной> = (rand() % (2N+1))-N;

3.Для генерации действительных чисел, находящихся в диапазоне 0…N следует пользоваться следующей записью:

<ИмяПеременной> = N.*rand()/RAND_MAX;

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

randomize();

5. Функции rand и randomize описаны в файле stdlib.h, поэтому для использования описанных функций необходимо вручную подключить файл stdlib.h, используя директиву:

#include <stdlib.h>

Упражнение 2. Заполнение массива с помощью датчика случайных

чисел

1.Открыть проект InpTable из папки InpTable.

2.Сохранить проект с именем RandTable в новой папке.

3.В блоке ввода исходных данных добавить ввод переменной, отвечающей за режим заполнения массива. Имя переменной – Reg. Будем полагать

следующий принцип работы: при Reg=1 – массив заполняется вручную с клавиатуры, при Reg=2 генерируются целые случайные числа от 0 до N, при reg=3 генерируются целые случайные числа от –N до N, а при Reg=4 генерируются действительные случайные числа в диапазоне 0 …N.

31

4.После блока ввода исходных данных написать код, действующий согласно алгоритму, представленному на рис. 7 (по возможности, код оптимизировать!):

5.Запустить программу и убедиться в ее работоспособности.

Содержание отчета:

1.Титульный лист

2.Цель работы

3.Краткие теоретические сведения (список используемых операторов, их цель, синтаксис, формат и проч.)

4.Коды модулей С++

5.Копии экрана с примерами работы программ

6.Схемы алгоритмов программ.

7.Выводы по работе.

Контрольные вопросы

1.Дайте определение понятия «массив»

2.Что такое размер и размерность массива?

3.Какие сведения нужно знать для объявления массива в С++?

4.Каков синтаксис объявления в С++ одномерного массива?

5.Каков синтаксис объявления в С++ двумерного массива?

6.Каков принцип нумерации элементов массива?

7.Как обратиться к i-му элементу массива?

8.Как выполнить инициализацию ячеек массива?

9.Объясните принцип задания значений элементов массива при консольном режиме ввода.

10.Объясните принцип вывода значений элементов массива при консольном режиме.

11.Для каких целей служит встроенный датчик случайных чисел?

12.В каком стандартном файле описаны функции, необходимые для использования датчика случайных чисел? Как подключить этот файл?

13.Какой тип данных у случайных чисел, генерируемых с помощью функции rand?

14.Ограничен ли предел значений случайных чисел, генерируемых функцией rand? Укажите этот интервал.

32

начало

Ввод ручной?

Нет

 

 

 

 

 

 

Да

 

 

Ввод N

 

 

 

 

Код, позволяющий вручную

 

 

 

с клавиатуры ввести

 

 

значения элементов массива

 

 

Примечание.

Уже сделано в

Да

Генерировать целые

 

предыдущем упражнении

 

 

числа от 0 до N?

 

 

 

 

В коде в отдельном цикле должна добавиться строка вида

Mas[i]=rand()%(N+1);

Нет

 

 

 

 

 

 

 

Генерировать целые

 

Нет

 

 

 

 

числа от –N до N?

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

Код

написать

 

 

 

 

 

 

 

самостоятельно

с учетом

 

 

 

 

 

 

 

примечания 3 и примера в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Код

 

 

написать

 

 

 

самостоятельно

с учетом

 

 

 

примечания 2 и примера в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

конец

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 7. Схема алгоритма

32

15. Каким образом получить случайное целое число (набор целых случайных чисел), значения которого(ых) находи(я)тся в интервале [0, K]?

16.Каким образом получить целое случайное число (набор целых случайных чисел), значения которого(ых) находи(я)тся в интервале [ K, K]?

17.Каким образом получить действительное случайное целое число (набор действительных случайных чисел), значения которого(ых) находи(я)тся в интервале [0, K]?

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

интервале [ K, K]?

19.Объясните понятие «рандомизация генератора случайных чисел».

20.Какая функция служит для перезапуска генератора случайных чисел?

33

ЛАБОРАТОРНАЯ РАБОТА №6 ПРОГРАММИРОВАНИЕ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА:

ОСНОВНЫЕ СВОЙСТВА ВИЗУАЛЬНЫХ КОМПОНЕНТОВ. ЛИНЕЙНЫЙ ВЫЧИСЛИТЕЛЬНЫЙ ПРОЦЕСС.

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

Краткие теоретические сведения:

I. Создание приложения с оконным windows-интерфейсом пользователя состоит из создание заготовки окна-приложения с размещенными на ней элементами управления (поля ввода, кнопки, списки и проч.) и программирования событий этих элементов управления. Как правило, проект с заготовкой окна-приложения автоматически открывается при запуске среды.

Стандартный состав окон среды программирования C++ Builder 6.0 представлен на рис. 8.

Панель инструментов

Палитра компонентов

Окно Object Inspector

Дизайнер (окно) формы

Редактор кода

Рис. 8. Возможный вид интерфейса среды программирования

III.Способы просмотра/переключения между основными окнами среды представлены в табл. 2.

34

 

 

 

 

 

 

 

Таблица 2

 

 

 

 

 

 

 

 

 

 

 

 

Способ переключения

 

Окно

 

Цель окна

 

 

 

 

 

Через меню

Клавиатур-

 

 

 

 

 

ный аналог

 

 

 

 

 

 

Project

Manager

Просмотр

структуры

View Pro-

Ctrl+Shift

(Менеджер проекта)

проекта;

Добавление

ject Manager

 

 

 

 

нового модуля в проект;

 

 

 

 

 

 

Удаление

существующего

 

 

 

 

 

 

модуля из проекта.

 

 

 

 

 

 

 

 

 

Object

Inspector

Управление

свойствами и

View Ob-

F11

(инспектор

 

событиями

визуальных

ject

Inspec-

 

объектов)

 

компонент

 

tor

 

 

 

 

 

 

 

 

Переключение

 

 

 

View Tog-

F12

модуль/форма

или

 

 

gle

 

 

форма/модуль

 

 

 

Form|Unit

 

 

 

 

 

 

 

 

 

Для

 

любого

 

 

View

Win-

 

открытого окна

 

 

dow List

 

 

 

 

 

 

 

 

 

III. Состав проекта.

Состав проекта C++ Builder с оконным интерфейсом:

файл проекта (*.срр) (головной файл проекта).

двоичный файл ресурсов *.res.

текстовый файл опций проекта *.bpr

файлы модулей (см. ниже).

В 99% случаев эти файлы не подлежат коррекции пользователем. Однако, можно просмотреть головной файл проекта, выполнив

Project View Source.

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

Модуль может быть связан с формой или не связан с ней. Для модуля, связанного с формой, автоматически среда C++ Builder создаются еще два отдельных файла:

h-файл(*.h) – заголовочный файл модуля; cодержит описание содержащихся на форме компонентов и обработчиков событий.

Файл формы (.dfm) - двоичный файл (или текстовый) формы.

Как правило, все изменения в заголовочный файл и файл формы вносятся средой C++ Builder автоматически.

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

35

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

Для создания нового проекта: File New Application.

Для открытия существующего проекта: File Open Project.

Для сохранения головного файла проекта File Save Project As.

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

Windows и проч.).

Для размещения нужного компонента (элемента интерфейса) на форме следует:

1.Переключится в окно формы

2.Открыть нужную вкладку на палитре компонентов

3.Щелкнуть нужный компонент

4.

а) Используя технологию «нажать – держать

– тащить» указать

на

форме прямоугольную область, в которой

будет помещаться

нужный элемент интерфейса

 

 

б) щелкнуть в желаемом месте на форме

 

V. Выделение группы элементов интерфейса на форме производится при нажатой клавише Schift. Для удаления элемента интерфейса с формы следует выделить его и нажать клавишу Delete. Перетаксивание элементов интерфейса (или их группы) и изменение размеров производится стандартным способом.

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

Упражнение 1. Работа с формой и палитрой компонентов.

1. Запустить среду Borland C++ Builder 6.0

36

2.Оставить видимыми три ее основных окна (форма, редактор кода, Object Inspector), и расположить их так, как показано на рис. 8.

3.Выполнить View Window List и убедиться, что в списке открытых окон присутствуют лишь указанные выше.

4.Переключиться в окно формы и добавить на нее компоненты, указанные в табл. 3 (компоненты располагать на форме в произвольном порядке с произвольными размерами).

5.Сохранить модуль (File Save или комбинация клавиш Ctrl+S или кнопка на панели инструментов) в папке своей группы с именем

MyFom1.

6.Переключится в «Проводник» (или запустить его при необходимости), и открыв содержимое папки своей группы убедиться в появлении файлов

MyForm1.cpp, MyForm1.dfm,

 

Таблица 3

 

 

 

Название компонента

Вкладка на

 

 

палитре

 

 

компонентов

 

 

 

 

1

2

 

 

 

 

MainMenu

 

 

Label

 

 

 

 

 

CheckBox

Standart

 

 

 

RadioButton

 

 

 

 

 

 

Edit

 

 

 

 

 

Button

 

 

 

 

 

Shape

Additional

 

 

 

SpeedButton

 

 

 

 

 

 

Timer

System

 

 

 

 

OpenDialog

 

 

 

 

 

SaveDialog

Dialogs

 

 

 

 

ColorDialog

 

 

 

 

 

CSpinEdit

Samples

 

 

 

CCalender

 

 

 

 

 

 

MyForm1.h.

7. Переключиться в среду С++ Buil-

der 6.0и сохранить проект (File Save Project As) с именем MyPr1 в папке своей группы.

8.Переключится в «Проводник» (или запустить его при необходимости) и

убедиться в появлении файлов MyPr1.bpr, MyPr1.cpp, MyPr1.res.

9.Вернуться в среду С++ Builder 6.0 и запустить проект (Run Run или клавиша F9 или на панели инструментов). При этом происходит трансляция и, если нет ошибок, компоновка программы и создание единого загружаемого файла с расширением exe. При этом на экране появляется окно программы.

10.Расположить на экране окна так, чтобы была возможность наблюдать на экране и форму, и появившееся окно программы. Сравнивая их, понять, какие из добавленных компонент являются визуальными, а какие – нет.

37

11.Закрыть окно выполняемой программы (стандартным образом).

12.Выйти из среды C++ Builder 6.0 (закрыть среду C++ Builder 6.0).

Упражнение 2. Некоторые приемы работы при разработке формы

1.Открыть проект MyPr1.

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

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

4.Закрыть среду программирования C++ Builder 6.0, ответив «Yes» на вопрос о сохранении изменений. Обратить внимание, что конкретно за изменения предлагается сохранить.

5.Вновь открыть проект MyPr1.bpr.

6.Удалить с формы компонент RadioButton.

7.За один прием удалить с формы все невизуальные компоненты.

8.Запустить проект.

9.Закрыть проект.

10.Выделить на форме компоненты Shape и SpeedButton и последовательно

выполнить команды Edit Align, Edit Size, Edit Scale. Самостоятельно определить цели выполнения этих команд.

Замечание. Вышеприведенные команды доступны также в контекстном меню выделенных компонентов.

11.Выполнить View Alignment Palette и, нажимая на кнопки в появившейся панели, определить их цель.

12.Установить для компонента Button ширину в 100 пт, а высоту – в 45 пт.

13.Сделать так, чтобы все находящиеся на форме компоненты были сгруппированы по принадлежности их к вкладке на палитре компонентов, т.е., например, в один столбик (строчку) были бы расположены все компоненты с вкладки Standart, в другой – все компоненты с вкладки

Additional и т. д.

14.За один прием сделать так, чтобы все компоненты с вкладки Standart имели бы размер по горизонтали в 120 пт, а размер по вертикали соответствовал бы меньшему из всех этих компонентов .

15.Сохранить модуль, запустить проект, закрыть среду C++ Builder 6.0.

38

Краткие теоретические сведения

VII. Окно Object Inspector.

Окно содержит две вкладки: Properties и Events, а также выпадающий список с перечнем всех находящихся на форме компонентов. На обеих вкладках отображаются сведения о выделенном в данный момент на форме компоненте, или общие сведения для компонентов, если в данный момент на форме выделено несколько из них (те сведения, которые справедливы для всех выделенных компонентов). На вкладке Properties отображаются свойства выделенного(ых) в данный момент на форме компонента(ов). На вкладке Events – его(их) события.

VIII. Изменение свойств компонентов на этапе проектирования формы.

Каждый компонент C++ Builder имеет три разновидности характеристик: свойства, события и методы.

Свойства являются атрибутами компонента, определяющими его внешний вид и поведение. Изменять значения свойств пользователь может:

в режиме проектирования формы;

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

Для изменения какого-либо свойства визуального компонента в режиме проектирования формы следует выделить нужный визуальный компонент на форме (щелчок) и изменить значение нужного свойства на вкладке Properties окна Object Inspector.

Вкладка Properties содержит две колонки. Первая – название (имя) свойства компонента, вторая – его текущее значение.

Свойства компонента могут быть простыми или сложными. К

простым относятся

свойства,

определяемые единственным

значением

- числом,

строкой

символов,

значением True (Истина)

или

False

(Ложь) и т. п.

 

 

 

 

Сложные

свойства определяются совокупностью значений.

Перед

именем такого свойства стоит значок "+". При двойном щелчке на имени сложного свойства или при щелчке по значку «+» раскрывается список вложенных (уточняющих) свойств, а значок "+" меняется на

" ".

Значения свойств (как простых, так и сложных) могут вводиться вручную, выбираться из выпадающего списка или устанавливаться в специальных диалоговых окнах. В первом случае в правой колонке вкладки Properties находится обычное поле ввода, во втором –

39

Соседние файлы в предмете Информатика