Цель лекции:
За те пятьдесят с небольшим лет, которые существует дисциплина: "программирование", - сменилось несколько поколений правил, концепций, моды, взглядов на то, как надо "писать программы". Все эти правила, концепции, взгляды, мода, наконец, позже назвали в информатике "
В конце списка представлены языки программирования и их создатели, внесшие значительный вклад в популяризацию этих парадигм.
В процессе своего развития эти парадигмы "мутировали", "отпочковывались", "объединялись" (так, язык Си объединил в себе процедурную и структурированную парадигму). В результате этих "
Эти три совершенно разные по подходу парадигмы составляют основу современного программирования. Хотя в настоящее время наиболее "модной" является объектно-ориентированная парадигма, остальные парадигмы также используются на практике и изучаются в ВУЗах. Их мы и рассмотрим ниже.
Кроме деления языков программирования по парадигмам, существует также деление языков на "
Декларативными называются языки программирования, в которых алгоритм работы с данными "зашит" в языке программирования, а сама программа представляет собой данные, упорядоченные и структурированные таким образом, что их легко обрабатывают "стандартные" алгоритмы вывода. В декларативных языках как бы "нет разницы" между данными и алгоритмом, их обрабатывающим. От "значения" данных, подаваемых на вход программы, зависит дальнейшее направление расчетов. Примерами
Эта парадигма является самой "древней" и, одновременно, - самой простой в реализации и обучении программирования. На основе этой парадигмы изучаются языки программирования в школе. И поэтому, вполне естественно, автор поставил ее на первое место.
"Истоки" процедурной
В 1957 году Бэкус разработал первый язык высокого уровня: ФОРТРАН. Эта аббревиатура переводится как: "
В реализации этих языков была предусмотрена (как и в ассемблере) возможность "разбивки общего алгоритма" на несколько независимых модулей: "процедур". "Нанизывая" процедуры в основном модуле программы, как гирлянды на нитку, можно получить алгоритмы любой сложности. В этом и состоит преимущество
Таким образом, возникла "процедурная парадигма", гласящая:
"Реализацию алгоритмов вычислений необходимо создавать с помощью мелких, не зависимых друг от друга процедур, которые вызывают друг друга в соответствии с логикой программы".
Эта парадигма проста не только в "написании" алгоритма, но и его отладке: нужно убедиться в "работоспособности" каждого из модулей, что намного проще, чем отладка всего алгоритма целиком.
Среди языков, поддерживающих процедурную парадигму программирования, используются следующие языки программирования:
Все они поддерживают создание "модулей" - функций и подпрограмм, которые разрабатываются и тестируются независимо, и осуществление "вызовов" между ними.
Прежде, чем передать код программы на обработку компилятору, программист должен соответствующим образом оформить код программы. В этом разделе даются общие правила оформления кода программы на разных языках программирования.
В языке Quick Basic есть следующие правила оформления программ:
STOP ";END ";REM ", которые указываются сразу после метки (или вместо метки);SUB ", за которым идет имя подпрограммы;На языке Си и, частично, С++, существуют следующие правила оформления программ:
include ". При этом имена заголовочных файлов, находящихся в одном каталоге с файлами-описаниями алгоритма, заключаются в кавычки, а имена файлов, пути к которым прописаны в переменной операционной системы: " INCLUDE ", заключаются между знаками: "<…>", например:#include <stdio.h>#include "myprog.h"main ", - управляющая вызовом всех остальных функций и подпрограмм.WinMain. Подробнее об этой функции смотри [89].main " из пункта 5 может возвращать целое значение (тип "int"). Это значение впоследствии используется при запуске функции внутри командного файла оболочки операционной системы, для его реакции на неудачный результат работы этой функции. Принято, что в случае успешного результата своей работы функция " main " возвращает нулевой результат.main " может принимать в качестве аргументов следующие main( int argc, char *argv[], char *env[]), где
argc - число аргументов у функции. Эта переменная принимает значение 1 в случае отсутствия опций и параметров, 2 в случае присутствия одного параметра и т.п.;*argv[] - массив символьных переменных - указателей на опции и аргументы программы, запускаемой из командной строки. При этом элементу "0" соответствует полное путевое имя файла с запускаемой программой. Элементам с номерами: "1" - "argc-1" соответствуют аргументы программы, набранные в командной строке, с соответствующими номерами (по-порядку);*env[] - массив символьных переменных - указателей на системное окружение операционной системы, в которой запускается скомпилированная программа."//" ;main ", либо в отдельных файлах (с расширениями: "*.C" и "*.Build ") проект в IDE (с именем: "<имя проекта>" ), а затем запустить ее, либо набрав в командной строке: <имя проекта>.exe {<опции>}*, либо щелкнув на иконке этой программы (в Windows).Подробнее о других аспектах программирования на C/C++ смотри: [31, 51, 92,78]
В языке Perl существуют следующие правила оформления программных модулей:
#!<путь к интерпретатору Perl> {<опции>}
Например:
#!/usr/bin/perl
#!perl -w
-w означает: "включить отладку сценариев"sub ".sub ", после которого идет блок с операторами. Подпрограмма завершается при выходе из этого блока:sub <имя функции> {<тело функции>}
[<переменная>=] '<имя функции> [(<аргументы>)]где
<переменная> - присвоенное значение-результат работы функции; <имя функции> - имя, зарезервированное в 3.4. Аргументами могут быть строковый литерал либо ссылка:<аргументы> ::= {<литерал>|\<имя фактического параметра>}+
@_ ".exit( <целое число> ) "). По "джентльменскому соглашению" программа возвращает "0" в случае своего нормального завершения.perl <полное имя макроса> {<аргументы>}
где <полное имя макроса> - <аргументы> - передаваемые программе аргументы-значения.В данной лекции Вы познакомились с процедурной парадигмой и ее реализациями на языках Quick Basic, Си/C++ и Perl. В приложениях и пунктах для самостоятельной работы Вы легко разберетесь с особенностями программирования на языках оболочек операционных систем: MS-DOS Command Shell и
| Термин | Англ. Термин | Разъяснение |
|---|---|---|
| программирование 1. | programming 1. | Раздел |
| программирование 2. | programming 2. | Процесс подготовки задач для их решения на ЭВМ. Включает следующие этапы: во-первых, поиск алгоритмического решения, во-вторых, составление программы на языке ЭВМ, в-третьих, трансляция с языка программирования на |
| алгоритмическое решение | algorithmic decision | Получение алгоритма решения задачи. Теоретической основой поиска этого решения занимается наука алгоритмика. |
| составление (программ) | building (of program) | То же, что и кодирование. |
| кодирование (программ) | coding (of program) | Составление (запись) алгоритма на одном из языков программирования. |
| трансляция (программы) | translation (of program) | Перевод инструкций (операторов) языка программирования ЭВМ в ее машинные коды. Трансляцию выполняют специальные программы- |
| машинный код | code of machine | Двоичный код (цифры), в котором специфичным для данной ЭВМ правилам кодируются данные и программы, посылаемые ей на исполнение. |
| программа | program | Полное и точное описание на некотором формальном языке предназначенных к выполнению работ, с учетом всех обстоятельств, общих целей и условий, на основании ранее найденных алгоритмов и имеющихся средств ЭВМ. Текст программы является официальным ее документом. |
| текст программы | text (of program) | |
| язык (программирования) | programming language | |
| оператор (языка программирования) | operator (of programming language) | Предписание в данном языке программирования, предназначенное для задания некоторого завершенного действия в процессе обработки информации на ЭВМ. |
| парадигма программирования | paradigm (of programming) | Совокупность правил, концепций, взглядов, стандартов, "моды", по которым в то или иное время пишутся программы программистами. Выбор парадигмы однозначно определяет язык программирования, синтаксис и описание различных конструкций (операторов) этого языка, использование и представление структуры данных, стандарты в написании программ и комментариев. Наиболее востребованными в настоящее время являются следующие парадигмы: процедурная (или модульная), функциональная, структурированная, логическая, объектно-ориентированная ( |
| структура данных | data structure | Упорядоченное множество элементов данных, не зависящее от их физической реализации, вместе с "разрешенными" операциями над этими данными. Примерами структуры данных могут служить база данных, база знаний, формат файлов для приложений, документ XML, язык разметки, графический файл и т.п. Н. Вирт предложил формулу: "программа" := "алгоритм" + "структура данных". |
| процедурная парадигма | procedural paradigm | Парадигма, гласящая: "Реализацию алгоритмов вычислений необходимо создавать с помощью мелких, не зависимых друг от друга процедур, которые вызывают друг друга в соответствии с логикой программы". На структуру данных ограничения не накладываются (программа управляет данными). |
| модульная парадигма | modular paradigm | см. процедурная парадигма |
| структурированная парадигма | structural paradigm | Развитие идей модульной парадигмы, гласящее следующее: "Каждая подпрограмма должна иметь ограниченный объем, выполнять одну специфичную функцию для обработки данных и использовать только три базовых элемента алгоритма: линейную, ветвящуюся и циклическую структуру". Основная цель |
| объектно-ориентированная парадигма | object-oriented paradigm | Парадигма, ориентированная на работу с "объектами" и "сообщениями". Объект - это пакет информации (структурированные данные) вместе с описанием процедур ("методов") манипулирования ими, а сообщение - это условие одного из методов. В отличие от модуля процедурной парадигмы, сообщение только определяет, что желает выполнить |
| логическая парадигма | logic paradigm | В этой парадигме в качестве "единого алгоритма" вычислений является алгоритм символьной логики, управляющий всеми операциями с данными. Все языки в этой парадигме являются декларативными языками. |
| императивные языки | imperative languages | Языки программирования, в которых "код управляет данными". В этих языках даются инструкции по |
| декларативные языки | declarative languages | В данных языках программирования "данные управляют программой". От значения данных, поступающих на вход программы, зависит направление расчетов. При этом алгоритм обработки данных является стандартным и как бы "зашит" в язык программирования. |
| инструкция | instruction | Предписание исполнителю (человеку или автомату) на выполнение тех или иных операций. В языке программирования инструкцией может быть прагма |
| пошаговое (выполнение) | step-by-step (executing) | Выполнение алгоритма последовательно, инструкция за инструкцией, в порядке их появления в программе. |
| символическая логика | symbolic logic | Представление формальной логики на основе формализованного языка. |
| формальная логика | formal logic | Наука о методах анализа высказываний и доказательств, в которой рассматриваются абстрактные символы и сформированные из них высказывания, но не придается никакого значения семантике этих абстракций. |
| последовательность действий | sequence of operation | Правило, по которому любой алгоритм выполняется последовательно, инструкция за инструкцией, а не в произвольном порядке. Линейная последовательность действий при этом может нарушаться при использовании ветвлений и циклов, а также |
| линейная последовательность | linear sequence | Последовательность действий, при которой алгоритм выполняется шаг за шагом, инструкция за инструкцией, от начала последовательности до ее конца. Алгоритм, состоящий только из одной линейной последовательности действий, называется линейным алгоритмом. Линейная последовательность действий внутри ветвления или цикла называется его телом. |
| тело | body | Линейная последовательность инструкций внутри цикла, ветвления или процедуры. |
| данные | data | Представление различной информации в виде, позволяющей автоматизировать ее сбор, хранение, передачу и дальнейшую ее обработку в ЭВМ. Данными могут быть набор знаков, цифр и т.п., над которыми можно выполнять различные операции. |
| упорядоченные данные | ranked data | Данные, обработанные человеком и приведенные в такой вид, что они могут быть переданы последовательно, без дополнительной ручной обработки, на обработку в ЭВМ. Основное свойство упорядоченных данных - способность передавать их в ЭВМ в том же порядке, в котором происходит считывание ею данных для обработки. |
| устройство | device | Устройство для внешней обработки информации, подключенное к ЭВМ. Различают |
| факт | fact | На языке ПРОЛОГ является аналогом данных. Представляет собой некоторое свойство, применимое к значению некоторых переменных, которое само по себе может принимать значение "истина" или "ложь". Например, факт отец(Александр, Юрий) говорит о том, что значение "Александр" связано со значением "Юрий" отношением "отец", и что это отношение - истинно. |
| правило | rule | Представляет собой некоторое свойство ("отношение") между несколькими переменными, которое может быть истинным или ложным, в зависимости от того, совпадают или нет значения переменных с их значениями, записанных в фактах. |
| продукция | production | Правило, по которому из фактов доказывается истинность или ложность заданного утверждения или ищется набор значений переменных, при котором это утверждение истинно. В языке ПРОЛОГ продукции вместе с системой |
| экспертная система | expert system | Программа, написанная инженером по знаниям, позволяющая моделировать рассуждения эксперта в некоторой области знаний, делать вместо него выводы и объяснять полученные результаты. Экспертные системы пишутся, как правило, на языке |
| транслятор (языка программирования) | translator (of the programming language) | Программа, переводящий алгоритм, написанный на языке программирования высокого уровня, в объектный код или в |
| компилятор | compiler | |
| интерпретатор | interpreter | |
| объектный код | object code | Код, генерируемый компилятором, который максимально приближен к машинным кодам ЭВМ. В готовую к исполнению на ЭВМ программу этот код преобразуется при помощи компоновщика. |
| псевдокод | pseudocode | Некоторый код, не обязательно являющийся машинным кодом, который может исполняться ("интерпретироваться") программой-оболочкой. К " |
| искусственный интеллект | artificial intelligence | Совокупность алгоритмов, реализующих действия, ранее выполняемые только человеком. Искусственным интеллектом также называется часть информатики, алгебры и т.п., изучающая эти алгоритмы. |
| архитектура "фон Неймана" | von Neumann machine | Любая ЭВМ, удовлетворяющая следующим требованиям. Во-первых, ее основные блоки - |
| калькулятор | calculator | Прибор для "ручного" счета численных величин, прежде всего, их сложения, вычитания, умножения, деления, нахождения "обратной" величины и извлечение квадратного корня. Калькуляторы делятся на бухгалтерские, инженерные и программируемые калькуляторы. |
| ассемблер | assembler | Язык программирования "низкого уровня", максимально приближенный к "машинным кодам". Программирование на ассемблере позволяет создавать эффективные программы, однако размеры текста программы и время отладки программы являются столь большими, что ограничивает использование ассемблера только задачами написания драйверов, критически важных программ и утилит. |
| архитектура ЭВМ | computer architecture | Описание некоторой |
| регистр | register | Сверхоперативная память |
| процессор | processor | |
| сопроцессор | coprocessor | Процессор, осуществляющий дополнительные вычисления на компьютере, но, в отличие от |
| прикладной программист | applications programmer | Лицо, специализирующееся в написании прикладных программ. |
| прикладная программа | application | Программа, способствующая выполнению задачи, возложенной на данную ЭВМ. Прикладными программами могут быть бухгалтерские, финансовые, офисные, научные, инженерные, графические, издательские и т.п. программы. Прикладные программы следует отличать от операционных систем и |
| процедура | procedure | Смотри модуль программный. |
| модуль (программный) | module | Программа, используемая в качестве составной части других программ, либо как самостоятельная программа автономного приложения. |
| функция | function | Программный модуль, возвращающий одно (и только одно) значение функции. Этим это определение похоже на определение функции в "алгебраическом" смысле. Функция может содержать |
| объявление | declaration | Указание имени, типа |
| Язык C-- | C-- language | Один из клонов языка Си, содержащий множество функций и "вставок" на языке |
| драйвер | driver | Программа, управляющая работой какого-либо устройства ЭВМ, которая позволяет операционной системе и прикладным программам осуществлять ввод-вывод на это устройство, не прибегая к "прямому" программированию устройства в машинных кодах. Для разных устройств и для разных операционных систем существуют свои драйверы. Однако существуют и "универсальные" драйверы устройств. |
| командный файл | command file | Файлы |
| алгоритм | algorithm | Сформированный на некотором (естественном или |
| подпрограмма | subroutine | Программный модуль, не возвращающий своего значения, а передающий измененные значения через |
| ФОРТРАН | FORTRAN | Аббревиатура от " |
| численные алгоритмы | numerical algorithm | Алгоритмы численных расчетов, применяемых в научной и экономической областях. Численные алгоритмы позволяют проводить "глубокую и сложную обработку" небольшого количества исходных численных значений. |
| коммерческие алгоритмы | algorithm for business | Алгоритмы численных расчетов, применяемых в бизнесе и экономике. Эти алгоритмы позволяют проводить несложную числовую обработку большого количества исходных данных, расположенных на разных носителях. |
| КОБОЛ | COBOL | Аббревиатура от "Common Business Oriented Language" - "язык, ориентированный на общий бизнес". На этом языке пишутся коммерческие алгоритмы по хранению и обработке коммерческих данных на различных носителях информации. |
| Quick Basic ("квик бейсик") | Quick Basic | Реализация интерпретатора языка Бейсик от корпорации Microsoft. Эта версия бейсика работает на операционных системах, начиная с MS-DOS 6.0 |
| расширение (файла) | extension (of the file) | Часть имени файла, расположенная в конце его имени и отделенная от остальной части имени файла знаком "точка" ("."). По расширению файла обычно определяют тип и назначение этого файла. |
| имя программы | program name | Имя файла исполняемой программы (вместе с ее расширением), которое необходимо набрать в командной строке для ее запуска. Кроме имени программы, при запуске из командной строки также необходимо бывает указать опции и аргументы-значения. |
| аргументы-значения | value of arguments | Параметры (опции, аргументы, имена файлов, |
| оператор "STOP" | STOP operator | Оператор языка Бейсик вообще и Quick Basic в-частности, который останавливает выполнение основной программы и передает управление оболочке (IDE) интерпретатора. Этот оператор может встречаться в любом месте программы. |
| оператор "END" | END operator | Оператор языка Бейсик вообще и Quick Basic в-частности, который сигнализирует о конце выполняемой программы. Все строки, написанные после этого оператора, игнорируются. Оператор "END" должен быть последним оператором в программе. |
| комментарий | remark | Строка текста внутри файла с программой (макроса), которая служит для пояснения действий программиста. Информация из комментария не обрабатывается |
| ключевое слово "SUB" | SUB keywords | Ключевое слово на языке Quick Basic, с которого начинается описание процедуры на этом языке. Текст за этим ключевым словом "скрыт" оболочкой (IDE) программы Quick Basic. |
| оболочка Quick Basic | Quick Basic shell | |
| пуск, прогон | run | Пункт меню IDE, в котором собраны команды управления запуском и отладкой транслированной программы на одном из языков. |
| продолжить | continue | Пункт меню IDE, подающий команду внутреннему отладчику IDE на запуск остановленной ранее программы с текущей позиции. Эта программа применяется, например, после чтения значений в точке "останова", или для отмены "пошагового", с остановом после каждого оператора, режима работы отладчика. |
| присвоение значений | assignment of values | Оператор, который записывает в оперативную память ЭВМ новое значение переменной. При этом старое значение теряется безвозвратно! Присвоенным значением может быть значение переменной, выражения, константы или вызова функции. |
| оперативная память | on-line storage | Одно из основных "внутренних" устройств компьютера, предназначенное для временного хранения данных и кода программ (см. архитектура фон Неймана). |
| идентификатор | identificator | Любое сочетание латинских букв и цифровых знаков, начинающееся с буквы. Практически во всех языках программирования имена переменных, операторов, процедур и функций, а также макросов и прагма операторов могут быть только идентификаторами. |
| фактические параметры | actual parameters | Значения констант, переменных, выражений, вызовов функций, которые передаются процедуре или функции, замещая |
| формальные параметры | formal parameters | Переменные, объявленные при описании функции и процедур, в ее заголовке, хранимые в стеке модуля программы и использующиеся в теле модуля при вычислениях. Тип |
| стек (системный) | stack (of the system) | Область в оперативной памяти ЭВМ, которая работает по принципу: "последним записан" - "первым считан" (имеет английскую аббревиатуру " |
| по значению | by value | Способ передачи |
| по ссылке | by links | Способ передачи |
| тип формального параметра | type of formal parameter | Тип переменной формального параметра, указанный при объявлении функции. Тип этой переменной определяет, как будут заноситься в стек эти параметры. |
| тип фактического параметра | type of actual parameter | Тип переменной |
| переменная | variable | Идентификатор, используемый для обозначения некоторой хранимой в оперативной памяти величины, которая может быть изменена во время выполнения программы. |
| выражение | expression | Компонент языка программирования, определяющий способ вычисления некоторого значения переменной. |
| константа 1 | constant 1 | Величина, значение которой не меняется. Эта величина может быть записана как идентификатор (для иллюстрации см. переменная). |
| константа 2 | constant 2 | Величина, значение которой определяется ее обозначением. |
| арифметическое выражение | arithmetic(al) expression | Выражение, содержащее в себе вызов арифметических (алгебраических) функций и арифметических операций: "сложение", "вычитание", "умножение", "деление", "возведение в степень". Арифметическое выражение возвращает целое или вещественное число, имеющее допустимый для данного языка тип значения. |
| логическое выражение | logic expression | Выражение, содержащее в себе операции: "арифметического отношения", "конъюнкции", " |
| символьное выражение | character expression | Выражения над символьными строками, включающие в себя |
| заголовочная часть (программы) | header (of a program) | Часть текста программы, содержащая в себе прагма |
| оператор "#include" | #include directive | Прагма оператор для "включения заголовочной части" к файлу с описанием алгоритма (например, на языках Си/C++). См. заголовочная часть программы. |
| основная функция программы | main function | Главная, основная функция программного продукта, которая содержит "в общих чертах" весь алгоритм работы и управляет вызовом всех остальных процедур. Основная функция появилась впервые в структурированной |
| Windows API | Windows API | Библиотека стандартных функций для языков программирования, позволяющая создавать приложения Windows на стандартном языке программирования. В отличие от других библиотек, библиотека Windows API работает на "нижнем" уровне программирования, поэтому созданные с ее помощью программы имеют очень "объемный" код. |
| вызов функции | call of the function | Передача управления функции или подпрограмме с последующим возвратом к основной программе по окончании ее выполнения. Возможен возврат значений, измененных в результате работы функции. |
| успешный результат | success result | Результат работы функции, завершившейся в "штатном" режиме, без возникновения ошибок, отказов, " |
| макрофункция | macro function | Вид |
| макроподстановка | macro substitution | Подстановка в макрофункцию вместо ее |
| арифметическое отношение | arithmetic(al) ratio | Арифметическое отношение между двумя целыми или вещественными числами (вида: "равно", "не равно", "больше", "больше или равно", "меньше", "меньше или равно" и т.п.). На реализацию арифметических отношений между числами в языках программирования накладываются ограничения на представления (типов) чисел в компьютере (см. часть G). |
| конъюнкция | conjunction | Логическое И. Результат операции истинен только тогда, когда истины обе из посылок (утверждений, отношений и т.п.) |
| дизъюнкция | disjunction, alternation | |
| логическое отрицание | negation | Преобразует ложное высказывание в истинное, а истинное - в ложное. |
| логическое "исключающее ИЛИ" | logical "excluding OR" | Результат операции истинен тогда, когда обе посылки или обе истины, или обе ложны. |
| конкатенация | concatenation | Соединяет ("бесшовно") две произвольные строки в одну строку. Порядок строк имеет значение! |
| поиск по образцу | search by the pattern | Ищет в строке (или во всем тексте) очередное вхождение подстроки-образца, и выдает позицию его вхождения. |
| образец | pattern | Строка символов, с которой сверяют найденный фрагмент в тексте. Может быть строкой "обычных символов" (т.н. "литералов"), а может содержать в себе регулярное выражение. |
| замена фрагмента | replacing of a fragment of the text | Операция замещения найденного по образцу текста другим текстом, которым может быть только "литерал". |
| разбиение строки 1. | breakdown of a line | Операция, при которой содержимое строки с текстом на экране дисплея (или в текстовом редакторе) разбивается на две или большее число менее длинных строк. |
| разбиение строк 2. | partition of strings | Общее название операций над символьными строками, при которых из "единой" текстовой строки изымаются ее фрагменты, а также производится разбивка одной строки на несколько более коротких строк (операция, обратная конкатенации). |
| компоновка (программы) | build (of a program) | В IDE - процесс компиляции и создания исполняемого файла (c расширениями *.com, *.exe, *.dll, *. |
| Perl | Perl | Язык программирования "высокого уровня" предназначенный для обработки символьных данных путем создания исполняемых макросов. Этот язык - интерпретируемый, |
| переменная "@_" | variable "@_" | Специальная переменная языка Perl, предназначенная для передачи " |
| функция "exit" | exit function | Функция на языках Си, C++, Perl и др., при вызове которых происходит завершение работы программы и возврат целого значения операционной системы. Эта функция используется для того, чтобы передать системе |
| валидация | validation | Проверка на соблюдение синтаксиса и семантики текстом, написанным на некотором естественном или искусственном языке, а также любого текста с языком разметки внутри него. Проверка орфографии является одним из примеров |
| перекодирование | recoding | Преобразование символов некоторого языка из одной кодовой страницы в другую. |
| кодовая страница | codepage | Способ назначения литерам латинского или иного алфавита уникального кода, состоящего из целых чисел, для дальнейшей их обработки на ЭВМ. |
| литерал | literal | В языках программирования - строка литер (символов), значение которых определяется этими символами и их порядком. Литералы каким-либо способом выделяются в тексте программы. Литералами не являются: операторы, имена констант/функций, теги и другие специальные конструкции языка. В то же время литералами могут быть константы, строки, внешние опции и команды, подаваемые на вход программы и т.п. |
| программный интерфейс | application interface | Характеристика для связи ("сопряжения") нескольких программных модулей. Характеризуется точным описанием использования формальных и |
| API | API | Расшифровывается как " |
| библиотека | library | Совокупность отдельных программ и программных пакетов, которые предназначены для всеобщего использования в какой-либо определенной среде. Компоненты этой библиотеки не обязательно должны быть связанными. |
| комментарии | remarks | Вставленные в текст программы символы, игнорируемые компилятором и служащие для облегчения понимания синтаксических конструкций, написанных программистом. Обычно комментарии в программе "заключаются" между специальными символами, реже вводятся отдельным оператором. |
| метка | label | Число или идентификатор, поставленный в начале какого-либо ("помеченного") оператора, на который будет передаваться управление в результате выполнения операции |
| ключевое слово | keyword | Символический идентификатор в языке программирование, имеющее особое значение для компилятора или интерпретатора. Эти слова помогают при анализе выражений языка и создании программы. |
| основная программа | main program | Модуль при создании программного проекта, который предназначен для управления всеми остальными подпрограммами проекта, содержит запускающий файл, и файл с ним имеет имя "имя проекта". В языке Си основная программа проекта имеет имя: "main". |
| основной файл проекта | project's main file | См. Основная программа |
| прагма оператор | pragma operator | Оператор, служащий для подачи компилятору проекта определенной информации. См. |
| запуск команды | run of a command | Запуск скомпилированной программы на исполнение. Обычно осуществляется либо набором имени файла с программой в командной строке и нажатием клавиши: "Enter", либо двойным щелчком левой клавишей мыши на значке программы в файловом менеджере. |
| скрипт | script | См. командный файл |
| макрос | macros | См. командный файл |
| успешный результат | success result | Результат выполнения команды пользователя, программы и т.п., при которых ее выполнение прошло "в штатном режиме", без возникновения ошибок или |
| аргумент | arguments | Собирательное название |
| опция | option | Не обязательное вхождение в командной строке команды символов, которое изменяет алгоритм, последовательность операций алгоритма и т.п. С помощью опций можно во много раз повысить функциональность одной и той же команды в командной строке, добавить дополнительные действия либо исключить лишние действия, не создавая нового кода программы. |
| параметр | parameter | Обязательное вхождение в командной строке символов, которое определяет необходимую дополнительную информацию (имя файла, имя переменной, режим работы и т.п.), без указания которой команда "не работоспособна". |
| командная строка 1. | command line | Одна из технологий командного интерфейса, в которой пользователь вводит на консоли некоторые команды на выполнения действий, а ЭВМ выдает на ту же консоль результаты выполнения программ. |
| консоль | console | В терминах ЭВМ консоль представляет собой "терминал", т.е. для ввода используется клавиатура, а для вывода - экран дисплея. |
| командная строка 2. | command line | На экране дисплея представляет собой некоторое приглашение на ввод команды (которое можно настроить) и текстовый курсор, в позицию которого вводится текст с клавиатуры. Команды завершаются нажатием клавиши: "Enter". После выполнения команды результат выводится с новой строки, вывод заканчивается символом ввода новой команды. |
| массив символьных переменных | massive of the character variables | Одиночные символы, которые располагаются подряд в ячейках оперативной памяти. Доступ к каждому элементу осуществляется по его индексу. Массив символьных переменных является простейшим способом представления символьных строк. В настоящее время тип: "строка" состоит из массивов символьных данных, к которым добавлена служебная информация для управления ими. |
| директивы компилятору | directives for compilator | Специальные директивы языка программирования: идентификаторы, прагма функции и операторы и т.п., не описывающие алгоритм задачи, а указывающие компилятору, как обрабатывать, оптимизировать код для данного файла с алгоритмом. |
| макрофункция | macro function | |
| макроподстановка | macro substitution | Подстановка тела макрофункции в текст готовой программы в тех местах, где она встретилась. |
| глобальные переменные | global variables | Переменные, объявленные и описанные перед определением главной функции приложения "main" и доступные для всех модулей-подпрограмм. |
| компилировать | compile | Преобразовывать при помощи программы-компилятора исходный текст программы на языке программирования в объектный код ЭВМ. |
| скомпоновать | build | Преобразование объектного кода, сгенерированного в результате выполнения проекта, в код готовой программы для операционной системы. При компоновке устанавливаются связи между программами, назначаются "абсолютные адреса" переменным, определяются "точки входа" для функций и т.п. |
| интегрированная среда разработчика | Integrated development environment, IDE | Программный комплекс, включающий в себя текстовый редактор, компилятор, компоновщик, отладчик и др. утилиты, необходимые для создания и отладки проектов по производству программных продуктов. Обычно IDE поставляются вместе с языками программирования. |
| иконка, пиктограмма | icon | Схематический значок, при двойном щелчке на котором запускается связанная с ним программа, или запускается на редактирование файл в одной из программ. Иконка является важной частью |
| рабочий стол | desktop | Представляет собой экран компьютера, на котором расположены инструменты управления компьютером, а также значки для запуска приложений и файлов. |
| отладка сценариев | debugging of the scripts (macros) | Нахождение ошибок в программе сценария или макро функций. При отладке сценариев практически не используются внешние отладчики. |
| файл-библиотека (Perl) | file with library | Одиночный файл с макрофункциями, доступный для всех других макросов, созданных на языке Perl. Это очень простой способ для повторного использования кода в Perl. |
| модуль (Perl) | module (of a Perl) | Файл с подпрограммами на языке Perl и ссылками на двоичные файлы, содержащийся в системной библиотеке с расширением: "*.pm". В отличие от файлов-библиотек, модули не копируются, а инсталлируются с установлением зависимостей с другими пакетами Perl. |
В "заголовочные файлы" программ на языке Си/C++ пишется следующая информация:
Рассмотрим эти конструкции поподробнее:
Представляет собой следующий шаблон:
/********************************************************** * * Файл <имя файла>.H * * НАЗНАЧЕНИЕ: * * ЗАВИСИМОСТИ: * * Copyright (R) * **********************************************************/
В нем обязательно нужно указать название файла, назначение констант, переменных, объявлений типов и функций, использованных в данном заголовочном файле. Это нужно сделать "коротко и ясно". Также желательно указать зависимости данного файла с другими заголовочными файлами, а также правообладателя программы (название организации, либо имя и псевдоним, и обязательно контактные данные). Это может потребоваться при внесении изменений в программу в целом и в этот заголовочный файл в частности.
Представляет собой следующий шаблон:
#ifndef __"имя файла"_H #define __"имя файла"_H … #endif /* Конец заголовочного файла */
Эта конструкция определяет переменную: " __"имя файла"_H ". Именно использование этой переменной в пункте 3 (вернее, проверка на ее существование) предотвращает повторную загрузку заголовочного файла из самого себя или другого заголовочного файла.
В конце описания заголовочного файла должно стоять подножие: #endif. Заметим, что использование этих конструкций и правила
Вставка других заголовочных файлов представляет собой следующий шаблон:
/* Включение заголовочных файлов */ #ifndef __"имя файла1"_H #include ""имя файла1"".h #endif #ifndef __"имя файла2"_H #include <"имя файла2">.h #endif …
Обратите внимание, что оператор вставки файла " #include " окружен "условными прагма операторами" " #ifndef " и " #endif ". Их использование предотвращает повторную загрузку заголовочных файлов и, таким образом, предотвращает повторное определение или переопределение типов, констант и переменных, указанных в них.
Эти операторы вставляются в текст только по-необходимости, и часто их включения не требуется.
Сюда вставляются определения констант и макроподстановок, определенных через прагма оператор #define. Конечно, его использование может некоторыми авторами рассматриваться как "анахронизм". Однако оцените его удобство и универсальность!
Определение представляет собой следующий шаблон:
/* Определение констант */
#define "ИМЯ_КОНСТАНТЫ" "значение"
/* Определение макроподстановок */
#define "МАКРОФУНКЦИЯ"("ПАРАМЕТРЫ") "текст макроса"
Объявления представляют собой следующий шаблон:
typedef struct "tagType"
{
"определение типа Type"
}"Type";
typedef union "tagType"
{
"определение типа Type"
}"Type";
typedef enum "tagType"
{
"определение типа Type"
}"Type";
Иногда необходимо в файле задать переменные, которые будут использоваться сразу несколькими описанными функциями. Эти переменные можно объявить как "глобальные переменные", а не передавать в качестве параметров. Это может создать более понятные и "компактные" программы. Эти объявления можно описать как в заголовочном файле, так и в начале файлов с описанием (определением) нужных функций.
Объявление представляет собой следующий шаблон:
/* Объявление глобальных переменных */ "тип" "имя" … …;
Перед использованием новых функций на языке Си необходимо прежде их объявить, что и происходит в конце заголовочного файла.
Объявление представляет собой следующий шаблон:
/* Объявление функций: */
"тип возвр. значения" "имя функции1"("имя и тип формальных параметров"…);
"тип возвр. значения" "имя функции2"("имя и тип формальных параметров"…);
…
/**********************************************************
*
* Файл <имя файла>.H
*
* НАЗНАЧЕНИЕ:
*
* ЗАВИСИМОСТИ:
*
* Copyright (R)
*
**********************************************************/
#ifndef __"имя файла"_H
#define __"имя файла"_H
/* Включение заголовочных файлов */
#ifndef __"имя файла1"_H
#include ""имя файла1"".h
#endif
#ifndef __"имя файла2"_H
#include <"имя файла2">.h
#endif
…
/* Указание директив компилятору: */
…
/* Определение констант */
#define "ИМЯ_КОНСТАНТЫ" "значение"
/* Определение макроподстановок */
#define "МАКРОФУНКЦИЯ"("ПАРАМЕТРЫ") "текст макроса"
/* Определение типов */
typedef enum tag"имя типа"
{
"константа 1";
…
"константа n";
}"имя типа";
typedef struct tag"имя типа"
{
"тип" "имя поля";
… …;
}"имя типа";
typedef union tag"имя типа"
{
"тип" "имя поля";
… …;
}"имя типа";
/* Объявление глобальных переменных */
"тип" "имя"
… …;
/* Объявление функций: */
"тип возвр. значения" "имя функции1"("имя и тип формальных параметров"…);
"тип возвр. значения" "имя функции2"("имя и тип формальных параметров"…);
…
#endif
/* Конец заголовочного файла */
Подпрограммы служат для объединения группы операторов с целью их повторного использования. Следующим шагом является объединение группы подпрограмм и их сохранение в отдельном файле для последующего использования в других программах. Для реализации этой задачи в языке Perl присутствуют два механизма: библиотеки и модули.
Библиотека представляет собой пакет, областью действия которого является отдельный файл. Иными словами, библиотека - это файл, в качестве первой строки содержащий объявления пакета:
package "имя пакета"
Имя файла библиотеки обычно имеет расширение "*.pl".
Для использования библиотеки в основной программе ее нужно подключить при помощи require смотри раздел 3.7.2.3.1.
Для создания собственной библиотеки следует выполнить перечисленные ниже шаги:
Последний пункт служит для того, чтобы возвращаемое значение функции require не равнялось нулю.
Пример:
# библиотечный файл ~/bin/perllib/mylib.pl # знак "~" означает домашний каталог пользователя "подпрограмма 1" "подпрограмма 2" … 1:
Для подключения библиотечного файла из собственной библиотеки следует выполнить перечисленные ниже шаги:
require, указав в качестве аргументов имена требуемых библиотечных файлов.Пример.
#!/usr/bin/perl unshift( @INC, "~/bin/perllib"); require "mylib.pl"; "тело макроса" …
Дальнейшим развитием понятия библиотеки явилось понятие модуля. Модуль представляет собой библиотеку подпрограмм, организованную в виде отдельного пакета и обладающими дополнительными свойствами.
Модуль - это пакет. Пакет представляет собственное пространство имен, в котором для обозначения полного имени используется нотация вида "Родитель" :: "Сын" :: "Внук" :: "имя переменной". Модуль позволяет управлять экспортом своих имен в другие программы, объявляя, какие из них экспортируются по-умолчанию, а какие должны быть явно указаны при экспорте.
Под экспортом понимается предоставление возможности другим модулям использовать символы из пространства имен данного модуля. Соответственно под импортом понимается включение в собственное пространство имен символов из других модулей.
В целях управления экспортом каждый модуль должен иметь в себе метод import и специальные массивы @EXPORT и @EXPORT_OK.
import() ;@EXPORT содержит идентификаторы, экспортируемые по-умолчанию;@EXPORT_OK содержит идентификаторы, экспортируемые из модуля только в случае их явного указания;use().Для создания собственного модуля следует выполнить перечисленные ниже шаги:
require ;Пример файла модуля: MyModule.pm
package MyModule;
require Exporter;
@ISA = qw( Exporter );
@EXPORT = qw(MyArgs);
@EXPORT_OK = qw( $MyArgs @MyArgs %MyArgs )
sub MyArgs
{
"тело функции"
}
# Примечание: вместо имени MyArgs в пакете могут быть определены другие имена переменных и функций
"тело не экспортируемых функций"
К основной программе модуль MyModule подключается при помощи директивы use. Эта директива содержит список импорта.
Обычно список импорта содержит имена переменных и функций. Кроме того, список импорта может содержать некоторые управляющие им спецификации. Спецификация :DEFAULT означает включение в список импорта всех элементов специального массива @EXPORT.
Пример файла основной вызывающей программы MyMain.pl
#!/usr/bin/perl use MyModule qw( :DEFAULT $MyArgs, @MyArgs %MyArgs ); "операторы вызывающей программы" …
Функция загружает
СИНТАКСИС:
require [EXPR] require VERSION
Если параметр EXPR отсутствует, вместо нее используется специальная переменная $_.
Если параметр является числом, то он означает, что требуется версия интерпретатора Perl не ниже, чем указанная.
Если параметр является строкой, функция require включает в основную программу библиотечный файл, заданный параметром EXPR. При этом функция использует две встроенные переменные Perl: @INC и %INC.
Обычно имена библиотечных файлов имеют расширение: "*.pl". Поэтому для избегания неправильного толкования специальных знаков имена файлов следует заключать в кавычки, например:
require "myfile.pl"
Если аргумент является словом без расширения, не заключенным в кавычки, то ему добавляется расширение: "*.pm".
Специальный встроенный массив @INC содержит имена каталогов, в которых надо искать макросы языка Perl, в том числе и библиотеки, подлежащие в выполнению в конструкциях do, require и use. Первоначально он содержит:
Специальный встроенный хэш-массив %INC содержит по одному элементу для каждого файла, включенного с помощью функций do и require. Ключом при этом будет имя файла в том виде, в каком она встретилась в функциях do и require, а значением - его полное путевое имя.
Встретив директиву require, интерпретатор Perl просматривает специальный хэш-массив %INC на присутствие в массиве имени файла. Если да, то выполнение функции завершается. Таким образом, файл может быть включен в список только один раз. Если же этого файла нет, то просматриваются все каталоги из массива @INC в поисках нужного файла. Если файл найден, то он выполняется, иначе генерируется ошибка.
СИНТАКСИС:
use Module [LIST] use VERSION
Эта встроенная функция служит для загрузки модуля в момент его компиляции. Директива use автоматически экспортирует имена функций и переменных в основное пространство имен текущего пакета. Для этого оно вызывает метод: import() импортируемого модуля. Механизм экспорта имен рассчитан таким образом, что каждый экспортируемый модуль должен иметь свой модуль import(). Метод import() должен быть определен в самом экспортирующем модуле, или должен быть наследован у модуля Exporter.
Если первый аргумент директивы use является числом, он обозначает номер версии интерпретатора Perl. Если версия интерпретатора Perl меньше, чем указанная в директиве use, то интерпретатор завершает работу, выдавая сообщение об ошибке.
Если список импорта LIST отсутствует, из модуля Module будут импортированы те имена, которые перечислены в специальном массиве @EXPORT, определяемом в самом модуле Module.
Если список импорта задан, то LIST.
@echo off rem Диску Y: (он должен быть свободен) rem назначается имя текущего каталога rem командой subst Y: . subst Y: . rem Вызываем интерпретатор Perl rem Скрипт-файл на языке Perl должен rem находиться на C:\Perl\user\PerlScripts perl C:\Perl\user\PerlScripts\%1 Y:\%2 Y:\%3 Y:\%4 Y:\%5 Y:\%6 Y:\%7 Y:\%8 Y:\%9 REM Удаляем диск Y: subst Y: /D
С помощью данного файла можно запустить макрос, находящийся в директории: C:\Perl\user\PerlScripts (она должна быть сначала создана, и в нее скопированы файлы со скриптами), в качестве параметров к которому используются файлы из
В именах файлов не допускается использование кавычек.
Букве "Y:" не должно быть назначено имя сетевого или логического диска;
Данный файл используется в среде Microsoft Windows для интерпретатора ActiveState Perl 5.x.x.
@echo off rem Диску Y: (он должен быть свободен) rem назначается имя текущего каталога rem командой subst Y: . subst Y: . rem Вызываем интерпретатор Perl rem Скрипт-файл на языке Perl должен rem находиться в той же директории, что и параметры: perl Y:\%1 Y:\%2 Y:\%3 Y:\%4 Y:\%5 Y:\%6 Y:\%7 Y:\%8 Y:\%9 REM Удаляем диск Y: subst Y: /D
С помощью данного файла можно запустить скрипт, находящийся в
В именах файлов не допускается использование кавычек.
Букве "Y:" не должно быть назначено имя сетевого или логического диска;
Данный файл используется в среде Microsoft Windows для интерпретатора ActiveState Perl 5.x.x.
@echo off rem Диску Y: (он должен быть свободен) rem назначается имя текущего каталога rem командой subst Y: . subst Y: . rem Вызываем интерпретатор Perl rem Скрипт-файл на языке Perl должен rem находиться на C:\Perl\user\PerlScripts perl C:\Perl\user\PerlScripts\%1 %2 %3 %4 %5 %6 %7 %8 %9 REM Удаляем диск Y: subst Y: /D
С помощью данного файла можно запустить скрипт, находящийся в директории: C:\Perl\user\PerlScripts (она должна быть сначала создана, и в нее скопированы файлы со скриптами), в качестве параметров к которому используются файлы из
Этот командный файл может запускаться только внутри других командных файлов.
В именах файлов допускаются кавычки, кроме имени файла с макросом (с расширением *.pl, первый параметр).
Букве "Y:" не должно быть назначено имя сетевого или логического диска;
Данный файл используется в среде Microsoft Windows для интерпретатора ActiveState Perl 5.x.x.
@echo off rem Диску Y: (он должен быть свободен) rem назначается имя текущего каталога rem командой subst Y: . subst Y: . rem Вызываем интерпретатор Perl rem Скрипт-файл на языке Perl должен rem находиться в той же директории, что и параметры: perl Y:\%1 %2 %3 %4 %5 %6 %7 %8 %9 REM Удаляем диск Y: subst Y: /D
С помощью данного файла можно запустить скрипт, находящийся в
Этот командный файл может запускаться только внутри других командных файлов.
В именах файлов допускаются кавычки, кроме имени файла с макросом (с расширением *.pl, первый параметр).
Букве "Y:" не должно быть назначено имя сетевого или логического диска;
Данный файл используется в среде Microsoft Windows для интерпретатора ActiveState Perl 5.x.x.
#/bin/sh # # @echo off # echo Вызываем интерпретатор Perl # echo Скрипт-файл на языке Perl должен # echo находиться на /home/имя_пользователя/bin/Perl/user/PerlScripts perl /home/имя_пользователя/bin/Perl/user/PerlScripts/$1 ./$2 ./$3 ./$4 ./$5 ./$6 ./$7 ./$8 ./$9
С помощью данного файла можно запустить скрипт, находящийся в директории: /home/имя_пользователя/bin/Perl/user/PerlScripts (она должна быть сначала создана, и в нее скопированы файлы со скриптами), в качестве параметров к которому используются файлы из
В именах файлов не допускается использование кавычек.
Данный файл используется в среде ALT Linux для интерпретатора Perl версии 5.x.x.
#/bin/sh # # @echo off # echo Вызываем интерпретатор Perl # echo Скрипт-файл на языке Perl должен # echo находиться в той же директории, что и параметры: perl ./$1 ./$2 ./$3 ./$4 ./$5 ./$6 ./$7 ./$8 ./$9
С помощью данного файла можно запустить скрипт, находящийся в
В именах файлов не допускается использование кавычек.
Данный файл используется в среде ALT Linux для интерпретатора Perl версии 5.x.x.
Цель лекции:
За те пятьдесят с небольшим лет, которые существует дисциплина: "программирование", - сменилось несколько поколений правил, концепций, моды, взглядов на то, как надо "писать программы". Все эти правила, концепции, взгляды, мода, наконец, позже назвали в информатике "
В конце списка представлены языки программирования и их создатели, внесшие значительный вклад в популяризацию этих парадигм.
В процессе своего развития эти парадигмы "мутировали", "отпочковывались", "объединялись" (так, язык Си объединил в себе процедурную и структурированную парадигму). В результате этих "
Эти три совершенно разные по подходу парадигмы составляют основу современного программирования. Хотя в настоящее время наиболее "модной" является объектно-ориентированная парадигма, остальные парадигмы также используются на практике и изучаются в ВУЗах. Их мы и рассмотрим ниже.
Кроме деления языков программирования по парадигмам, существует также деление языков на "
Декларативными называются языки программирования, в которых алгоритм работы с данными "зашит" в языке программирования, а сама программа представляет собой данные, упорядоченные и структурированные таким образом, что их легко обрабатывают "стандартные" алгоритмы вывода. В декларативных языках как бы "нет разницы" между данными и алгоритмом, их обрабатывающим. От "значения" данных, подаваемых на вход программы, зависит дальнейшее направление расчетов. Примерами
Эта парадигма является самой "древней" и, одновременно, - самой простой в реализации и обучении программирования. На основе этой парадигмы изучаются языки программирования в школе. И поэтому, вполне естественно, автор поставил ее на первое место.
"Истоки" процедурной
В 1957 году Бэкус разработал первый язык высокого уровня: ФОРТРАН. Эта аббревиатура переводится как: "
В реализации этих языков была предусмотрена (как и в ассемблере) возможность "разбивки общего алгоритма" на несколько независимых модулей: "процедур". "Нанизывая" процедуры в основном модуле программы, как гирлянды на нитку, можно получить алгоритмы любой сложности. В этом и состоит преимущество
Таким образом, возникла "процедурная парадигма", гласящая:
"Реализацию алгоритмов вычислений необходимо создавать с помощью мелких, не зависимых друг от друга процедур, которые вызывают друг друга в соответствии с логикой программы".
Эта парадигма проста не только в "написании" алгоритма, но и его отладке: нужно убедиться в "работоспособности" каждого из модулей, что намного проще, чем отладка всего алгоритма целиком.
Среди языков, поддерживающих процедурную парадигму программирования, используются следующие языки программирования:
Все они поддерживают создание "модулей" - функций и подпрограмм, которые разрабатываются и тестируются независимо, и осуществление "вызовов" между ними.
Прежде, чем передать код программы на обработку компилятору, программист должен соответствующим образом оформить код программы. В этом разделе даются общие правила оформления кода программы на разных языках программирования.
В языке Quick Basic есть следующие правила оформления программ:
STOP ";END ";REM ", которые указываются сразу после метки (или вместо метки);SUB ", за которым идет имя подпрограммы;На языке Си и, частично, С++, существуют следующие правила оформления программ:
include ". При этом имена заголовочных файлов, находящихся в одном каталоге с файлами-описаниями алгоритма, заключаются в кавычки, а имена файлов, пути к которым прописаны в переменной операционной системы: " INCLUDE ", заключаются между знаками: "<…>", например:#include <stdio.h>#include "myprog.h"main ", - управляющая вызовом всех остальных функций и подпрограмм.WinMain. Подробнее об этой функции смотри [89].main " из пункта 5 может возвращать целое значение (тип "int"). Это значение впоследствии используется при запуске функции внутри командного файла оболочки операционной системы, для его реакции на неудачный результат работы этой функции. Принято, что в случае успешного результата своей работы функция " main " возвращает нулевой результат.main " может принимать в качестве аргументов следующие main( int argc, char *argv[], char *env[]), где
argc - число аргументов у функции. Эта переменная принимает значение 1 в случае отсутствия опций и параметров, 2 в случае присутствия одного параметра и т.п.;*argv[] - массив символьных переменных - указателей на опции и аргументы программы, запускаемой из командной строки. При этом элементу "0" соответствует полное путевое имя файла с запускаемой программой. Элементам с номерами: "1" - "argc-1" соответствуют аргументы программы, набранные в командной строке, с соответствующими номерами (по-порядку);*env[] - массив символьных переменных - указателей на системное окружение операционной системы, в которой запускается скомпилированная программа."//" ;main ", либо в отдельных файлах (с расширениями: "*.C" и "*.Build ") проект в IDE (с именем: "<имя проекта>" ), а затем запустить ее, либо набрав в командной строке: <имя проекта>.exe {<опции>}*, либо щелкнув на иконке этой программы (в Windows).Подробнее о других аспектах программирования на C/C++ смотри: [31, 51, 92,78]
В языке Perl существуют следующие правила оформления программных модулей:
#!<путь к интерпретатору Perl> {<опции>}
Например:
#!/usr/bin/perl
#!perl -w
-w означает: "включить отладку сценариев"sub ".sub ", после которого идет блок с операторами. Подпрограмма завершается при выходе из этого блока:sub <имя функции> {<тело функции>}
[<переменная>=] '<имя функции> [(<аргументы>)]где
<переменная> - присвоенное значение-результат работы функции; <имя функции> - имя, зарезервированное в 3.4. Аргументами могут быть строковый литерал либо ссылка:<аргументы> ::= {<литерал>|\<имя фактического параметра>}+
@_ ".exit( <целое число> ) "). По "джентльменскому соглашению" программа возвращает "0" в случае своего нормального завершения.perl <полное имя макроса> {<аргументы>}
где <полное имя макроса> - <аргументы> - передаваемые программе аргументы-значения.В данной лекции Вы познакомились с процедурной парадигмой и ее реализациями на языках Quick Basic, Си/C++ и Perl. В приложениях и пунктах для самостоятельной работы Вы легко разберетесь с особенностями программирования на языках оболочек операционных систем: MS-DOS Command Shell и
| Термин | Англ. Термин | Разъяснение |
|---|---|---|
| программирование 1. | programming 1. | Раздел |
| программирование 2. | programming 2. | Процесс подготовки задач для их решения на ЭВМ. Включает следующие этапы: во-первых, поиск алгоритмического решения, во-вторых, составление программы на языке ЭВМ, в-третьих, трансляция с языка программирования на |
| алгоритмическое решение | algorithmic decision | Получение алгоритма решения задачи. Теоретической основой поиска этого решения занимается наука алгоритмика. |
| составление (программ) | building (of program) | То же, что и кодирование. |
| кодирование (программ) | coding (of program) | Составление (запись) алгоритма на одном из языков программирования. |
| трансляция (программы) | translation (of program) | Перевод инструкций (операторов) языка программирования ЭВМ в ее машинные коды. Трансляцию выполняют специальные программы- |
| машинный код | code of machine | Двоичный код (цифры), в котором специфичным для данной ЭВМ правилам кодируются данные и программы, посылаемые ей на исполнение. |
| программа | program | Полное и точное описание на некотором формальном языке предназначенных к выполнению работ, с учетом всех обстоятельств, общих целей и условий, на основании ранее найденных алгоритмов и имеющихся средств ЭВМ. Текст программы является официальным ее документом. |
| текст программы | text (of program) | |
| язык (программирования) | programming language | |
| оператор (языка программирования) | operator (of programming language) | Предписание в данном языке программирования, предназначенное для задания некоторого завершенного действия в процессе обработки информации на ЭВМ. |
| парадигма программирования | paradigm (of programming) | Совокупность правил, концепций, взглядов, стандартов, "моды", по которым в то или иное время пишутся программы программистами. Выбор парадигмы однозначно определяет язык программирования, синтаксис и описание различных конструкций (операторов) этого языка, использование и представление структуры данных, стандарты в написании программ и комментариев. Наиболее востребованными в настоящее время являются следующие парадигмы: процедурная (или модульная), функциональная, структурированная, логическая, объектно-ориентированная ( |
| структура данных | data structure | Упорядоченное множество элементов данных, не зависящее от их физической реализации, вместе с "разрешенными" операциями над этими данными. Примерами структуры данных могут служить база данных, база знаний, формат файлов для приложений, документ XML, язык разметки, графический файл и т.п. Н. Вирт предложил формулу: "программа" := "алгоритм" + "структура данных". |
| процедурная парадигма | procedural paradigm | Парадигма, гласящая: "Реализацию алгоритмов вычислений необходимо создавать с помощью мелких, не зависимых друг от друга процедур, которые вызывают друг друга в соответствии с логикой программы". На структуру данных ограничения не накладываются (программа управляет данными). |
| модульная парадигма | modular paradigm | см. процедурная парадигма |
| структурированная парадигма | structural paradigm | Развитие идей модульной парадигмы, гласящее следующее: "Каждая подпрограмма должна иметь ограниченный объем, выполнять одну специфичную функцию для обработки данных и использовать только три базовых элемента алгоритма: линейную, ветвящуюся и циклическую структуру". Основная цель |
| объектно-ориентированная парадигма | object-oriented paradigm | Парадигма, ориентированная на работу с "объектами" и "сообщениями". Объект - это пакет информации (структурированные данные) вместе с описанием процедур ("методов") манипулирования ими, а сообщение - это условие одного из методов. В отличие от модуля процедурной парадигмы, сообщение только определяет, что желает выполнить |
| логическая парадигма | logic paradigm | В этой парадигме в качестве "единого алгоритма" вычислений является алгоритм символьной логики, управляющий всеми операциями с данными. Все языки в этой парадигме являются декларативными языками. |
| императивные языки | imperative languages | Языки программирования, в которых "код управляет данными". В этих языках даются инструкции по |
| декларативные языки | declarative languages | В данных языках программирования "данные управляют программой". От значения данных, поступающих на вход программы, зависит направление расчетов. При этом алгоритм обработки данных является стандартным и как бы "зашит" в язык программирования. |
| инструкция | instruction | Предписание исполнителю (человеку или автомату) на выполнение тех или иных операций. В языке программирования инструкцией может быть прагма |
| пошаговое (выполнение) | step-by-step (executing) | Выполнение алгоритма последовательно, инструкция за инструкцией, в порядке их появления в программе. |
| символическая логика | symbolic logic | Представление формальной логики на основе формализованного языка. |
| формальная логика | formal logic | Наука о методах анализа высказываний и доказательств, в которой рассматриваются абстрактные символы и сформированные из них высказывания, но не придается никакого значения семантике этих абстракций. |
| последовательность действий | sequence of operation | Правило, по которому любой алгоритм выполняется последовательно, инструкция за инструкцией, а не в произвольном порядке. Линейная последовательность действий при этом может нарушаться при использовании ветвлений и циклов, а также |
| линейная последовательность | linear sequence | Последовательность действий, при которой алгоритм выполняется шаг за шагом, инструкция за инструкцией, от начала последовательности до ее конца. Алгоритм, состоящий только из одной линейной последовательности действий, называется линейным алгоритмом. Линейная последовательность действий внутри ветвления или цикла называется его телом. |
| тело | body | Линейная последовательность инструкций внутри цикла, ветвления или процедуры. |
| данные | data | Представление различной информации в виде, позволяющей автоматизировать ее сбор, хранение, передачу и дальнейшую ее обработку в ЭВМ. Данными могут быть набор знаков, цифр и т.п., над которыми можно выполнять различные операции. |
| упорядоченные данные | ranked data | Данные, обработанные человеком и приведенные в такой вид, что они могут быть переданы последовательно, без дополнительной ручной обработки, на обработку в ЭВМ. Основное свойство упорядоченных данных - способность передавать их в ЭВМ в том же порядке, в котором происходит считывание ею данных для обработки. |
| устройство | device | Устройство для внешней обработки информации, подключенное к ЭВМ. Различают |
| факт | fact | На языке ПРОЛОГ является аналогом данных. Представляет собой некоторое свойство, применимое к значению некоторых переменных, которое само по себе может принимать значение "истина" или "ложь". Например, факт отец(Александр, Юрий) говорит о том, что значение "Александр" связано со значением "Юрий" отношением "отец", и что это отношение - истинно. |
| правило | rule | Представляет собой некоторое свойство ("отношение") между несколькими переменными, которое может быть истинным или ложным, в зависимости от того, совпадают или нет значения переменных с их значениями, записанных в фактах. |
| продукция | production | Правило, по которому из фактов доказывается истинность или ложность заданного утверждения или ищется набор значений переменных, при котором это утверждение истинно. В языке ПРОЛОГ продукции вместе с системой |
| экспертная система | expert system | Программа, написанная инженером по знаниям, позволяющая моделировать рассуждения эксперта в некоторой области знаний, делать вместо него выводы и объяснять полученные результаты. Экспертные системы пишутся, как правило, на языке |
| транслятор (языка программирования) | translator (of the programming language) | Программа, переводящий алгоритм, написанный на языке программирования высокого уровня, в объектный код или в |
| компилятор | compiler | |
| интерпретатор | interpreter | |
| объектный код | object code | Код, генерируемый компилятором, который максимально приближен к машинным кодам ЭВМ. В готовую к исполнению на ЭВМ программу этот код преобразуется при помощи компоновщика. |
| псевдокод | pseudocode | Некоторый код, не обязательно являющийся машинным кодом, который может исполняться ("интерпретироваться") программой-оболочкой. К " |
| искусственный интеллект | artificial intelligence | Совокупность алгоритмов, реализующих действия, ранее выполняемые только человеком. Искусственным интеллектом также называется часть информатики, алгебры и т.п., изучающая эти алгоритмы. |
| архитектура "фон Неймана" | von Neumann machine | Любая ЭВМ, удовлетворяющая следующим требованиям. Во-первых, ее основные блоки - |
| калькулятор | calculator | Прибор для "ручного" счета численных величин, прежде всего, их сложения, вычитания, умножения, деления, нахождения "обратной" величины и извлечение квадратного корня. Калькуляторы делятся на бухгалтерские, инженерные и программируемые калькуляторы. |
| ассемблер | assembler | Язык программирования "низкого уровня", максимально приближенный к "машинным кодам". Программирование на ассемблере позволяет создавать эффективные программы, однако размеры текста программы и время отладки программы являются столь большими, что ограничивает использование ассемблера только задачами написания драйверов, критически важных программ и утилит. |
| архитектура ЭВМ | computer architecture | Описание некоторой |
| регистр | register | Сверхоперативная память |
| процессор | processor | |
| сопроцессор | coprocessor | Процессор, осуществляющий дополнительные вычисления на компьютере, но, в отличие от |
| прикладной программист | applications programmer | Лицо, специализирующееся в написании прикладных программ. |
| прикладная программа | application | Программа, способствующая выполнению задачи, возложенной на данную ЭВМ. Прикладными программами могут быть бухгалтерские, финансовые, офисные, научные, инженерные, графические, издательские и т.п. программы. Прикладные программы следует отличать от операционных систем и |
| процедура | procedure | Смотри модуль программный. |
| модуль (программный) | module | Программа, используемая в качестве составной части других программ, либо как самостоятельная программа автономного приложения. |
| функция | function | Программный модуль, возвращающий одно (и только одно) значение функции. Этим это определение похоже на определение функции в "алгебраическом" смысле. Функция может содержать |
| объявление | declaration | Указание имени, типа |
| Язык C-- | C-- language | Один из клонов языка Си, содержащий множество функций и "вставок" на языке |
| драйвер | driver | Программа, управляющая работой какого-либо устройства ЭВМ, которая позволяет операционной системе и прикладным программам осуществлять ввод-вывод на это устройство, не прибегая к "прямому" программированию устройства в машинных кодах. Для разных устройств и для разных операционных систем существуют свои драйверы. Однако существуют и "универсальные" драйверы устройств. |
| командный файл | command file | Файлы |
| алгоритм | algorithm | Сформированный на некотором (естественном или |
| подпрограмма | subroutine | Программный модуль, не возвращающий своего значения, а передающий измененные значения через |
| ФОРТРАН | FORTRAN | Аббревиатура от " |
| численные алгоритмы | numerical algorithm | Алгоритмы численных расчетов, применяемых в научной и экономической областях. Численные алгоритмы позволяют проводить "глубокую и сложную обработку" небольшого количества исходных численных значений. |
| коммерческие алгоритмы | algorithm for business | Алгоритмы численных расчетов, применяемых в бизнесе и экономике. Эти алгоритмы позволяют проводить несложную числовую обработку большого количества исходных данных, расположенных на разных носителях. |
| КОБОЛ | COBOL | Аббревиатура от "Common Business Oriented Language" - "язык, ориентированный на общий бизнес". На этом языке пишутся коммерческие алгоритмы по хранению и обработке коммерческих данных на различных носителях информации. |
| Quick Basic ("квик бейсик") | Quick Basic | Реализация интерпретатора языка Бейсик от корпорации Microsoft. Эта версия бейсика работает на операционных системах, начиная с MS-DOS 6.0 |
| расширение (файла) | extension (of the file) | Часть имени файла, расположенная в конце его имени и отделенная от остальной части имени файла знаком "точка" ("."). По расширению файла обычно определяют тип и назначение этого файла. |
| имя программы | program name | Имя файла исполняемой программы (вместе с ее расширением), которое необходимо набрать в командной строке для ее запуска. Кроме имени программы, при запуске из командной строки также необходимо бывает указать опции и аргументы-значения. |
| аргументы-значения | value of arguments | Параметры (опции, аргументы, имена файлов, |
| оператор "STOP" | STOP operator | Оператор языка Бейсик вообще и Quick Basic в-частности, который останавливает выполнение основной программы и передает управление оболочке (IDE) интерпретатора. Этот оператор может встречаться в любом месте программы. |
| оператор "END" | END operator | Оператор языка Бейсик вообще и Quick Basic в-частности, который сигнализирует о конце выполняемой программы. Все строки, написанные после этого оператора, игнорируются. Оператор "END" должен быть последним оператором в программе. |
| комментарий | remark | Строка текста внутри файла с программой (макроса), которая служит для пояснения действий программиста. Информация из комментария не обрабатывается |
| ключевое слово "SUB" | SUB keywords | Ключевое слово на языке Quick Basic, с которого начинается описание процедуры на этом языке. Текст за этим ключевым словом "скрыт" оболочкой (IDE) программы Quick Basic. |
| оболочка Quick Basic | Quick Basic shell | |
| пуск, прогон | run | Пункт меню IDE, в котором собраны команды управления запуском и отладкой транслированной программы на одном из языков. |
| продолжить | continue | Пункт меню IDE, подающий команду внутреннему отладчику IDE на запуск остановленной ранее программы с текущей позиции. Эта программа применяется, например, после чтения значений в точке "останова", или для отмены "пошагового", с остановом после каждого оператора, режима работы отладчика. |
| присвоение значений | assignment of values | Оператор, который записывает в оперативную память ЭВМ новое значение переменной. При этом старое значение теряется безвозвратно! Присвоенным значением может быть значение переменной, выражения, константы или вызова функции. |
| оперативная память | on-line storage | Одно из основных "внутренних" устройств компьютера, предназначенное для временного хранения данных и кода программ (см. архитектура фон Неймана). |
| идентификатор | identificator | Любое сочетание латинских букв и цифровых знаков, начинающееся с буквы. Практически во всех языках программирования имена переменных, операторов, процедур и функций, а также макросов и прагма операторов могут быть только идентификаторами. |
| фактические параметры | actual parameters | Значения констант, переменных, выражений, вызовов функций, которые передаются процедуре или функции, замещая |
| формальные параметры | formal parameters | Переменные, объявленные при описании функции и процедур, в ее заголовке, хранимые в стеке модуля программы и использующиеся в теле модуля при вычислениях. Тип |
| стек (системный) | stack (of the system) | Область в оперативной памяти ЭВМ, которая работает по принципу: "последним записан" - "первым считан" (имеет английскую аббревиатуру " |
| по значению | by value | Способ передачи |
| по ссылке | by links | Способ передачи |
| тип формального параметра | type of formal parameter | Тип переменной формального параметра, указанный при объявлении функции. Тип этой переменной определяет, как будут заноситься в стек эти параметры. |
| тип фактического параметра | type of actual parameter | Тип переменной |
| переменная | variable | Идентификатор, используемый для обозначения некоторой хранимой в оперативной памяти величины, которая может быть изменена во время выполнения программы. |
| выражение | expression | Компонент языка программирования, определяющий способ вычисления некоторого значения переменной. |
| константа 1 | constant 1 | Величина, значение которой не меняется. Эта величина может быть записана как идентификатор (для иллюстрации см. переменная). |
| константа 2 | constant 2 | Величина, значение которой определяется ее обозначением. |
| арифметическое выражение | arithmetic(al) expression | Выражение, содержащее в себе вызов арифметических (алгебраических) функций и арифметических операций: "сложение", "вычитание", "умножение", "деление", "возведение в степень". Арифметическое выражение возвращает целое или вещественное число, имеющее допустимый для данного языка тип значения. |
| логическое выражение | logic expression | Выражение, содержащее в себе операции: "арифметического отношения", "конъюнкции", " |
| символьное выражение | character expression | Выражения над символьными строками, включающие в себя |
| заголовочная часть (программы) | header (of a program) | Часть текста программы, содержащая в себе прагма |
| оператор "#include" | #include directive | Прагма оператор для "включения заголовочной части" к файлу с описанием алгоритма (например, на языках Си/C++). См. заголовочная часть программы. |
| основная функция программы | main function | Главная, основная функция программного продукта, которая содержит "в общих чертах" весь алгоритм работы и управляет вызовом всех остальных процедур. Основная функция появилась впервые в структурированной |
| Windows API | Windows API | Библиотека стандартных функций для языков программирования, позволяющая создавать приложения Windows на стандартном языке программирования. В отличие от других библиотек, библиотека Windows API работает на "нижнем" уровне программирования, поэтому созданные с ее помощью программы имеют очень "объемный" код. |
| вызов функции | call of the function | Передача управления функции или подпрограмме с последующим возвратом к основной программе по окончании ее выполнения. Возможен возврат значений, измененных в результате работы функции. |
| успешный результат | success result | Результат работы функции, завершившейся в "штатном" режиме, без возникновения ошибок, отказов, " |
| макрофункция | macro function | Вид |
| макроподстановка | macro substitution | Подстановка в макрофункцию вместо ее |
| арифметическое отношение | arithmetic(al) ratio | Арифметическое отношение между двумя целыми или вещественными числами (вида: "равно", "не равно", "больше", "больше или равно", "меньше", "меньше или равно" и т.п.). На реализацию арифметических отношений между числами в языках программирования накладываются ограничения на представления (типов) чисел в компьютере (см. часть G). |
| конъюнкция | conjunction | Логическое И. Результат операции истинен только тогда, когда истины обе из посылок (утверждений, отношений и т.п.) |
| дизъюнкция | disjunction, alternation | |
| логическое отрицание | negation | Преобразует ложное высказывание в истинное, а истинное - в ложное. |
| логическое "исключающее ИЛИ" | logical "excluding OR" | Результат операции истинен тогда, когда обе посылки или обе истины, или обе ложны. |
| конкатенация | concatenation | Соединяет ("бесшовно") две произвольные строки в одну строку. Порядок строк имеет значение! |
| поиск по образцу | search by the pattern | Ищет в строке (или во всем тексте) очередное вхождение подстроки-образца, и выдает позицию его вхождения. |
| образец | pattern | Строка символов, с которой сверяют найденный фрагмент в тексте. Может быть строкой "обычных символов" (т.н. "литералов"), а может содержать в себе регулярное выражение. |
| замена фрагмента | replacing of a fragment of the text | Операция замещения найденного по образцу текста другим текстом, которым может быть только "литерал". |
| разбиение строки 1. | breakdown of a line | Операция, при которой содержимое строки с текстом на экране дисплея (или в текстовом редакторе) разбивается на две или большее число менее длинных строк. |
| разбиение строк 2. | partition of strings | Общее название операций над символьными строками, при которых из "единой" текстовой строки изымаются ее фрагменты, а также производится разбивка одной строки на несколько более коротких строк (операция, обратная конкатенации). |
| компоновка (программы) | build (of a program) | В IDE - процесс компиляции и создания исполняемого файла (c расширениями *.com, *.exe, *.dll, *. |
| Perl | Perl | Язык программирования "высокого уровня" предназначенный для обработки символьных данных путем создания исполняемых макросов. Этот язык - интерпретируемый, |
| переменная "@_" | variable "@_" | Специальная переменная языка Perl, предназначенная для передачи " |
| функция "exit" | exit function | Функция на языках Си, C++, Perl и др., при вызове которых происходит завершение работы программы и возврат целого значения операционной системы. Эта функция используется для того, чтобы передать системе |
| валидация | validation | Проверка на соблюдение синтаксиса и семантики текстом, написанным на некотором естественном или искусственном языке, а также любого текста с языком разметки внутри него. Проверка орфографии является одним из примеров |
| перекодирование | recoding | Преобразование символов некоторого языка из одной кодовой страницы в другую. |
| кодовая страница | codepage | Способ назначения литерам латинского или иного алфавита уникального кода, состоящего из целых чисел, для дальнейшей их обработки на ЭВМ. |
| литерал | literal | В языках программирования - строка литер (символов), значение которых определяется этими символами и их порядком. Литералы каким-либо способом выделяются в тексте программы. Литералами не являются: операторы, имена констант/функций, теги и другие специальные конструкции языка. В то же время литералами могут быть константы, строки, внешние опции и команды, подаваемые на вход программы и т.п. |
| программный интерфейс | application interface | Характеристика для связи ("сопряжения") нескольких программных модулей. Характеризуется точным описанием использования формальных и |
| API | API | Расшифровывается как " |
| библиотека | library | Совокупность отдельных программ и программных пакетов, которые предназначены для всеобщего использования в какой-либо определенной среде. Компоненты этой библиотеки не обязательно должны быть связанными. |
| комментарии | remarks | Вставленные в текст программы символы, игнорируемые компилятором и служащие для облегчения понимания синтаксических конструкций, написанных программистом. Обычно комментарии в программе "заключаются" между специальными символами, реже вводятся отдельным оператором. |
| метка | label | Число или идентификатор, поставленный в начале какого-либо ("помеченного") оператора, на который будет передаваться управление в результате выполнения операции |
| ключевое слово | keyword | Символический идентификатор в языке программирование, имеющее особое значение для компилятора или интерпретатора. Эти слова помогают при анализе выражений языка и создании программы. |
| основная программа | main program | Модуль при создании программного проекта, который предназначен для управления всеми остальными подпрограммами проекта, содержит запускающий файл, и файл с ним имеет имя "имя проекта". В языке Си основная программа проекта имеет имя: "main". |
| основной файл проекта | project's main file | См. Основная программа |
| прагма оператор | pragma operator | Оператор, служащий для подачи компилятору проекта определенной информации. См. |
| запуск команды | run of a command | Запуск скомпилированной программы на исполнение. Обычно осуществляется либо набором имени файла с программой в командной строке и нажатием клавиши: "Enter", либо двойным щелчком левой клавишей мыши на значке программы в файловом менеджере. |
| скрипт | script | См. командный файл |
| макрос | macros | См. командный файл |
| успешный результат | success result | Результат выполнения команды пользователя, программы и т.п., при которых ее выполнение прошло "в штатном режиме", без возникновения ошибок или |
| аргумент | arguments | Собирательное название |
| опция | option | Не обязательное вхождение в командной строке команды символов, которое изменяет алгоритм, последовательность операций алгоритма и т.п. С помощью опций можно во много раз повысить функциональность одной и той же команды в командной строке, добавить дополнительные действия либо исключить лишние действия, не создавая нового кода программы. |
| параметр | parameter | Обязательное вхождение в командной строке символов, которое определяет необходимую дополнительную информацию (имя файла, имя переменной, режим работы и т.п.), без указания которой команда "не работоспособна". |
| командная строка 1. | command line | Одна из технологий командного интерфейса, в которой пользователь вводит на консоли некоторые команды на выполнения действий, а ЭВМ выдает на ту же консоль результаты выполнения программ. |
| консоль | console | В терминах ЭВМ консоль представляет собой "терминал", т.е. для ввода используется клавиатура, а для вывода - экран дисплея. |
| командная строка 2. | command line | На экране дисплея представляет собой некоторое приглашение на ввод команды (которое можно настроить) и текстовый курсор, в позицию которого вводится текст с клавиатуры. Команды завершаются нажатием клавиши: "Enter". После выполнения команды результат выводится с новой строки, вывод заканчивается символом ввода новой команды. |
| массив символьных переменных | massive of the character variables | Одиночные символы, которые располагаются подряд в ячейках оперативной памяти. Доступ к каждому элементу осуществляется по его индексу. Массив символьных переменных является простейшим способом представления символьных строк. В настоящее время тип: "строка" состоит из массивов символьных данных, к которым добавлена служебная информация для управления ими. |
| директивы компилятору | directives for compilator | Специальные директивы языка программирования: идентификаторы, прагма функции и операторы и т.п., не описывающие алгоритм задачи, а указывающие компилятору, как обрабатывать, оптимизировать код для данного файла с алгоритмом. |
| макрофункция | macro function | |
| макроподстановка | macro substitution | Подстановка тела макрофункции в текст готовой программы в тех местах, где она встретилась. |
| глобальные переменные | global variables | Переменные, объявленные и описанные перед определением главной функции приложения "main" и доступные для всех модулей-подпрограмм. |
| компилировать | compile | Преобразовывать при помощи программы-компилятора исходный текст программы на языке программирования в объектный код ЭВМ. |
| скомпоновать | build | Преобразование объектного кода, сгенерированного в результате выполнения проекта, в код готовой программы для операционной системы. При компоновке устанавливаются связи между программами, назначаются "абсолютные адреса" переменным, определяются "точки входа" для функций и т.п. |
| интегрированная среда разработчика | Integrated development environment, IDE | Программный комплекс, включающий в себя текстовый редактор, компилятор, компоновщик, отладчик и др. утилиты, необходимые для создания и отладки проектов по производству программных продуктов. Обычно IDE поставляются вместе с языками программирования. |
| иконка, пиктограмма | icon | Схематический значок, при двойном щелчке на котором запускается связанная с ним программа, или запускается на редактирование файл в одной из программ. Иконка является важной частью |
| рабочий стол | desktop | Представляет собой экран компьютера, на котором расположены инструменты управления компьютером, а также значки для запуска приложений и файлов. |
| отладка сценариев | debugging of the scripts (macros) | Нахождение ошибок в программе сценария или макро функций. При отладке сценариев практически не используются внешние отладчики. |
| файл-библиотека (Perl) | file with library | Одиночный файл с макрофункциями, доступный для всех других макросов, созданных на языке Perl. Это очень простой способ для повторного использования кода в Perl. |
| модуль (Perl) | module (of a Perl) | Файл с подпрограммами на языке Perl и ссылками на двоичные файлы, содержащийся в системной библиотеке с расширением: "*.pm". В отличие от файлов-библиотек, модули не копируются, а инсталлируются с установлением зависимостей с другими пакетами Perl. |
В "заголовочные файлы" программ на языке Си/C++ пишется следующая информация:
Рассмотрим эти конструкции поподробнее:
Представляет собой следующий шаблон:
/********************************************************** * * Файл <имя файла>.H * * НАЗНАЧЕНИЕ: * * ЗАВИСИМОСТИ: * * Copyright (R) * **********************************************************/
В нем обязательно нужно указать название файла, назначение констант, переменных, объявлений типов и функций, использованных в данном заголовочном файле. Это нужно сделать "коротко и ясно". Также желательно указать зависимости данного файла с другими заголовочными файлами, а также правообладателя программы (название организации, либо имя и псевдоним, и обязательно контактные данные). Это может потребоваться при внесении изменений в программу в целом и в этот заголовочный файл в частности.
Представляет собой следующий шаблон:
#ifndef __"имя файла"_H #define __"имя файла"_H … #endif /* Конец заголовочного файла */
Эта конструкция определяет переменную: " __"имя файла"_H ". Именно использование этой переменной в пункте 3 (вернее, проверка на ее существование) предотвращает повторную загрузку заголовочного файла из самого себя или другого заголовочного файла.
В конце описания заголовочного файла должно стоять подножие: #endif. Заметим, что использование этих конструкций и правила
Вставка других заголовочных файлов представляет собой следующий шаблон:
/* Включение заголовочных файлов */ #ifndef __"имя файла1"_H #include ""имя файла1"".h #endif #ifndef __"имя файла2"_H #include <"имя файла2">.h #endif …
Обратите внимание, что оператор вставки файла " #include " окружен "условными прагма операторами" " #ifndef " и " #endif ". Их использование предотвращает повторную загрузку заголовочных файлов и, таким образом, предотвращает повторное определение или переопределение типов, констант и переменных, указанных в них.
Эти операторы вставляются в текст только по-необходимости, и часто их включения не требуется.
Сюда вставляются определения констант и макроподстановок, определенных через прагма оператор #define. Конечно, его использование может некоторыми авторами рассматриваться как "анахронизм". Однако оцените его удобство и универсальность!
Определение представляет собой следующий шаблон:
/* Определение констант */
#define "ИМЯ_КОНСТАНТЫ" "значение"
/* Определение макроподстановок */
#define "МАКРОФУНКЦИЯ"("ПАРАМЕТРЫ") "текст макроса"
Объявления представляют собой следующий шаблон:
typedef struct "tagType"
{
"определение типа Type"
}"Type";
typedef union "tagType"
{
"определение типа Type"
}"Type";
typedef enum "tagType"
{
"определение типа Type"
}"Type";
Иногда необходимо в файле задать переменные, которые будут использоваться сразу несколькими описанными функциями. Эти переменные можно объявить как "глобальные переменные", а не передавать в качестве параметров. Это может создать более понятные и "компактные" программы. Эти объявления можно описать как в заголовочном файле, так и в начале файлов с описанием (определением) нужных функций.
Объявление представляет собой следующий шаблон:
/* Объявление глобальных переменных */ "тип" "имя" … …;
Перед использованием новых функций на языке Си необходимо прежде их объявить, что и происходит в конце заголовочного файла.
Объявление представляет собой следующий шаблон:
/* Объявление функций: */
"тип возвр. значения" "имя функции1"("имя и тип формальных параметров"…);
"тип возвр. значения" "имя функции2"("имя и тип формальных параметров"…);
…
/**********************************************************
*
* Файл <имя файла>.H
*
* НАЗНАЧЕНИЕ:
*
* ЗАВИСИМОСТИ:
*
* Copyright (R)
*
**********************************************************/
#ifndef __"имя файла"_H
#define __"имя файла"_H
/* Включение заголовочных файлов */
#ifndef __"имя файла1"_H
#include ""имя файла1"".h
#endif
#ifndef __"имя файла2"_H
#include <"имя файла2">.h
#endif
…
/* Указание директив компилятору: */
…
/* Определение констант */
#define "ИМЯ_КОНСТАНТЫ" "значение"
/* Определение макроподстановок */
#define "МАКРОФУНКЦИЯ"("ПАРАМЕТРЫ") "текст макроса"
/* Определение типов */
typedef enum tag"имя типа"
{
"константа 1";
…
"константа n";
}"имя типа";
typedef struct tag"имя типа"
{
"тип" "имя поля";
… …;
}"имя типа";
typedef union tag"имя типа"
{
"тип" "имя поля";
… …;
}"имя типа";
/* Объявление глобальных переменных */
"тип" "имя"
… …;
/* Объявление функций: */
"тип возвр. значения" "имя функции1"("имя и тип формальных параметров"…);
"тип возвр. значения" "имя функции2"("имя и тип формальных параметров"…);
…
#endif
/* Конец заголовочного файла */
Подпрограммы служат для объединения группы операторов с целью их повторного использования. Следующим шагом является объединение группы подпрограмм и их сохранение в отдельном файле для последующего использования в других программах. Для реализации этой задачи в языке Perl присутствуют два механизма: библиотеки и модули.
Библиотека представляет собой пакет, областью действия которого является отдельный файл. Иными словами, библиотека - это файл, в качестве первой строки содержащий объявления пакета:
package "имя пакета"
Имя файла библиотеки обычно имеет расширение "*.pl".
Для использования библиотеки в основной программе ее нужно подключить при помощи require смотри раздел 3.7.2.3.1.
Для создания собственной библиотеки следует выполнить перечисленные ниже шаги:
Последний пункт служит для того, чтобы возвращаемое значение функции require не равнялось нулю.
Пример:
# библиотечный файл ~/bin/perllib/mylib.pl # знак "~" означает домашний каталог пользователя "подпрограмма 1" "подпрограмма 2" … 1:
Для подключения библиотечного файла из собственной библиотеки следует выполнить перечисленные ниже шаги:
require, указав в качестве аргументов имена требуемых библиотечных файлов.Пример.
#!/usr/bin/perl unshift( @INC, "~/bin/perllib"); require "mylib.pl"; "тело макроса" …
Дальнейшим развитием понятия библиотеки явилось понятие модуля. Модуль представляет собой библиотеку подпрограмм, организованную в виде отдельного пакета и обладающими дополнительными свойствами.
Модуль - это пакет. Пакет представляет собственное пространство имен, в котором для обозначения полного имени используется нотация вида "Родитель" :: "Сын" :: "Внук" :: "имя переменной". Модуль позволяет управлять экспортом своих имен в другие программы, объявляя, какие из них экспортируются по-умолчанию, а какие должны быть явно указаны при экспорте.
Под экспортом понимается предоставление возможности другим модулям использовать символы из пространства имен данного модуля. Соответственно под импортом понимается включение в собственное пространство имен символов из других модулей.
В целях управления экспортом каждый модуль должен иметь в себе метод import и специальные массивы @EXPORT и @EXPORT_OK.
import() ;@EXPORT содержит идентификаторы, экспортируемые по-умолчанию;@EXPORT_OK содержит идентификаторы, экспортируемые из модуля только в случае их явного указания;use().Для создания собственного модуля следует выполнить перечисленные ниже шаги:
require ;Пример файла модуля: MyModule.pm
package MyModule;
require Exporter;
@ISA = qw( Exporter );
@EXPORT = qw(MyArgs);
@EXPORT_OK = qw( $MyArgs @MyArgs %MyArgs )
sub MyArgs
{
"тело функции"
}
# Примечание: вместо имени MyArgs в пакете могут быть определены другие имена переменных и функций
"тело не экспортируемых функций"
К основной программе модуль MyModule подключается при помощи директивы use. Эта директива содержит список импорта.
Обычно список импорта содержит имена переменных и функций. Кроме того, список импорта может содержать некоторые управляющие им спецификации. Спецификация :DEFAULT означает включение в список импорта всех элементов специального массива @EXPORT.
Пример файла основной вызывающей программы MyMain.pl
#!/usr/bin/perl use MyModule qw( :DEFAULT $MyArgs, @MyArgs %MyArgs ); "операторы вызывающей программы" …
Функция загружает
СИНТАКСИС:
require [EXPR] require VERSION
Если параметр EXPR отсутствует, вместо нее используется специальная переменная $_.
Если параметр является числом, то он означает, что требуется версия интерпретатора Perl не ниже, чем указанная.
Если параметр является строкой, функция require включает в основную программу библиотечный файл, заданный параметром EXPR. При этом функция использует две встроенные переменные Perl: @INC и %INC.
Обычно имена библиотечных файлов имеют расширение: "*.pl". Поэтому для избегания неправильного толкования специальных знаков имена файлов следует заключать в кавычки, например:
require "myfile.pl"
Если аргумент является словом без расширения, не заключенным в кавычки, то ему добавляется расширение: "*.pm".
Специальный встроенный массив @INC содержит имена каталогов, в которых надо искать макросы языка Perl, в том числе и библиотеки, подлежащие в выполнению в конструкциях do, require и use. Первоначально он содержит:
Специальный встроенный хэш-массив %INC содержит по одному элементу для каждого файла, включенного с помощью функций do и require. Ключом при этом будет имя файла в том виде, в каком она встретилась в функциях do и require, а значением - его полное путевое имя.
Встретив директиву require, интерпретатор Perl просматривает специальный хэш-массив %INC на присутствие в массиве имени файла. Если да, то выполнение функции завершается. Таким образом, файл может быть включен в список только один раз. Если же этого файла нет, то просматриваются все каталоги из массива @INC в поисках нужного файла. Если файл найден, то он выполняется, иначе генерируется ошибка.
СИНТАКСИС:
use Module [LIST] use VERSION
Эта встроенная функция служит для загрузки модуля в момент его компиляции. Директива use автоматически экспортирует имена функций и переменных в основное пространство имен текущего пакета. Для этого оно вызывает метод: import() импортируемого модуля. Механизм экспорта имен рассчитан таким образом, что каждый экспортируемый модуль должен иметь свой модуль import(). Метод import() должен быть определен в самом экспортирующем модуле, или должен быть наследован у модуля Exporter.
Если первый аргумент директивы use является числом, он обозначает номер версии интерпретатора Perl. Если версия интерпретатора Perl меньше, чем указанная в директиве use, то интерпретатор завершает работу, выдавая сообщение об ошибке.
Если список импорта LIST отсутствует, из модуля Module будут импортированы те имена, которые перечислены в специальном массиве @EXPORT, определяемом в самом модуле Module.
Если список импорта задан, то LIST.
@echo off rem Диску Y: (он должен быть свободен) rem назначается имя текущего каталога rem командой subst Y: . subst Y: . rem Вызываем интерпретатор Perl rem Скрипт-файл на языке Perl должен rem находиться на C:\Perl\user\PerlScripts perl C:\Perl\user\PerlScripts\%1 Y:\%2 Y:\%3 Y:\%4 Y:\%5 Y:\%6 Y:\%7 Y:\%8 Y:\%9 REM Удаляем диск Y: subst Y: /D
С помощью данного файла можно запустить макрос, находящийся в директории: C:\Perl\user\PerlScripts (она должна быть сначала создана, и в нее скопированы файлы со скриптами), в качестве параметров к которому используются файлы из
В именах файлов не допускается использование кавычек.
Букве "Y:" не должно быть назначено имя сетевого или логического диска;
Данный файл используется в среде Microsoft Windows для интерпретатора ActiveState Perl 5.x.x.
@echo off rem Диску Y: (он должен быть свободен) rem назначается имя текущего каталога rem командой subst Y: . subst Y: . rem Вызываем интерпретатор Perl rem Скрипт-файл на языке Perl должен rem находиться в той же директории, что и параметры: perl Y:\%1 Y:\%2 Y:\%3 Y:\%4 Y:\%5 Y:\%6 Y:\%7 Y:\%8 Y:\%9 REM Удаляем диск Y: subst Y: /D
С помощью данного файла можно запустить скрипт, находящийся в
В именах файлов не допускается использование кавычек.
Букве "Y:" не должно быть назначено имя сетевого или логического диска;
Данный файл используется в среде Microsoft Windows для интерпретатора ActiveState Perl 5.x.x.
@echo off rem Диску Y: (он должен быть свободен) rem назначается имя текущего каталога rem командой subst Y: . subst Y: . rem Вызываем интерпретатор Perl rem Скрипт-файл на языке Perl должен rem находиться на C:\Perl\user\PerlScripts perl C:\Perl\user\PerlScripts\%1 %2 %3 %4 %5 %6 %7 %8 %9 REM Удаляем диск Y: subst Y: /D
С помощью данного файла можно запустить скрипт, находящийся в директории: C:\Perl\user\PerlScripts (она должна быть сначала создана, и в нее скопированы файлы со скриптами), в качестве параметров к которому используются файлы из
Этот командный файл может запускаться только внутри других командных файлов.
В именах файлов допускаются кавычки, кроме имени файла с макросом (с расширением *.pl, первый параметр).
Букве "Y:" не должно быть назначено имя сетевого или логического диска;
Данный файл используется в среде Microsoft Windows для интерпретатора ActiveState Perl 5.x.x.
@echo off rem Диску Y: (он должен быть свободен) rem назначается имя текущего каталога rem командой subst Y: . subst Y: . rem Вызываем интерпретатор Perl rem Скрипт-файл на языке Perl должен rem находиться в той же директории, что и параметры: perl Y:\%1 %2 %3 %4 %5 %6 %7 %8 %9 REM Удаляем диск Y: subst Y: /D
С помощью данного файла можно запустить скрипт, находящийся в
Этот командный файл может запускаться только внутри других командных файлов.
В именах файлов допускаются кавычки, кроме имени файла с макросом (с расширением *.pl, первый параметр).
Букве "Y:" не должно быть назначено имя сетевого или логического диска;
Данный файл используется в среде Microsoft Windows для интерпретатора ActiveState Perl 5.x.x.
#/bin/sh # # @echo off # echo Вызываем интерпретатор Perl # echo Скрипт-файл на языке Perl должен # echo находиться на /home/имя_пользователя/bin/Perl/user/PerlScripts perl /home/имя_пользователя/bin/Perl/user/PerlScripts/$1 ./$2 ./$3 ./$4 ./$5 ./$6 ./$7 ./$8 ./$9
С помощью данного файла можно запустить скрипт, находящийся в директории: /home/имя_пользователя/bin/Perl/user/PerlScripts (она должна быть сначала создана, и в нее скопированы файлы со скриптами), в качестве параметров к которому используются файлы из
В именах файлов не допускается использование кавычек.
Данный файл используется в среде ALT Linux для интерпретатора Perl версии 5.x.x.
#/bin/sh # # @echo off # echo Вызываем интерпретатор Perl # echo Скрипт-файл на языке Perl должен # echo находиться в той же директории, что и параметры: perl ./$1 ./$2 ./$3 ./$4 ./$5 ./$6 ./$7 ./$8 ./$9
С помощью данного файла можно запустить скрипт, находящийся в
В именах файлов не допускается использование кавычек.
Данный файл используется в среде ALT Linux для интерпретатора Perl версии 5.x.x.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.