- •Министерство образования Российской федерации новосибирский государственный технический университет
- •Часть 1
- •Работа подготовлена на кафедре
- •Последовательность этапов решения задач при нисходящем проектировании
- •Семь основных элементов программирования.
- •Другие функции вывода: puts() и putchar()
- •Типы данных
- •Использование gets() и getch() для ввода
- •Условные операторы
- •Операции сравнения
- •Логические операции
- •Операторы присваивания
- •Оператор запятая
- •Лабораторная работа № 1 условные операторы. Операторы цикла.
- •Цель работы
- •Общие положения Оператор if
- •Циклические конструкции в программах
- •3. Пример программной реализации
- •4. Варианты заданий
- •5. Контрольные вопросы.
- •Лабораторная работа № 2 массивы целых чисел. Символьные массивы.
- •1. Цель работы.
- •2. Общие положения.
- •3. Примеры программных реализаций
- •Пример 3. Введенное натуральное число записать в виде строки.
- •4. Варианты заданий
- •5. Контрольные вопросы
- •Лабораторная работа № 3 методы сортировки.
- •Цель работы
- •Общие положения
- •Сортировка простыми включениями.
- •Сортировка простым выбором.
- •Сортировка простым обменом.
- •Пример программной реализации
- •Варианты заданий.
- •Лабораторная работа № 4
- •Способы передачи параметров
- •Функция main()
- •Области действия функций. Определения и объявления
- •Примеры программных реализаций
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 5 функции. Массивы указателей.
- •Цель работы
- •Общие положения
- •Примеры программных реализаций
- •Варианты заданий
- •Контрольные вопросы
Способы передачи параметров
В Си принят единый способ передачи параметров, который называется ПЕРЕДАЧЕЙ ПО ЗНАЧЕНИЮ. Выглядит он так:
- формальные параметры являются собственными переменными функции;
- при вызове функции происходит присваивание значений фактических параметров формальным (копирование первых во вторые);
- при изменении формальных параметров значения соответствующих им фактических параметров не меняются.
Единственным исключением из этого правила является передача имени массива в качестве параметра. В этом случае формальный параметр также является собственной переменной, но не массивом, а указателем на него. Поэтому размерность такого массива в функции несущественна и может отсутствовать, а изменение элементов массива - формального параметра
приводит к изменению значений массива - фактического параметра функции:
int SUMMA(int s[], int n) //Сумма элементов массива. Размерность передается
{ // отдельным параметром.
int i, z;
for (i = 0, z = 0; i<n; i++) z + = s[i];
return(z);
}
void main()
{
int c[] = {1,6,4,7,3,56,43,7,55,33};
printf (“Сумма элементов массива = %d”, SUMMA (c,10)) ;
}
Функция main()
В каждой программе должна присутствовать функция main() {...}, которая автоматически вызывается при загрузке программы в память и её выполнении. Более никаких особенностей, кроме указанных, эта функция не имеет.
Программа в целом представляет собой просто набор функций (с обязательной функцией main()), имеющих каждая собственный набор локальных переменных. Кроме этого в ее состав включаются еще переменные, доступные сразу нескольким функциям. Такие переменные называются ГЛОБАЛЬНЫМИ (в Си - ВНЕШНИМИ). Будучи определенными в любом месте программы вне тела функции, они становятся доступными любой функции, следующей за ней по тексту программы:
int B[10];
¦int sum()
¦{ ...B[i]... }
¦ int n;
¦ ¦void nf()
¦ ¦{...B[i]...n...}
¦ ¦
¦ ¦ char c[80];
¦ ¦ ¦ void main()
¦ ¦ ¦ {...B[i]...n...c[k]...}
Области действия переменных B, n, c
Глобальные (внешние) переменные являются наиболее "стабильными" данными в программе. Транслятор переводит их во внутреннее представление, в котором им соответствуют определенные адреса выделенной памяти. Можно сказать, что эти переменные находятся в программе (программном файле) еще до загрузки ее в память. Поэтому их можно инициализировать.
ИНИЦИАЛИЗАЦИЯ - присваивание переменным во время трансляции начальных значений, которые сохраняются во внутреннем представлении программы и устанавливаются при загрузке программы в память перед началом ее работы. Инициализация включается в синтаксис определения переменной:
int a=5, B[10]= {1,5,4,2}, C[]={ 0,1,2,3,4,5 };
Инициализатор отделяется от переменной в ее определении знаком "=".
Для простой переменной - это обычная константа, для массива - список констант, заключенных в фигурные скобки и разделенных запятыми. Заметим, что размерность массива может отсутствовать, если транслятор в состоянии определить ее из инициализирующего списка. Если явная инициализация глобальных переменных отсутствует, то они автоматически инициализируются НУЛЕВЫМИ ЗНАЧЕНИЯМИ.