- •5В070300 «Информационные системы»
- •Введение
- •Содержание отчета
- •Лабораторная работа № 1
- •1 Порядок выполнения лабораторной работы:
- •Постановка задачи
- •Методические указания
- •2 . Пример
- •Лабораторная работа № 2
- •1 Содержание работы
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •2. Пример
- •Лабораторная работа№ 3
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •Часть вторая: Оператор выбора
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •Группа а Таблица 7
- •Группа в
- •2. Примеры
- •Лабораторная работа№ 4
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •2 Примеры
- •For (выражение1; выражение2;выражение3) {операторы; }
- •Лабораторная работа№ 5
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •2. Примеры
- •3. Сортировка элементов массива
- •Сортировка выбором
- •3.2. Сортировка вставкой
- •3.3. Сортировка методом прямого выбора
- •3.4. Сортировка методом обмена
- •4. Указатели и одномерные массивы
- •Лаборатоная работа № 6
- •1 Порядок выполнения лабораторной работы:
- •2. Методические указания
- •3. Указатели и двумерные массивы
- •Лабораторная работа № 7
- •1 Порядок выполнения лабораторной работы:
- •Задание на строки
- •2.Краткие теоретические сведения
- •Лаборатоная работа № 8
- •1 Порядок выполнения лабораторной работы:
- •2. Теоретические сведения
- •Год рождения – 1978
- •Лабораторная работа № 9
- •1 Порядок выполнения лабораторной работы:
- •2. Примеры
- •Лабораторная работа № 10
- •1 Порядок выполнения лабораторной работы:
- •1.3. Задание для выполнения
- •2. Примеры
- •Лабораторная работа № 11
- •1 Порядок выполнения лабораторной работы:
- •1.3. Задание для выполнения
- •Лабораторная работа № 12
- •1 Порядок выполнения лабораторной работы:
- •2. Краткие теоретические сведения Объектно-ориентированный подход
- •Сущности и Объекты
- •Система типов
- •Инкапсуляция
- •Пример класса
- •Создание объектов. Конструкторы и деструктор
- •Наследование
- •Перегрузка функций
- •Полиморфизм
- •Функции-друзья
- •Абстрактные классы
- •Дополнительные возможности
- •Индивидуальные задания
- •2.1. Пример решения задания
- •Int windForce; // Сила ветра в баллах
- •Int startHeight; // Начальная высота
- •Int fuel; // Запас топлива
- •Результат выполнения программы:
- •Разновидности списков
- •Контрольные вопросы
- •Задание
- •Литература
- •Лабораторная работа № 9 Тема: Множества в Паскале.
- •Общие сведения
- •Лабораторная работа № 8 Тема: Применение записей в составлении программ.
- •Теоретические сведения
- •Задание
- •Контрольные вопросы.
- •Литература.
- •Список использованной литературы
2. Примеры
Пример 2.1 В массиве a поменять местами элементы: первый со вторым, третий с четвертым и т.д. Оформить этот алгоритм в виде функции reverse.
Саму функцию оформить в виде отдельного файла. В этом случае выполняется его включение процедурой #include.
Если в качестве аргумента функции используется имя массива, то ей передается адрес начала массива, а сами элементы не копируются. Функция может изменять элементы массива, сдвигаясь (индексированием) от его начала.
Текст программы
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#define SZ 6 /*размер массива*/
#include "reverse.cpp" /*включение файла reverse.cpp с функцией reverse */
extern void reverse(int s[SZ]); /*включение протипа функции*/
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i, a[SZ]; /* описание переменной i и массива а целого типа */
StringGrid1->SetFocus(); /*передача фокуса*/
for (i=0; i<SZ;i++)
a[i]=StrToInt(StringGrid1->Cells[i][0]) ; /*ввод исходного массива*/
reverse(a); /*обращение к функции reverse*/
for (i=0; i<SZ;i++)
StringGrid2->Cells[i][0]=IntToStr(a[i]) ; /*вывод полученного массива */
}
/*Текст файла reverse.cpp с функцией reverse, хранящийся отдельно*/
void reverse(int s[SZ])
{
int x,i;
for (i=0; i<=SZ; i+=2)
{x=s[i]; s[i]=s[i+1]; s[i+1]=x;} /*обмен элементов местами*/
}
Результаты вычислений приведены на рисунке 30.
Рисунок 30. Результаты вычислений
В предыдущем примере функция хранилась в виде отдельного файла и включалась процедурой #include. Функция может быть включена в один файл с вызывающей программой. В этом случае процедура #include не требуется, а сама функция должна быть объявлена в основной программе, если она имеет не целый тип. Т.е. для предыдущего примера программа будет выглядить так:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#define SZ 6 /*размер массива*/
void reverse(int s[SZ]); /*включение протипа функции*/
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void reverse(int s[SZ])
{
int x,i;
for (i=0; i<=SZ; i+=2)
{x=s[i]; s[i]=s[i+1]; s[i+1]=x;} /*обмен элементов местами*/
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i, a[SZ]; /* описание переменной i и массива s целого типа */
StringGrid1->SetFocus();
for (i=0; i<SZ;i++)
a[i]=StrToInt(StringGrid1->Cells[i][0]) ;
reverse(a); /*обращение к функции reverse*/
for (i=0; i<SZ;i++)
StringGrid2->Cells[i][0]=IntToStr(a[i]) ; /*вывод полученного массива */
}
