Паскаль программирование для начинающих: Основы программирования | Язык Паскаль

Что такое программирование и язык программирования

Зачем нужно программирование

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

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

Однако запрограммировать компьютер, то есть записать в него алгоритм, вложить программу действий, все равно надо. И сделать это может только человек. Человек разрабатывает последовательность действий для решения задачи и сохраняет их в памяти машины. Сам по себе компьютер ничего не понимает, он просто железо, исполняющее лишь то, что было записано в его память.

Разработка алгоритмов для решения сложных задач — трудоемкий и творческий процесс, который зачастую требует знаний из разных областей (например, математики, программирования и предметной области, для которой создается программа). Однако часто выгоды, получаемые при выполнении алгоритма с помощью компьютера, перекрывают затраты на его разработку.

Что такое компьютерная программа

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

Языки программирования и их история

Так какой же язык понятен компьютеру, в каком виде следует вносить информацию в его память, чтобы он потом делал то, что мы хотим. Компьютер – это электронное вычислительное устройство. Вычислительное! Он работает с числами, складывает, вычитает, сравнивает. Больше ни с чем. Но как же? Ведь мы привыкли обрабатывать на компьютере не только числовую информацию, также текстовую и графическую. Поэтому нам кажется, что компьютер работает не только с числами. Фокус заключается в том, что любую информацию, в том числе текстовую и графическую можно закодировать числами. Все действия компьютер выполняет над числами. И только когда мы обращаемся к данным, эти числа определенным образом декодируются.

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

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

Чуть позже программисты стали замечать, что почти все программирование сводится к вводу и выводу данных, выбору той или иной ветки выполнения программы и повторению одних и тех же действий определенное количество раз. Кроме того, некоторые части программы много раз используются в ней в разных местах. Так пришли к выводу о том, что программа должна представлять собой структуру из обособленных частей. Стало развиваться структурное программирование.

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

Отметим, конкретный язык программирования может поддерживать несколько концепций, или парадигм, программирования. Например, быть структурным и объектно-ориентированным одновременно. Языков множество, парадигм на порядок меньше.

Книги по 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.