- •1.Алгоритм. Основные свойства алгоритмов. Описание алгоритмов
- •2. Понятие о структурном программировании
- •3. Структура программы на языке c. Синтаксис и семантика. Лексемы
- •4. Порядок выполнения программ на языке c
- •5. Тип данных как совокупность значений и действий. Внутреннее представление чисел в эвм. Простые типы языка c
- •6. Операции и выражения в языке c
- •7. Приоритеты операций в языке c
- •8. Элементарный ввод-вывод в языке c. Спецификации преобразования
- •9. Условный операторы.
- •10. Вложенные условные операторы
- •11. Оператор switch
- •12. Оператор цикла while
- •13. Оператор цикла do-while
- •14. Оператор цикла for
- •15. Вложенные циклы
- •16. Одномерный массив.
- •17. Двумерные массивы
- •18. Типовые действия с массивами
- •19. Сортировка элементов одномерного массива
- •20. Указатель. Адресная арифметика
- •21. Операции над указателями
- •22. Связь одномерных массивов с указателями
- •23. Связь двумерных массивов с указателями
- •24. Массивы указателей !!!!!
- •25. Строки символов
- •26. Использование указателей для адресации строк символов
- •27. Функции. Объявление и описание
- •28. Функции без аргументов. Функции с аргументами. Оператор return
- •29. Использование указателей в качестве параметров функций
- •31. Причины появления ошибок в программах
- •32. Тесты. Отладка программ
- •33. Проверка программ «вручную». Анализ программ
- •34. Проверка программ «вручную». Прокрутка
28. Функции без аргументов. Функции с аргументами. Оператор return
Во общих чертах - это функция, для работы которой не нужны исходные данные.
Например, ввод строки или вывод меню.
Пример1. Вывод меню
void ShowMenu( void ) // вместо void в скобках можно ничего не писать
{
// а вот тип функции будет void - если она ничего не возвращает (возвращает тип void)
// Алсо, если перед именем функции ничего не написано, значит тип - int.
puts( "1. Ввести строку." );
puts( "2. Вывести строку." );
puts( "3. Выход." );
}
Аргумент - значение или ссылка на переменную, передаваемая функции для использования (если передается как значение) или изменения (если передается ссылка) внутри функции.
Для чего нужен - сама функция это отдельная подпрограмма, и использование данных из основной программы в ней возможно двумя путиями: передачей данных в виде аргументов или через глобальные (для всей программы) переменные. Второй способ - хуже (но иногда очень эффективен)
Что делает - то же, что и любая переменная в программе. Несет какое-то значение, которое используется в программе.
29. Использование указателей в качестве параметров функций
Использование указателей в качестве параметров функции оправдано когда необходимо модифицировать параметры, передать массив или его части.
void f( int*, int* )
void main( )
{
int x = 5, y = 10;
printf( "x = %d, y = %d \n", x, y );
f( &x, &y )
printf( "x = %d, y = %d \n", x, y );
}
void f( int *y, int *x )
{
int t;
t = *y;
// ололо здесь какая-то байда с параметрами, я ее не записал)
// ну, допустим (на самом деле это не так уж и важно):
t++;
*x = 100500;
}
Если в качестве параметров функции используется массив, то внутрь попадает начальный адрес массива. (К.О.: адрес первого элемента этого массива)
Оператор return
Оператор return завершает выполнение функции, в которой он задан, и возвращает управление в вызывающую функцию, в точку, непосредственно следующую за вызовом. Функция main передает управление операционной системе. Формат оператора:
return [выражение] ;
Значение выражения, если оно задано, возвращается в вызывающую функцию в качестве значения вызываемой функции. Если выражение опущено, то возвращаемое значение не определено. Выражение может быть заключено в круглые скобки, хотя их наличие не обязательно.
Если в какой-либо функции отсутствует оператор return, то передача управления в вызывающую функцию происходит после выполнения последнего оператора вызываемой функции. При этом возвращаемое значение не определено. Если функция не должна иметь возвращаемого значения, то ее нужно объявлять с типом void.
Таким образом, использование оператора return необходимо либо для немедленного выхода из функции, либо для передачи возвращаемого значения.
Пример:
int sum (int a, int b) { renurn (a+b); }
Функция sum имеет два формальных параметра a и b типа int, и возвращает значение типа int, о чем говорит описатель, стоящий перед именем функции. Возвращаемое оператором return значение равно сумме фактических параметров.
Пример:
void prov (int a, double b) { double c; if (a<3) return; else if (b>10) return; else { c=a+b; if ((2*c-b)==11) return; } }
В этом примере оператор return используется для выхода из функции в случае выполнения одного из проверяемых условий.
Функции для строк
Для работы со строковыми функциями типа strcpy() нужно включить заголовочный файл STRING.H с помощью следующей строки:
#include <string.h>
1) strlen( строка )
эта функция вернет длину строки в символах (без нулевого байта). таким образом, strlen("hello") вернет 5.
2) strcpy( destination, source )
Оператор присваивания для строк не определен. Если c1 и c2 - символьные массивы, вы не сможете скопировать один в другой так:
c1 = c2; // так нельзя
Чтобы скопировать одну строку в другую, вместо использования оператора присваивания вызовите функцию копирования строк strcpy().
strcpy(c1,c2); // четкий и верный годный вариант
Оператор копирует символы, адресуемые указателем c2, в память, адресуемую указателем c1, включая нулевые байты.