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

Программирование в среде Visual C++ 6. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
второго из <списка выражений> передаётся второму фор­мальному аргументу и т. д. Количество выражений в <спи- ске выражений> должно точно соответствовать количеству формальных параметров. Если в <списке выражений> ре­зультатом является символьная строка, тосоответствующе­му формальному аргументу передается адрес этой строки. При вызове функции, если <список выражений> не пред- усмотрен, то обе круглые скобки должны присутствовать. Наличие скобок означает, что это непросто идентификатор, апризнак вызова функции.
. Составить таблицу перехода от температурной
шкалы поЦельсию –50…+100
о
С кшкале поФаренгейту, ши-
роко распространённой встранах нового света.
Main () { double t, TC [160], TF [160]; int i;
t= –50.0; for (i=0; i<151; i++)
{
TC [i] =t; TF [i] =compcf (t); t+=1.0;
} } double compcf (double tc) { double T;
T= tc+273.15; return (T*1.8–459.67);
}
— 41 —
В этом примере TC — значения температуры по шкале Цельсия от –50
о
С до +100оС с шагом 1оС, а TF — соответ­ственно температура пошкале Фаренгейта. Перерасчёт тем­пературы производится функцией compcf сформальным па­раметром tc. При каждом вызове этой функции компилятор предусматривает, что параметр tc принимает значение теку­щей температуры t пошкале Цельсия.
Теперь приведём вид программы для того же перерасчё­та шкалы температуры, ногде функция compcf неиспользует свои формальные параметры иневозвращает вычисленные значения.
double t, T;
main ()
{
double TC [160], TF [160];
int i;
t= –50.0;
for (i=0; i<151; i++)
{
TC [i] =t;
compcf ();
TF [i] =T;
t+=1.0;
}
}
void compcf ()
{
T= t+273.15;
T= T*1.8–459.67;
}
— 42 —
В этом примере функция использует переменные вызыва­ющей программы main. Тип функции принимается как void, формальные ифактические параметры отсутствуют, нокру­глые скобки остаются.
Обе программы идентичны посвоим возможностям, авы­бор типа вызова функции зависят от вкуса программиста иконкретной разрабатываемой программы.
6.3. Библиотечные функции
В языке СИ разработана обширная библиотека стандарт­ных функций, избавляющих программиста от необходимо­сти их составления при разработке какой-либо сложной про­граммы. Достаточно только включить впрограмму вызов той или иной стандартной функции. Кчислу стандартных библи­отечных функций относятся:
- математические функции,
- форматные преобразования данных,
- операции над файлами,
- операции ввода-вывода,
- функции работы современем,
- управление процессами,
- другие функции.
Список различных библиотечных функций настолько ши­рок, что вданной методической разработке нет места хотябы только для простого перечня их. Достаточно полно эти функ­ции описаны вкниге [1].
Каждая группа функций описана и определена в отдель­ном файле, поэтому вначале программы необходимо указать компилятору этот файл путем специальной директивы при­соединения. Так, при использовании математических функ­ций эта директива имеет вид:
— 43 —
#include <nath.h>.
В справочнике библиотечных функций для каждой функ­ции указано наименование присоединяемого файла, типы формальных переменных итип возвращаемого вычисленно­го значения.
6.4. Рекурсивные вызовы
При программировании возможны случаи, когда вызывае­мая функция может вызывать туже функцию либо непосред­ственно, либо через вызываемые другие функции. Компиля­тор наэтот счёт неимеет никаких ограничений относительно числа вложений одной итойже функции всаму себя. Каждый раз, как только компилятор встречает вызываемую функцию, он отводит новый отрезок оперативной памяти для формаль­ных параметров и внутренних идентификаторов, ивсе вы­зовы проходят без каких-либо эксцессов. Необходимо лишь самому программисту быть более внимательным при управ­лении идентификаторами, ведь использованные внешние идентификаторы могут изменяться при каждом рекурсивном вызове. Количество рекурсивных вызовов может быть огра­ничено физическими возможностями используемого компи­лятора.
— 44 —
7.   ++
Язык СИ вначале развивался как язык процедурно ориен­тированный, где воснову программирования была положе­на разработка алгоритмов для решения тех или иных задач. Нов этом языке были заложены возможности для дальней­шего его развития как языка объектно-ориентированного, где воснову положена организация данных имодульное про­граммирование [2].
Так, в языке СИ был введён тип переменных struct, кото­рый под одним именем объединяет несколько разнотипных переменных. Если теперь в эту структуру ввести возмож­ность выполнения различных операций над переменны­ми структурами, тоесть ввести операторы ифункции вэту структуру, получим новый объект, который назвали классом (class). Такой язык СИ вначале назвали как язык СИ - , затем этот язык стали обозначать как С++. Объявлен- ные переменные в классе получили название член-данные, афункции— член-функции. Этот новый объектно-ориенти­рованный язык характеризуется тремя основными свойства­ми: инкапсуляция (сокрытие информации), наследование, полиморфизм.
Инкапсуляция— определение пользователем новых типов данных. Каждый такой тип содержит только определённый на­бор значений иопераций иобразует так называемый абстракт­ный тип данных. При этом никакие другие функции, кроме на­бора операций, недолжны иметь доступа кзначениям типа.
— 45 —
Наследование— это механизм, который строит иерархию типов. Предполагается, что новый класс образуется избазо­вого (родительского) класса ивсе свойства базового класса перетекают вновый класс. Затем кновому классу добавляют­ся новые свойства.
Полиморфизм означает, что одним именем функции мож­но обозначать общее действие, причём каждый тип данных выбирает пригодный для него способ обработки.
Программирование наобъектно-ориентированном языке начинается несчистого листа, ас анализа, какие ранее раз­работанные программы можно использовать путём введения новых классов, тоесть какие классы икакие атрибуты можно унаследовать.
Таким образом, программа наязыке С++ состоит изнабо­ра классов, вэтот набор можно добавлять новые классы или удалять ненужные. Каждый класс состоит изнабора членов­данных ичленов-функций. Влюбой класс можно добавлять новые члены или удалять ненужные. Для того чтобы члены­данные были бы доступны другим классам, перед списком идентификаторов членов-данных необходимо указать тип класса памяти public, атеидентификаторы, которые должны быть недоступны другим классам, используют класс памяти protected.
В связи споявлением операций склассами, кпункту 1.4 добавлены следующие ключевые слова, которые немогут ис­пользоваться в качестве идентификаторов. Это следующие слова:
class delete friend inline new operator overload private protected public template this virtual
— 46 —
В языке С++ нет строгого определения места описания переменных, любую переменную можно описать влюбом ме­сте программы, лишьбы она былабы описана иопределена допервой встречи компилятора сэтой переменной. Однако неследует злоупотреблять этой свободой: сложнее становит­ся управлять идентификаторами. Удобнее, когда идентифика­торы описаны вкаком-то одном месте.
В языке С++ введён новый тип переменных, это тип String (или класс String). Это строка символов неопределённой длины, Переменная этого типа занимает 256 байт памяти ком­пьютера. Спеременными этого типа можно производить мно­гие операции: сравнение, слияние и многие другие. Введена новая операция:— >— выбор члена-данных или члена-функ­ции взаданном классе. Введена также операция ~— операция деструкции (очистка памяти под заданные идентификаторы). Восновном все операторы иоперации вязыке С++ совпадают соператорами иоперациями Языка СИ.
— 47 —
8.  VISUAL C++ 6
Дальнейшим развитием языка С++ является разработка мощнейшего инструмента составления самых разных ираз­личной сложности программ Visual C++ [3]. Во-первых, полностью используются достоинства исходного языка С++, во-вторых, используются практически все средства систем­ных программ типа Windovs, включая средства использования экрана монитора, в-третьих, имеются широкие возможности построения интерфейса рабочих программ и оптимальные возможности отображения на экране монитора результа­тов работы разрабатываемых программ, в-четвёртых, мож­но проводить пробное компилирование ипробные расчёты ещё незавершённых разработок рабочих программ, облегчая проблемы поиска иустранения различного рода ошибок при разработке программного продукта. Остановимся на широ­ко распространённой 6-й версии Visual C++, пригодной для использования вперсональных ЭВМ с 32-хразрядным про­цессором. Эта версия позволяет составлять приложения (ра­бочие программы) любой сложности. Она имеет достаточно дружественный интерфейс и позволяет достаточно просто составлять программный продукт.
8.1. Создание иредактирование первого приложения
Для создания проекта необходимо запустить програм­му Visual C++6, раскрыть меню Fail ивыбрать пункт New. На экране монитора появится окно New, как на рис. 8.1.
— 48 —
Справа вокне Project name указать имя проекта латински­ми буквами, если исходный язык Visual C++ английский. Вокне Location указать путь доступа кпапке сэтим новым проектом. Пусть имя проекта будет Proba, расположенная впапке Visual.
Слева из списка типов приложений меню Project вы­брать пункт MFC AppWizard (.exe) и воздействовать ле- вой кнопкой манипулятора (мыши) накнопку . Сэтого момента начинается создание нового проекта за6 этапов. Накаждом этапе наэкране монитора появляется своё окно для указания необходимых действий.
Вначале появляется окно как нарис.8.2. Если приложе­ние будет работать с одним документом, левой кнопкой манипулятора поставить точку вкнопке Single document. Если проект будет работать смногими документами, нужно поставить точку вкнопке Multiple documents. Состальны­ми предложениями можно согласиться иактивизировать кнопку Next. Если выбрана работа с одним документом, согласиться спредложениями других появляющихся окон, наэкране монитора появится окно, как нарис.8.3.
Рис.8.1. Окно для создания нового проекта
— 49 —
Рис.8.2. Первый этап создания нового приложения
Остальные этапы предназначены для более продвину-
тых программистов, поэтому можно вместо кнопки Next сразу же активизировать кнопку Finich, а в следующем окне активизировать кнопку Ok. Mастер MFC AppWizart создаст приложение с выбранным Вами ранее именем. Наэкране монитора появится окно, как нарис.8.3
В этом окне расположено меню мастера MFC AppWizart, панели инструментов и окно Workspace (пространство имён) сименем проекта. Если вовкладке Class View рас­крыть имя проекта, активизировав кнопку +, топоявляет- ся основной список образованных классов (как нарисун­ке 8.4), которые ждут своего заполнения программистом. Вовкладке Resours появляется список ресурсов для созда­ния нужного интерфейса приложения.
Часть классов, не требующих вмешательства програм­миста, скрыта и всписке Class View не показана. Вокне Workspace приведено 5 имён классов, во многих присут­ствует имя приложения, как нарис.8.4.
— Класс CAboutDig— класс диалога.
— 50 —
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]