Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции за I семестр.docx
Скачиваний:
5
Добавлен:
17.04.2019
Размер:
267.81 Кб
Скачать

12.4. Преобразования строковых типов.

а) Преобразование из массива char в String и наоборот.

Как упоминалось выше, для преобразования массива char к типу String достаточно просто присвоить его переменной типа String:

char c[]="Привет!";

String s=c;

Обратное же преобразование автоматически не делается. Для его осуществления используется метод c_str() типа String. Он создает временный массив char, который создается только на время выполнения оператора, содержащего этот метод:

s=Edit1->Text;

WinExec(s.c_str(), SW_SHOW);

// WinExec - запуск программы с заданным именем

// Функция WinExec требует, чтобы имя было массивом char

Если же нужно использовать полученный массив char в последующей программе, его надо скопировать в "постоянный" (объявленный) массив char :

char a[100];

strcpy(a, s.c_str());

Таким образом, для ввода массивов char в оконных приложениях необходимо использовать функцию strcpy и метод c_str() :

char a[100];

strcpy(a, Edit1->Text.c_str());

б) Преобразование из String в простую переменную типа char.

При таком присваивании нужно указать номер символа в строке, который будет присвоен:

String s='*';

char c=s[1];

Обратное же присваивание не вызывает трудностей:

char c='*';

String s=c;

в) Преобразование String и числовых типов.

Функции преобразования были описаны выше в теме "Функции ввода-вывода, Ввод-вывод в оконных приложениях":

String IntToStr(int x); - int  String

int StrToInt(String S); - String  int

double StrToFloat(String S); - String  double

String FloatToStr(double x); - double  String

String FloatToStrF(double x, Format, int p, int d);

- double  String с указанием формата и точности.

Пример 1:

String s="123";

int i=StrToInt(s); // i=123; автоматического

// преобразования String в тип int не происходит

// (хотя наоборот - происходит)

Пример 2: Вывести в одну строку Memo1 переменные N1 и N2 типа int, разделяя их пробелом:

Memo1->Lines->Add(IntToStr(N1)+" "+IntToStr(N2));

// явное преобразование типов необходимо,

// иначе знак + не был бы истолкован по типу String

13. Функции пользователя и классы памяти.

13.1. Сущность и предназначение функций.

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

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

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

Следующим шагом может являться группировка функций и связанных с ними данных в отдельные файлы (модули), компилируемые раздельно. Получившиеся в результате компиляции объектные модули объединяются в исполняемую программу с помощью компоновщика (Linker). Разбиение на модули уменьшает время перекомпиляции и облегчает процесс отладки, скрывая несущественные детали за интерфейсом модуля, что позволяет отлаживать программу по частям. Для того чтобы использовать модуль, достаточно знать только его интерфейс (названия функций и их параметры), а не все детали его реализации.

Разделение программы на максимально обособленные части (подпрограммы) является довольно сложной задачей, которая должна решаться на этапе проектирования программы.

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

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

"Основная часть" программы в языке Си также считается функцией - функцией main (основная, главная), с которой и начинается выполнение программы. Функциями являются и обработчики событий (например, Button1Click) в оконных приложениях. Таким образом, любая программа на языке Cи состоит из функций.