Практическая информатика



         

Директивное программирование


Директивное программирование - один из наиболее естественных для человека подходов к написанию программ. Ведь программа в этом случае состоит из операторов присваивания и предложений, управляющих последовательностью их выполнения. При написании подобной программы необходимо найти такую цепочку команд, которая приведет в конце концов к вычислению (и, возможно, печати) одной или нескольких искомых величин.

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

При этом исходная программа превращается из одной большой цепочки команд в значительно более короткую и понятную последовательность вызовов подпрограмм, решающих более простые подзадачи. При вызове подпрограммы ей часто передают так называемые параметры, а она после завершения своей работы обычно возвращает некоторый результат. Механизмы передачи параметров в различных языках программирования сильно отличаются друг от друга.

Ниже приводится пример программы на языке C, в которой кроме главной функции main используются еще две подпрограммы - print_array, печатающая элементы переданного ей массива целых чисел, и selection, сортирующая массив, переданный ей в качестве аргумента.

#include <stdio.h>

void print_array(int c[], int n, char* t) { int i; printf("%s",t); for (i = 0; i < n; i += 1) printf("ta[%d]=%d", i, c[i]); printf("\n"); }

void selection(int c[], int n) { int i, j, k, x;

for (i = 0; i < n; i += 1) { for (x = c[k=i], j = i + 1; j < n; j++) if (c[j] < x) x = c[k=j]; c[k] = c[i]; c[i] = x; } }

int main(void) { int a[] = {8, 3, 2, 7, 9, 5};

int n = sizeof(a)/sizeof(int); print_array(a, n, "Исходный массив\n"); selection(a, n); print_array(a, n, "Отсортированный массив\n"); return 0; }




Содержание  Назад  Вперед