
- •Предисловие
- •Библиографический список
- •Контрольные вопросы
- •Библиографический список
- •Тема 2 Переменные и базовые типы данных языка с
- •Контрольные вопросы
- •Библиографический список
- •Тема3 Организация циклов в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 4 Принятие решений. Условные операторы в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 5 Числовые массивы в языке программирования с
- •Тип имя_массива[размер];
- •Тип имя_массива[размер1] [размер2];
- •Тип имя_массива[размер1] [размер2] [размерN];
- •Контрольные вопросы
- •Библиографический список
- •Тема 6 Символьные массивы в языке с. Работа со строками
- •Тип имя_массива[размер];
- •Тип имя_массива[размер1] [размер2];
- •Тип имя_массива[размер1] [размер2] [размерN];
- •Контрольные вопросы
- •Библиографический список
- •Тема 7 Указатели в языке программирования с
- •Int *ptr; // объявили указатель на целую переменную
- •Контрольные вопросы
- •Библиографический список
- •Тема 8 Указатели и массивы в языке с
- •Int data[7]; // обычный массив
- •Int *pd[7]; // массив указателей
- •Контрольные вопросы
- •Библиографический список
- •Тема 9 Динамическое распределение памяти в языке с
- •If (!ptr) // условие логического отрицания
- •If (!ptr) // условие логического отрицания
- •Контрольные вопросы
- •Библиографический список
- •Тема 10 Функции Общие сведения о функциях языка с
- •Fun(тип имя_перем1, тип имя_перем2, , тип имя_перем n)
- •Контрольные вопросы
- •Библиографический список
- •Тема 11 Указатели и функции в языке программирования с
- •Тип_возвращаемый_функцией(*имя_указателя_на_функцию)(аргументы);
- •Контрольные вопросы
- •Библиографический список
- •Тема 12 Файловый ввод/вывод в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 13 Структуры – производные типы данных языка с
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Контрольные вопросы
- •Библиографический список
- •Тема 14 Объединения и перечислимые типы в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 15 Структуры и функции языка с
- •Контрольные вопросы
- •Библиографический список
- •Тема 16 Операции с разрядами (битами) в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 17 Программы, состоящие из нескольких файлов, на языке с
- •Спецификатор extern
- •Спецификатор static
- •Спецификатор register
- •Спецификатор auto
- •Контрольные вопросы
- •Библиографический список
- •Тема 18 Рекурсивные алгоритмы и функции
- •Переместить (a, b);
- •Контрольные вопросы
- •Библиографический список
- •Тема 19 Препроцессор языка с
- •Директива #define
- •Директива #error
- •Директива #include
- •Директивы условной компиляции
- •2_ Я_последовательность операторов программного кода
- •3_ Я_последовательность операторов программного кода
- •Директива #line
- •Директива#pragma
- •Предопределенные символические константы
- •Макрос подтвержденияassert
- •Контрольные вопросы
- •Библиографический список
- •Тема 20 Программы на языке с при использовании статически подключаемой библиотеки
- •Контрольные вопросы
- •Библиографический список
- •Тема 21 Использование аргументов командной строки в с
- •Контрольные вопросы
- •Контрольная работа № 2 Покупки в супермаркете
- •Приложение Управление конфигурациями проекта в Visual Studio 2010
Контрольные вопросы
Что такое динамическая память?
Какие средства языка Сиспользуются для хранения данных с динамическим выделением памяти компьютера?
Какие основные библиотечные функции языка Сиспользуются для динамического распределения памяти?
Каково различие в действии функций malloc()иcalloc()?
Как осуществляется перераспределение динамической памяти?
Для каких типов данных возможно динамическое распределение памяти?
В каком случае функции динамического распределения памяти возвращают нулевой указатель?
Библиографический список
Шилдт Г. Полный справочник по С : пер. с англ./Г. Шилдт. – 4-е изд. – М.: Вильямс, 2007. – 704 с.
Керниган Б. У. Язык программирования С : пер. с англ./Б. У.Керниган, Д. М.Ритчи. – 2-е изд. – М.: Вильямс, 2007. – 304 с.
Шеннон Р. Имитационное моделирование систем – искусство и наука/Р.Шеннон. – М.: Мир, 1978. – 418 с.
Тема 10 Функции Общие сведения о функциях языка с
Рассматриваются особенности объявления и определений функций, способов задания формальных параметров и типов возвращаемых данных, вызов функций, передача аргументов по значению и ссылке, функции с переменным числом аргументов.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
В основе всех программ на языке программирования Слежат одни и те же фундаментальные элементы – функции [2]. Например, к системным функциям относятсяprintf(),scanf_s(),gets_s(),putchar()и др.Функции– это строительные элементы языкаСи то место, в котором выполняется вся работа программы [1]. Большие программы обычно состоят из нескольких пользовательских функций и ряда системных функций.Функция– самостоятельная единица программы. Функции повышают уровень модульности программы, облегчают ее чтение, внесение изменений и коррекцию ошибок.
В частности, функция main()является обязательной для любой программы. Во всех программахСопределяется единая внешняя функция с именемmain(), служащая точкой входа в программу, то есть первой функцией, выполняемой после запуска программы [3].
Ни одна программа в языке Сне может обойтись без функций.
Функция в языке Сиграет ту же роль, что и подпрограммы или процедуры в других языках [4]. Каждая функция имеет имя и список аргументов. По соглашению, принятому в языкеС, при записи имени функции после него ставятся круглые скобки [4]. Это соглашение позволяет легко отличить имена переменных от имен функций.
Рассмотрим модель программы, в которой, кроме функции main(), содержатся еще три функции [4]. Код примера будет следующим:
#include <stdio.h>
int main(void) /* главная функция */ { /* Начало тела функции */ function1(); /* вызов первой функции */ function2(); /* вызов второй функции */ function3(); /* вызов третьей функции */ } /* конец тела функции main() */
/* Начало определения первой функции */ function1() { /* начало тела первой функции */
/* Операторы первой функции */ /* Конец тела первой функции */ }
/* Начало определения второй функции */ function2() { /* Начало тела второй функции*/ /* Операторы второй функции */ /* Конец тела второй функции*/ }
/* Начало определения третьей функции */ function3() { /* Начало тела третьей функции*/ /* Операторы третьей функции */ /* Конец тела третьей функции*/ }
|
В представленной программе имеются четыре функции: main(),function1(),function2(),function3(), не содержащие аргументов. Позднее рассмотрим функции, которые имеют аргументы. Аргументы функции – это величины, которые передаются функции во время ее вызова. Аргумент, стоящий в операторе вызова функции, называетсяфактическим параметром. Аргументы, стоящие в заголовке функции, называютсяформальными параметрами. В языкеСфункция может возвращать значение в вызывающую программу посредством оператораreturn. Оператор возврата из функции в точку вызова имеет две формы [5]:
return;
return выражение;
В общем виде функция выглядит следующим образом [1]:
возвр-тип имя-функции(список параметров)
{
Тело_функции
}
Тело_функции – это часть определения функции, ограниченная фигурными скобками и непосредственно размещенная вслед за заголовком функции. Оно может быть либо составным оператором, либо блоком [1]. В языкеСопределения функций не могут быть вложенными, т.е. внутри одной функции нельзя объявить и расписать тело другой функции.
Возвращаемый тип функции возвр-типопределяет тип данного, возвращаемого функцией. Это могут быть, например,int,float,doubleи т.д. В случае когда функция ничего не возвращает, ей присваивается типvoid.
Функция может возвращать любой тип данных, за исключением массивов. Список параметров – это список, элементы которого отделяются друг от друга запятыми [1]. При вызове функции параметры принимают значения аргументов. Если функция без параметров, то такой пустой список можно указать в явном виде, поместив для этого в скобки ключевое слово void. Все параметры функции (входящие в список параметров) должны объявляться отдельно, причем для каждого из них надо указывать и тип, и имя. В общем виде список объявлений параметров должен выглядеть следующим образом [1]: