Ббк 32. 973-018 г рецензент канд физ мат наук, Ф. А. Мурзин


Download 278.16 Kb.
bet33/68
Sana12.10.2023
Hajmi278.16 Kb.
#1700499
TuriКурс лекций
1   ...   29   30   31   32   33   34   35   36   ...   68
Bog'liq
FIT-Gor-PP3

Определение

Примечание

Main (argc, argv, envp)

Int argc; Char **argv; Char **envp;


{
For (i=0; i < argc; i++)
Printf (”arg%i:%s\n”, i, argv [i]); For (p=0; *p != (char*)0; p++)
Printf (”%s\n”, *p);
}

Заголовок функции.
Описания параметров функции:

  • число аргументов,

  • вектор аргументов,

  • вектор системных переменных.

Цикл вывода аргументов командной строки.



Пример 14. Программа распечатки параметров командной строки и переменных среды на языке Си.
4.2 Структурное программирование

Прагматика стандартного программирования не требует подробного описания – она общеизвестна и подробно исследована во многих работах. Тем не менее, следует отметить ряд моментов, связанных со структурным и функциональным программированием.


Сложность разработки больших программ, функционирующих в стиле локальных изменений состояния памяти, привела к идеям структурного программирования, налагающим на стиль представления программ ряд ограничений, способствующих удобству отладки программ и приближающих технику стандартного программирования к функциональному программированию:

  • дисциплина логики управления с избеганием переходов по меткам (goto_less_style);

  • минимизация использования глобальных переменных в пользу формальных параметров процедур (global_variable_harmful);

  • полнота условий в ветвлениях, отказ от отсутствия ветви ―else‖;

  • однотипность результатов, полученных при прохождении через разные пути.

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





    1. Функциональная модель ИП

С практической точки зрения любые конструкции стандартных языков программирования могут быть введены как функции, дополняющие исходную систему программирования, что делает их вполне легальными средствами в рамках функционального подхода. Необходимо лишь четко уяснить цену такого дополнения и его преимущества, которая обычно
связывается с наследованием решений и привлечением пользователей. В первых реализациях Lisp-а были сразу предложены специальные формы и структуры данных, служащие мостом между разными стилями программирования, а заодно смягчающие недостатки исходной, слишком идеализированной, схемы интерпретации S-выражений, выстроенной для учебных и исследовательских целей. Важнейшее средство такого рода, выдержавшее испытание временем – prog-форма, списки свойств атома и деструктивные операции, расширяющие язык программирования так, что становятся возможными оптимизирующие преобразования структур данных, программ и процессов, а главное – раскрутка систем программирования.
Prog-форма языка Lisp 1.5 может рассматриваться как абстрактная модель ИП, в которой при интерпретации используются отдельные ассоциативные таблицы для хранения параметров доступа к значениям переменных и определениям функций и процедур в памяти. Это позволяет независимо задавать механизмы доступа к именам переменных и наименованиям процедур.
Применение возможностей prog-выражений позволяет писать
«паскалеподобные» программы, состоящие из операторов, предназначенных для исполнения (точнее, «алголоподобные» (Algol-like), т. к. они появились за десять лет до Паскаля. Теперь более известен Pascal). Для примера prog-выражения приводится императивное определение функции LENGTH, сканирующей список и вычисляющей число элементов на верхнем уровне списка. Значение функции LENGTH – целое число.
Программу можно примерно описать следующими словами (Стилизация
примера от Маккарти.):




Download 278.16 Kb.

Do'stlaringiz bilan baham:
1   ...   29   30   31   32   33   34   35   36   ...   68




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling