Паскаль программирование для начинающих: Основы программирования | Язык Паскаль
Содержание
Что такое программирование и язык программирования
Зачем нужно программирование
Часто людям приходится делать что-то, а потом повторять те же действия сразу или позже. Когда человек первый раз сталкивается с задачей, то обдумывает последовательность действий для ее решения. Другими словами, человек разрабатывает алгоритм решения задачи. Придумав удачный алгоритм, человек его запоминает, и последующее выполнение похожих задач происходит уже на автомате, не думая. Когда мы действуем согласно какой-либо инструкции, не обдумывая ее смысл, то являемся просто исполнителями.
Компьютер может быть лучшим исполнителем, чем человек, хотя бы за счет высокой скорости выполнения действий. У компьютера тоже есть память. И в нее можно записать последовательность действий, то есть алгоритм, для решения той или иной задачи. Машина будет следовать заложенным в ней инструкциям раз за разом и быстро выполнять их.
Однако запрограммировать компьютер, то есть записать в него алгоритм, вложить программу действий, все равно надо. И сделать это может только человек. Человек разрабатывает последовательность действий для решения задачи и сохраняет их в памяти машины. Сам по себе компьютер ничего не понимает, он просто железо, исполняющее лишь то, что было записано в его память.
Разработка алгоритмов для решения сложных задач — трудоемкий и творческий процесс, который зачастую требует знаний из разных областей (например, математики, программирования и предметной области, для которой создается программа). Однако часто выгоды, получаемые при выполнении алгоритма с помощью компьютера, перекрывают затраты на его разработку.
Что такое компьютерная программа
Предположим, что поместить в память компьютера алгоритмы, написанные человеком на естественных языках, не проблема. Но вычислительная машина не понимает такие языки. Для нее нужны инструкции на особом языке — языке программирования. Алгоритм, описанный с помощью языка программирования, является компьютерной программой.
Языки программирования и их история
Так какой же язык понятен компьютеру, в каком виде следует вносить информацию в его память, чтобы он потом делал то, что мы хотим. Компьютер – это электронное вычислительное устройство. Вычислительное! Он работает с числами, складывает, вычитает, сравнивает. Больше ни с чем. Но как же? Ведь мы привыкли обрабатывать на компьютере не только числовую информацию, также текстовую и графическую. Поэтому нам кажется, что компьютер работает не только с числами. Фокус заключается в том, что любую информацию, в том числе текстовую и графическую можно закодировать числами. Все действия компьютер выполняет над числами. И только когда мы обращаемся к данным, эти числа определенным образом декодируются.
Первые программы для ЭВМ программисты писали именно числами. Это сложно для человека. Представьте, что все, что вы хотите сказать, нужно сказать, оперируя исключительно числами. Дело усложнялось еще тем, что компьютеры как вычислительные машины проще создавать таким образом, чтобы они считали в двоичной системе счисления. Записи программ получались слишком длинными. Для их сокращения пользовались восьмеричной и шестнадцатеричной системами счисления. Для записи программы с помощью чисел использовались машинные языки программирования.
Программировать работу компьютера в машинных кодах трудно, так как думать числами неестественно для человека. Мы привыкли думать словами. А что если сопоставить часто используемым группам чисел слова, а затем написать программу перевода слов в числа, понятные компьютеру. В таком случае программист сможет описать алгоритм словами, затем передать его специальной программе-переводчику — транслятору, который преобразует словесный алгоритм в машинный код, понятный компьютеру. И человеку хорошо и компьютеру понятно. От человека требовалось только создать этот самый транслятор. Первыми языками программирования, где использовались слова, были ассемблеры.
Чуть позже программисты стали замечать, что почти все программирование сводится к вводу и выводу данных, выбору той или иной ветки выполнения программы и повторению одних и тех же действий определенное количество раз. Кроме того, некоторые части программы много раз используются в ней в разных местах. Так пришли к выводу о том, что программа должна представлять собой структуру из обособленных частей. Стало развиваться структурное программирование.
Мысль не стояла на месте. Начали появляться объектно-ориентированные, логические, функциональные и другие способы программирования. Так в объектно-ориентированном программировании основной идеей стала аналогия с реальным миром, где есть объекты, имеющие свойства, умеющие что-то делать сами и подвергающиеся изменениям извне. Решение поставленной задачи при этом происходит путем взаимодействия описанных объектов.
Отметим, конкретный язык программирования может поддерживать несколько концепций, или парадигм, программирования. Например, быть структурным и объектно-ориентированным одновременно. Языков множество, парадигм на порядок меньше.
Книги по PascalABC.NET
ОКниги Осипова А.В.
Знакомьтесь: Осипов Александр Викторович, инженер-механик по образованию, еще со студенческих лет увлекавшийся вычислительной техникой и посвятивший ей почти полвека своей трудовой жизни. На вопрос, на каких языках программирования писал программы, уклончиво отвечает: «Знаю около 30. И полностью согласен с Аланом Перлисом в том, что «Не стоит изучать язык, который не меняет вашего представления о программировании».
Однажды познакомившись с PascalABC.NET, почувствовал, что этот язык многогранен и лучше подходит для обучения начинающих чем Питон и C++. Чтобы поглубже освоить PascalABС.NET, решил написать книгу о нем. И написал, потратив полтора года своей жизни! Книга «PascalABC.NET: введение в современное программирование» является на сегодняшний момент единственным глубоким справочником по языку, содержащим огромное количество примеров программ.
Его вторая книга — «PascalABC.NET: выбор школьника» является ровно тем, что написано в заголовке. Вы познаете основы языка, научитесь реализовывать линейные алгоритмы, алгоритмы с ветвлением и циклами. В книге дан анализ 70 типичных задач из популярных задачников, разобрана их реализация в PascaLABC.NET. В конце книги излагается простая методика понимания кодов программ, приведенных в КИМ ОГЭ и ЕГЭ. Мы с нетерпением ждём её вторую часть — про последовательности, срезы, лямбды, олимпиадное программирование, а также про всё, что вы боялись спросить о программировании на PascalABC.NET.
Осипов Александр Викторович — уникальный человек. Он не любит жлобства и выкладывет свои книги в свободный доступ.
ААбрамян М.Э. «Структуры данных в PascalABC.NET» (в двух частях). Учебное пособие.
Первая часть содержит полное описание возможностей языка PascalABC.NET, связанных с динамическими массивами и последовательностями, включая обзор всех запросов для последовательностей, как входящих в стандартную библиотеку платформы .NET , так и разработанных специально для стандартной библиотеки PascalABC.NET. Особое внимание уделяется средствам PascalABC.NET, не имеющим прямых аналогов в стандартной библиотеке .NET, в частности, подпрограммам для генерации, ввода и вывода массивов и последовательностей. Детально обсуждаются особенности последовательностей как структур, выполняющих отложенную обработку данных.
Во второй части обсуждаются различные варианты алгоритмов, связанных с нахождением минимальных и максимальных элементов, рассматриваются структуры данных из библиотеки PascalABC.NET (списки, множества, словари, стеки и очереди), а также детально описываются особенности работы с многомерными структурами, в том числе многомерными и невыровненными массивами.
Изложение сопровождается многочисленными примерами, причем основная часть примеров представляет собой решения задач из электронного задачника Programming Taskbook, встроенного в систему PascalABC.NET.
РКниги Валерия Рубанцева.
Валерий Рубанцев — замечательный современный популяризатор программирования. В его арсенале — множество уникальных книг по программированию на Python, C# и PascalABC.NET, написанных увлекательно, с задоринкой, красочно оформленных. Валерий Рубанцев любезно согласился предоставить для нашего сайта некоторые свои книги.
Назад
Вперёд
отличных бесплатных руководств по изучению Паскаля
Эрик Карлссон Программирование, учебные пособия
Pascal — это императивный и процедурный язык программирования, разработанный в конце 1960-х годов Никлаусом Виртом для обучения структурному программированию с использованием подпрограмм, называемых процедурами и функциями. Этот язык является прямым потомком ALGOL 60 и использует программные компоненты из ALGOL 68 и ALGOL-W. Паскаль был назван в честь французского математика, физика и философа Блеза Паскаля, который способствовал развитию компьютеров.
Паскаль — популярный язык обучения для ознакомления учащихся с методами структурного программирования. У этого типа программирования есть много преимуществ, таких как повторное использование кода, разделение кода на читаемые модули и процедуры, а также помощь программистам в совместной работе над кодом. Язык также поддается обучению благодаря простому синтаксису. Pascal — язык со строгой типизацией, процедурный, нечувствительный к регистру, с обширной проверкой ошибок. Он имеет встроенные типы данных, такие как массивы, записи, файлы и наборы. Существуют также определяемые пользователем типы данных. Паскаль поддерживает объектно-ориентированное программирование.
Вот наши рекомендуемые учебники для изучения Pascal. Если вы ищете бесплатные книги по программированию на Pascal, проверьте здесь .
1. Изучение Pascal от Тао Юэ
Это руководство представляет собой простое, но полное введение в язык программирования Pascal. Он охватывает весь синтаксис стандартного Паскаля, включая указатели.
Прочитать руководство
2. Учебное пособие по Pascal от tutorialspoint
Это учебное пособие предназначено для профессионалов в области программного обеспечения, которые хотят изучить язык программирования Pascal простыми и легкими шагами. Этот учебник должен дать вам базовое понимание концепций программирования на Паскале, и после завершения этого руководства вы должны быть на среднем уровне знаний, откуда вы сможете перейти на более высокий уровень знаний.
Прочитать учебник
3. Учебное пособие по Паскалю от Даниэля Д’Агостино
Это хорошая отправная точка для изучения Паскаля. Он предлагает хороший охват языка и имеет справочный раздел.
Прочтите руководство
4. Учебники по программированию на Паскале от Sheepdog Software
Этот сайт предлагает вам последовательность уроков, которые должны помочь вам освоить программирование на Паскале.
Читать руководства
Все учебные пособия этой серии:
Бесплатные учебные пособия по программированию | |
---|---|
ABAP | Расширенное программирование бизнес-приложений |
Ада | Алголоподобный язык программирования, расширенный от Паскаля и других |
Agda | Функциональный язык с зависимой типизацией, основанный на интуиционистской теории типов |
Алиса | Учебный язык с интегрированной средой разработки |
Arduino | Недорогая, гибкая платформа микроконтроллеров с открытым исходным кодом |
Сборка | Как можно ближе к написанию машинного кода без записи в чистом шестнадцатеричном формате |
Awk | Универсальный язык для сканирования и обработки шаблонов |
Bash | Bourne-Again-SHell — это и оболочка, и язык программирования |
BASIC | Семейство языков программирования высокого уровня общего назначения |
C | Язык общего назначения, процедурный, переносимый, язык высокого уровня |
C++ | Язык общего назначения, переносимый, свободной формы, мультипарадигмальный |
C# | Сочетает мощь и гибкость C++ с простотой Visual Basic |
Chapel | Язык параллельного программирования в разработке Cray Inc.![]() |
Clojure | Диалект языка программирования Lisp |
ClojureScript | Компилятор для Clojure, ориентированный на JavaScript |
КОБОЛ | Общий деловой язык |
CoffeeScript | Очень лаконичный язык программирования, транскомпилируемый в JavaScript |
Coq | Язык с зависимой типизацией, аналогичный Agda, Idris, F*, Lean и др. |
Crystal | Универсальный, параллельный, мультипарадигменный, объектно-ориентированный язык |
CSS | CSS (каскадные таблицы стилей) определяет внешний вид веб-страницы |
D | Язык системного программирования общего назначения с Си-подобным синтаксисом |
Dart | Язык программирования, оптимизированный для клиента, для быстрых приложений |
Dylan | Мультипарадигмальный язык, поддерживает функциональное и объектно-ориентированное программирование |
ECMAScript | Наиболее известен как язык, встроенный в веб-браузеры |
Eiffel | Объектно-ориентированный язык |
Elixir | Относительно новый функциональный язык, работающий на виртуальной машине Erlang |
Elm | Функциональный язык, который компилируется в JavaScript |
Emacs Lisp | Диалект языка программирования Lisp.![]() |
Erlang | Общий, параллельный, декларативный, функциональный язык |
F# | Язык общего назначения, строго типизированный, мультипарадигмальный. Часть МЛ |
Коэффициент | Язык на основе динамического стека |
Форт | Императивный язык программирования на основе стека |
Фортран | Первый язык высокого уровня, использующий первый компилятор |
GDScript | Встроенный язык Godot для сценариев и взаимодействия с узлами |
Go | Компилируемый статически типизированный язык программирования |
Groovy | Мощный, опционально типизированный и динамический язык |
Hack | Для виртуальной машины HipHop (HHVM), созданной как диалект PHP |
Haml | Язык разметки абстракций HTML |
Haskell | Стандартизированный, универсальный, полиморфно, статически типизированный язык |
HTML | Язык гипертекстовой разметки |
Значок | Язык высокого уровня общего назначения |
Imba | Язык полного стека, который компилируется в производительный JavaScript |
J | Язык программирования массивов, основанный главным образом на APL |
Java | Язык общего назначения, параллельный, основанный на классах, объектно-ориентированный, язык высокого уровня |
JavaScript | Интерпретируемый язык сценариев на основе прототипов |
Julia | Высокоуровневый высокопроизводительный язык для технических вычислений |
Kotlin | Статически типизированный язык программирования общего назначения с выводом типов |
LabVIEW | Предназначен для того, чтобы специалисты в данной области могли быстро создавать системы электропитания |
LaTeX | Профессиональная система подготовки документов и язык разметки документов |
Меньше | Языковое расширение с обратной совместимостью для каскадных таблиц стилей |
Limbo | Предназначен для приложений, запускающих распределенные системы на небольших компьютерах |
Lisp | Уникальные функции — отлично подходит для изучения конструкций программирования |
Логотип | Диалект Лиспа с интерактивностью, модульностью и расширяемостью |
Lua | Разработан как встраиваемый язык сценариев |
Markdown | Синтаксис форматирования простого текста, разработанный для удобства чтения и написания |
MoonScript | Дружественный язык для динамических сценариев, который компилируется в Lua |
Nim | Статически типизированный компилируемый системный язык с синтаксисом, напоминающим Python |
Objective-C | Язык общего назначения, являющийся надмножеством C |
OCaml | Мощный язык высокого уровня общего назначения |
Октава | Язык высокого уровня, в основном предназначенный для численных вычислений |
OpenCL | Открытый язык вычислений |
Паскаль | Императивный и процедурный язык, разработанный в конце 1960-х годов |
Perl | Высокоуровневый, универсальный, интерпретируемый, скриптовый, динамический язык |
Pike | Интерпретируемый, универсальный, высокоуровневый, кросс-платформенный, динамический язык |
PHP | PHP уже много лет находится у руля Интернета |
Pony | Pony — модель актера, высокопроизводительный язык с защищенными возможностями |
PostScript | Язык описания страниц в электронных и настольных издательских системах |
Prolog | Общий, декларативный, логический язык программирования |
PureScript | Небольшой строго статически типизированный язык с выразительными типами |
Python | Универсальный, структурированный, мощный язык |
QML | Иерархический декларативный язык для макета пользовательского интерфейса с синтаксисом JSON |
R | Стандарт де-факто среди статистиков и аналитиков данных |
Racket | Платформа для разработки и реализации языка программирования |
Раку | Член семейства языков программирования Perl |
Ruby | Язык общего назначения, скриптовый, структурированный, гибкий, полностью объектно-ориентированный |
Rust | Идеально подходит для систем, встраиваемых систем и другого кода, критически важного для производительности |
Scala | Современный объектно-функциональный, мультипарадигменный язык на основе Java |
Схема | Язык общего назначения, функциональный, производный от Лиспа и Алгола |
Scratch | Визуальный язык программирования для детей 8-16 лет |
Solidity | Объектно-ориентированный язык высокого уровня для реализации смарт-контрактов |
SQL | Доступ и управление данными, хранящимися в системе управления реляционными базами данных |
Стандартный ML | Один из двух основных диалектов языка ML |
Swift | Мощный и интуитивно понятный язык программирования общего назначения |
Tcl | Динамический язык, основанный на концепциях оболочек Lisp, C и Unix |
TypeScript | Строгий синтаксический расширенный набор JavaScript с добавлением дополнительной статической типизации |
V | Статически типизированный скомпилированный язык для создания поддерживаемого программного обеспечения |
Vala | Объектно-ориентированный язык с собственным компилятором, генерирующим код C |
VHDL | Язык описания аппаратного обеспечения сверхвысокоскоростных интегральных схем |
VimL | Мощный скриптовый язык редактора Vim |
XML | Набор правил для определения семантических тегов, описывающих структуру и значение |
Учебники по программированию на Паскале
Пройдите наши бесплатные интерактивные курсы по науке о данных. Существуют курсы для Python с использованием pandas и plotnine и R с использованием ggplot2 .
Ускорьтесь за 20 минут. Никаких знаний в области программирования не требуется.
Прочитайте наши списков отличных бесплатных книг по программированию . Изучайте Java , C , Python , C++ , C# , JavaScript , PHP и многие другие языки.
Кроме того, ознакомьтесь с нашей серией отличных бесплатных руководств по программированию .
бесплатных паскалей
Руководство программиста
_____________________________________________________________________
Руководство программиста для Free Pascal, версия 3.0.4
Версия документа 3.0.4
Сентябрь 2017
Михал Ван Каннейт
____________________________________________________________________________
Содержание
Список таблиц
Об этом документе
1 Директивы компилятора
1. 1 Введение
1.2 Локальные директивы
1.2.1 $A или $ALIGN: выравнивание данных
1.2.2 $A1, $A2, $A4 и $A8
1.2.3 $ASMMODE : режим ассемблера (только Intel 80×86)
1.2.4 $B или $BOOLEVAL : завершение логической оценки
1.2.5 $C или $ASSERTIONS : поддержка утверждений
1.2.6 $BITPACKING : включить битовую упаковку
1.2.7 $CALLING : укажите соглашение о вызовах
1.2.8 $CHECKPOINTER : проверить значения указателя
1.2.9 $CODEALIGN : Установите выравнивание кода
1.2.10 $COPERATORS : разрешить C-подобные операторы
1.2.11 $DEFINE или $DEFINEC : определение символа
1.2.12 $ELSE : Переключить условную компиляцию
1.2.13 $ELSEC : переключить условную компиляцию
1.2.14 $ELSEIF или $ELIFC: переключение условной компиляции
1.2.15 $ENDC : завершение условной компиляции
1.2.16 $ENDIF : завершение условной компиляции
1.2.17 $ERROR или $ERRORC : Создать сообщение об ошибке
1. 2.18 $ENDREGION: конец сворачиваемой области
1.2.19 $EXTENDEDSYM: игнорируется
1.2.20 $EXTERNALSYM: игнорируется
1.2.21 $F : дальние или ближние функции
1.2.22 $FATAL : Создать сообщение о фатальной ошибке
1.2.23 $FPUTYPE : выберите тип сопроцессора
1.2.24 $GOTO: поддержка перехода и метки
1.2.25 $H или $LONGSTRINGS: используйте AnsiStrings
1.2.26 $HINT : Создать подсказку
1.2.27 $HINTS : Выдавать подсказки
1.2.28 $HPPEMIT: игнорируется
1.2.29 $IF : Начать условную компиляцию
1.2.30 $IFC : Начать условную компиляцию
1.2.31 $IFDEF Name : Начать условную компиляцию
1.2.32 $IFNDEF : Начать условную компиляцию
1.2.33 $IFOPT : Начать условную компиляцию
1.2.34 $IMPLICITEXCEPTIONS : Генерация кода неявной финализации
1. 2.35 $INFO : создание информационного сообщения
1.2.36 $INLINE : разрешить встроенный код.
1.2.37 $INTERFACES : укажите тип интерфейса.
1.2.38 $I или $IOCHECKS : проверка ввода/вывода
1.2.39 $IEEEERRORS : включить проверку ошибок IEEE для констант.
1.2.40 $I или $INCLUDE : включить файл
1.2.41 $I или $INCLUDE : включить информацию о компиляторе
1.2.42 $J или $WRITEABLECONST : разрешить присваивание типизированным константам.
1.2.43 $L или $LINK : ссылка на объектный файл
1.2.44 $LIBEXPORT : игнорируется
1.2.45 $LINKFRAMEWORK : ссылка на фреймворк
1.2.46 $LINKLIB : ссылка на библиотеку
1.2.47 $M или $TYPEINFO : создание информации о типе
1.2.48 $MACRO : разрешить использование макросов.
1.2.49 $MAXFPUREGISTERS : Максимальное количество регистров FPU для переменных
1.2.50 $MESSAGE : Создать пользовательское сообщение
1.2.51 $MINENUMSIZE : указать минимальный размер перечисления
1. 2.52 $MINFPCONSTPREC : указать точность константы с плавающей запятой.
1.2.53 $MMX : поддержка Intel MMX (только Intel 80×86)
1.2.54 $NODEFINE : игнорируется
1.2.55 $NOTE : создать заметку
1.2.56 $NOTES : создание заметок
1.2.57 $OBJECTCHECKS : Проверить объект
1.2.58 $ОПТИМИЗАЦИЯ: включить оптимизацию
1.2.59 $PACKENUM или $Z : минимальный размер типа перечисления
1.2.60 $PACKRECORDS : Выравнивание элементов записи
1.2.61 $PACKSET : укажите размер набора
1.2.62 $POP : восстановить настройки компилятора
1.2.63 $PUSH : сохранить настройки компилятора
1.2.64 $Q или $OV или $OVERFLOWCHECKS: проверка переполнения
1.2.65 $R или $RANGECHECKS : проверка диапазона
1.2.66 $REGION : Отметить начало сворачиваемой области.
1. 2.67 $R или $RESOURCE : включить ресурс
1.2.68 $SATURATION : операции насыщения (только Intel 80×86)
1.2.69 $SAFEFPUEXCEPTIONS Ожидание при сохранении значений FPU на Intel x86
1.2.70 $SCOPEDENUMS Управление использованием типов перечисления с областью действия
1.2.71 $SETC : определить и присвоить значение символу
1.2.72 $STATIC : Разрешить использование ключевого слова Static.
1.2.73 $STOP : Создать сообщение о фатальной ошибке
1.2.74 $STRINGCHECKS : игнорируется
1.2.75 $T или $TYPEDADDRESS : оператор введенного адреса (@)
1.2.76 $UNDEF или $UNDEFC: отменить определение символа
1.2.77 $V или $VARSTRINGCHECKS : проверка строки Var
1.2.78 $W или $STACKFRAMES : создание кадров стека
1.2.79 $WAIT : дождитесь нажатия клавиши ввода
1.2.80 $WARN : управление выводом предупреждений
1.2.81 $WARNING : создание предупреждающего сообщения.
1.2.82 $WARNINGS : выдавать предупреждения
1. 2.83 $Z1, $Z2 и $Z4
1.3 Глобальные директивы
1.3.1 $APPID : укажите идентификатор приложения.
1.3.2 $APPNAME : укажите имя приложения.
1.3.3 $APPTYPE : укажите тип приложения.
1.3.4 $CODEPAGE : Установите исходную кодовую страницу
1.3.5 $COPYRIGHT указать информацию об авторских правах
1.3.6 $D или $DEBUGINFO : символы отладки
1.3.7 $DESCRIPTION : описание приложения.
1.3.8 $E : Эмуляция сопроцессора
1.3.9 $EXTENSION : Расширение сгенерированного двоичного файла.
1.3.10 $FRAMEWORKPATH : укажите путь к платформе.
1.3.11 $G : Создать код 80286
1.3.12 $IMAGEBASE : укажите базовое расположение образа DLL.
1.3.13 $INCLUDEPATH : укажите путь включения.
1.3.14 $L или $LOCALSYMBOLS : информация о локальном символе
1.3.15 $LIBPREFIX : укажите префикс имени файла библиотеки.
1.3.16 $LIBRARYPATH : укажите путь к библиотеке.
1.3.17 $LIBSUFFIX : установите суффикс библиотеки
1. 3.18 $MAXSTACKSIZE : Установить максимальный размер стека
1.3.19 $M или $MEMORY : объем памяти
1.3.20 $MINSTACKSIZE : Установить минимальный размер стека
1.3.21 $MODE : Установить режим совместимости компилятора
1.3.22 $MODESWITCH : выберите функции режима
1.3.23 $N : Числовая обработка
1.3.24 $O : Оптимизация уровня 2
1.3.25 $OBJECTPATH : укажите путь к объекту.
1.3.26 $P или $OPENSTRINGS: использовать открытые строки
1.3.27 $PASCALMAINNAME : Установить имя точки входа
1.3.28 $PIC : Генерировать код PIC или нет
1.3.29 $POINTERMATH : разрешить использование математических операций с указателями.
1.3.30 $PROFILE : Профилирование
1.3.31 $S : проверка стека
1.3.32 $SCREENNAME : укажите отображаемое имя
1. 3.33 $SETPEFLAGS : указать флаги исполняемого файла PE
1.3.34 $SMARTLINK: использовать смартлинки
1.3.35 $SYSCALLS: выберите соглашение о системных вызовах на Amiga/MorphOS.
1.3.36 $THREADNAME : Установить имя потока в Netware
1.3.37 $UNITPATH : укажите путь к единице.
1.3.38 $VARPROPSETTER : разрешить использование переменных/выходных/константных параметров для установщиков свойств.
1.3.39 $VERSION : укажите версию DLL.
1.3.40 $WEAKPACKAGEUNIT : игнорируется
1.3.41 $X или $EXTENDEDSYNTAX : расширенный синтаксис
1.3.42 $Y или $REFERENCEINFO : вставка информации о браузере
2 Использование условных выражений, сообщений и макросов
2.1 Условия
2.1.1 Предопределенные символы
2.2 Макросы
2.3 Переменные времени компиляции
2.4 Выражения времени компиляции
2.4.1 Определение
2.4.2 Использование
2.5 Сообщения
3 Использование языка ассемблера
3. 1 Использование ассемблера в исходниках
3.2 Встроенный ассемблер Intel 80×86
3.2.1 Синтаксис Intel
3.2.2 Синтаксис AT&T
3.3 Встроенный ассемблер Motorola 680×0
3.4 Сигнализация измененных регистров
4 Сгенерированный код
4.1 Единицы
4.2 Программы
5 Поддержка Intel MMX
5.1 О чем это?
5.2 Поддержка насыщения
5.3 Ограничения поддержки MMX
5.4 Поддерживаемые операции MMX
5.5 Оптимизация поддержки MMX
6 Проблемы с кодом
6.1 Условные обозначения регистров
6.1.1 накопительный регистр
6.1.2 аккумулятор 64-битный регистр
6.1.3 регистр результатов с плавающей запятой
6.1.4 самостоятельная регистрация
6.1.5 регистр указателя кадра
6.1.6 регистр указателя стека
6.1.7 временные регистры
6. 1.8 Сопоставление регистров процессора
6.2 Изменение имени
6.2.1 Искаженные имена для блоков данных
6.2.2 Искаженные имена кодовых блоков
6.2.3 Изменение искаженных имен
6.3 Механизм вызова
6.4 Вложенные процедуры и функции
6.5 Вызовы конструктора и деструктора
6.5.1 объекты
6.5.2 классы
6.6 Код входа и выхода
6.6.1 Пролог/эпилог стандартной процедуры Intel 80×86
6.6.2 Motorola 680×0 стандартная процедура, пролог / эпилог
6.7 Передача параметров
6.7.1 Выравнивание параметров
6.8 Ограничения стека
7 Проблемы со связыванием
7.1 Использование внешнего кода и переменных
7.1.1 Объявление внешних функций или процедур
7.1.2 Объявление внешних переменных
7.1.3 Объявление модификатора соглашения о вызовах
7.1.4 Объявление кода внешнего объекта
7.2 Создание библиотек
7.2.1 Экспорт функций
7.2.2 Экспорт переменных
7. 2.3 Компиляция библиотек
7.2.4 Стратегия поиска объекта
7.3 Использование смарт-ссылки
8 Проблемы с памятью
8.1 Модель памяти.
8.2 Форматы данных
8.2.1 Целочисленные типы
8.2.2 Типы символов
8.2.3 Логические типы
8.2.4 Типы перечисления
8.2.5 Типы с плавающей запятой
8.2.6 Типы указателей
8.2.7 Строковые типы
8.2.8 Типы наборов
8.2.9 Типы статических массивов
8.2.10 Типы динамических массивов
8.2.11 Типы записей
8.2.12 Типы объектов
8.2.13 Типы классов
8.2.14 Типы файлов
8.2.15 Процедурные типы
8.3 Выравнивание данных
8.3.1 Типизированные константы и выравнивание переменных
8.3.2 Выравнивание структурированных типов
8.4 Куча
8.4.1 Стратегия распределения кучи
8. 4.2 Куча растет
8.4.3 Отладка кучи
8.4.4 Написание собственного диспетчера памяти
8.5 Использование памяти dos под расширителем Go32
8.6 При переносе кода Turbo Pascal
8.7 Memavail и Maxavail
9 Строки ресурсов
9.1 Введение
9.2 Файл строки ресурсов
9.3 Обновление таблиц строк
9.4 GNU gettext
9.5 Предостережение
10 Программирование резьбы
10.1 Введение
10.2 Потоки программирования
10.3 Критические секции
10.4 Диспетчер потоков
11 оптимизаций
11.1 Не зависит от процессора
11.1.1 Сворачивание констант
11.1.2 Слияние констант
11.1.3 Оценка быстрого доступа
11.1.4 Встраивание набора констант
11.1.5 Малые наборы
11.1.6 Проверка диапазона
11.1.7 И вместо модуля
11. 1.8 Сдвиг вместо умножения или деления
11.1.9 Автоматическое выравнивание
11.1.10 Умное связывание
11.1.11 Встроенные подпрограммы
11.1.12 Отсутствие кадра стека
11.1.13 Зарегистрировать переменные
11.2 Зависит от процессора
11.2.1 Специально для Intel 80×86
11.2.2 Специально для Motorola 680×0
11.3 Переключатели оптимизации
11.4 Советы по ускорению написания кода
11.5 Советы по уменьшению размера кода
11.6 Оптимизация всей программы
11.6.1 Обзор
11.7 Общие принципы
11.7.1 Как использовать
11.7.2 Доступные оптимизации WPO
11.7.3 формат файла WPO
12 Программирование разделяемых библиотек
12.1 Введение
12.2 Создание библиотеки
12.3 Использование библиотеки в программе на Паскале
12.4 Использование библиотеки Pascal из программы C
12.5 Некоторые проблемы с Windows
13 Использование ресурсов Windows
13. 1 Директива ресурсов $R
13.2 Создание ресурсов
13.3 Использование строковых таблиц.
13.4 Вставка информации о версии
13.5 Вставка значка приложения
13.6 Использование препроцессора Pascal
Анатомия единичного файла
A.1 Основы
A.2 чтение ppu-файлов
A.3 Заголовок
A.4 Разделы
A.5 Создание ppu-файлов
B Древовидная структура исходного кода компилятора и RTL
B.1 Исходное дерево компилятора
B.2 Исходное дерево RTL
C Ограничения компилятора
D Режимы компиляции
D.1 Режим FPC
D.2 Режим TP
D.3 Режим Delphi
D.4 Режим OBJFPC
D.5 Режим MACPAS
D.6 Режим ISO
E Использование fpcmake
E.1 Введение
E.2 Функциональность
E.3 Использование
E.4 Формат файла конфигурации
E. 4.1 чистый
Компилятор E.4.2
E.4.3 По умолчанию
E.4.4 Расстояние
E.4.5 Установка
E.4.6 Пакет
E.4.7 Предварительные правила
E.4.8 Требуется
E.4.9 Правила
E.4.10 Цель
E.5 Программы, необходимые для использования сгенерированного make-файла
E.6 Переменные, влияющие на сгенерированный make-файл
E.6.1 Переменные каталога
E.6.2 Переменные командной строки компилятора
E.7 Переменные, установленные fpcmake
E.7.1 Переменные каталога
E.7.2 Целевые переменные
E.7.3 Переменные командной строки компилятора
E.7.4 Имена программ
E.7.5 Расширения файлов
E.7.6 Целевые файлы
E.8 Правила и цели, созданные fpcmake
E.8.1 Правила шаблона
E.8.2 Правила сборки
E.