- •1. Этапы разработки программы
- •Основные блочные символы
- •Лабораторная работа № 1 условные операторы. Операторы цикла Цель работы
- •Лабораторная работа № 2 массивы целых чисел. Символьные массивы Цель работы
- •Варианты заданий
- •Лабораторная работа № 3 функции. Способы передачи параметров. Матрицы
- •1. Цель работы
- •2. Общие положения
- •Способы передачи параметров
- •Функция main()
- •Области действия функций. Определения и объявления
- •3. Примеры программных реализаций
- •4. Варианты заданий
Способы передачи параметров
В Си принят единый способ передачи параметров, который называется ПЕРЕДАЧЕЙ ПО ЗНАЧЕНИЮ. Выглядит он так:
– формальные параметры являются собственными переменными функции;
– при вызове функции происходит присваивание значений фактических параметров формальным (копирование первых во вторые);
– при изменении формальных параметров значения соответствующих им фактических параметров не меняются.
Единственным исключением из этого правила является передача имени массива в качестве параметра. В этом случае формальный параметр также является собственной переменной, но не массивом, а указателем на него. Поэтому размерность такого массива в функции несущественна и может отсутствовать, а изменение элементов массива – формального параметра приводит к изменению значений массива – фактического параметра функции:
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 };
Инициализатор отделяется от переменной в ее определении знаком "=".
Для простой переменной – это обычная константа, для массива – список констант, заключенных в фигурные скобки и разделенных запятыми. Заметим, что размерность массива может отсутствовать, если транслятор в состоянии определить ее из инициализирующего списка. Если явная инициализация глобальных переменных отсутствует, то они автоматически инициализируются НУЛЕВЫМИ ЗНАЧЕНИЯМИ.