Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вопросы и задачи для самостоятельного решения




Процедуры и функции

 

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

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

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

 

void My_Strcpy(char *Destination, char *Source)

 

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

Вслед за заголовком указывается тело — исполняемая часть процедуры. В нем указывается как производится обработка параметров. Например, для данного заголовка, подойдёт тело следующего вида:

 

{

while ((*Destination++ = *Source++)!= '\0');

}

Как видим, обработка продолжается до тех пор, пока не будет переслан символ с нулевым кодом — признак конца символьной строки.

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

/***********************************************************************

*

* Наименование: My_Strcmp

*

* Назначение: Функция сравнивает значения двух символьных

* строк и возвращает TRUE если они равны и

* FALSE в противном случае.

*

* Входы: String1 & String2 две строки для сравнения.

*

* Выходы: Нет

*

* Возвращаемое значение:

*

* TRUE Строки одинаковые

* FALSE Строки различаются

*

**********************************************************************/

 

BOOL My_Strcmp(CHAR *String1, CHAR *String2)

{

while (*String1!= '\0')

{

if (*String1++!= *String2++)

{ /* обнаружено несовпадение */

return FALSE;

}

}

/* Дошли до конца строки. Надо проверить, что концы совпали */

return (*String1 == *String2);

}

 

 

Задайте на языке Си тип Дек.

Чему будет равен х после выполнения этих строчек:

х=5; х-= х++ - --х;

Реализуйте на языке C функцию конкатенации двух строк.

 

В int представлении чисел можно обменять значения двух переменных не используя промежуточной памяти:

int I, J;

....

I = I + J; J = I – J; I = I – J;

справедливо ли подобное преобразование для float представления?

 

Реализуйте на языке C функцию замены подстроки в строке на заданную строку.

Реализуйте на языке C следующую задачу: «Заменить в исходной строке все цифры на соответствующее количество символов «*», равное значению цифры (0 заменять на пустую подстроку, 9 на *********). Строка передаётся процедуре-функции как входной/выходной параметр». Рекомендуемое имя для процедуры Convert_String.




Поделиться с друзьями:


Дата добавления: 2014-12-26; Просмотров: 296; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.