Задачи паскаль: Простые задачи по программированию | Язык Паскаль

Содержание

Задачи на тему ввода и вывода данных в Pascal

«Программы без ошибок можно написать
двумя способами, но работает — третий»
Алан Джей Перлис

Примечание. Все входные и выходные данные в заданиях этой группы являются вещественными числами.

Задание №1

Дана сторона квадрата A. Найти его периметр P = 4 × A

Смотреть ответ

Задание №2

Дана сторона квадрата A. Найти его площадь S = A2

Смотреть ответ

Задание №3

Даны стороны прямоугольника A и B. Найти его площадь S = A × B и периметр P = 2 × (A + B)

Смотреть ответ

Задание №4

Дан диаметр окружности D. Найти ее длину L = π × D. В качестве значения π использовать 3.14

Смотреть ответ

Задание №5

Дана длина ребра куба A. Найти объем куба V = A3 и площадь его поверхности S = 6 × A2

Смотреть ответ

Задание №6

Даны длины ребер A, B, C прямоугольного параллелепипеда. Найти его объем V = A × B × C и площадь поверхности S = 2 × (A × B + B × C + A × C)

Смотреть ответ

Задание №7

Найти длину окружности L и площадь круга S заданного радиуса R:

L = 2 × π × R,
S = π × R2
.

В качестве значения π использовать 3.14

Смотреть ответ

Задание №8

Даны два числа A и B. Найти их среднее арифметическое: (A + B) ⁄ 2

Смотреть ответ

Задание №9

Даны два неотрицательных числа A и B. Найти их среднее геометрическое, то есть квадратный корень из их произведения:

√A × B

Смотреть ответ

Задание №10

Даны два ненулевых числа. Найти сумму, разность, произведение и частное их квадратов.

Смотреть ответ

Задание №20

Найти расстояние между двумя точками с заданными координатами (X1, Y1) и (X2, Y2) на плоскости. Расстояние вычисляется по формуле:

√(X2−X1)2 + (Y2−Y1)2

Смотреть ответ

Задание №40

Найти решение системы линейных уравнений вида

A1×X + B1×Y = C1,
 A2×X + B2×Y = C2,

заданной своими коэффициентами A1, B1, C1, A2, B2, C2, если известно, что данная система имеет единственное решение. Воспользоваться формулами:

X = (C1×B2 − C2×B1) ⁄ D,
 Y = (A1×C2 − A2×C1) ⁄ D,

где D = A1×B2 − A2×B1

Смотреть ответ

ПРАКТИЧЕСКАЯ РАБОТА №14 – Научиться использовать записи для решения задач на Паскал

ПРАКТИЧЕСКАЯ РАБОТА №14

Тема: Применение записей для решения задач на Паскале.

ЦЕЛЬ: Научиться использовать записи для решения задач на Паскале.

ОБЩИЕ СВЕДЕНИЯ

Запись (record) — это структура (тип данных), которая предназначена для сохранения в оперативной памяти компьютера сложных данных, состоящие из отдельных компонентов различных типов.Отдельные компоненты записей называются полями. В программе записи описывают в разделе type или в разделе var с помощью такой конструкции:

<Имя записи> = гесогd

<Имя поля 1>: <тип поля 1>;

<Имя поля n>: <тип поля n>; end;

Для доступа к конкретному поля записи необходимо использовать составное имя такой конструкции:

<Имя записи>. <Имя поля> Пример 1

Пусть необходимо создать структуру, которая включает в себя информацию об анкетных данных студентов. для

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

type

grouppa = record {Описываем тип записи gruppa} name, surname : String [20]; {Описываем поля записи} birthday: record

year 1975 . . 1985;

month: 1..12;

day: 1..31;

end;

Переменные типа gruppa

описывают в разделе var так: Student1, student2: gruppa.

В программе этим переменным можно присвоить, например, следующие значения: Student1.surname = ‘Игорь’;

student2.birtday.month = 5.

Сложенными именами записей при написании программ пользоваться неудобно. Они приводят к громоздким выражений. Для упрощения таких выражений удобно пользоваться командой присоединения with.

Читать ПРАКТИЧЕСКАЯ РАБОТА № 6 – Использование кнопок и их свойства

Команда присоединения дает возможность записывать в программе только имена полей. Общий вид конструкции с использованием команды

with таков:

with <имя переменной типа запись> do <команда>;

После служебного слова with нужно указать имя переменной типа запись, в самой команде использовать только имена полей соответствующей записи.

К переменной из предыдущего примера можно обратиться так:

Пример 2. Работа с записями

Составить программу для учета и обработки данных о наличии на складе автомашин. Также нужно вывести на экран информацию о модели и года выпуска автомашин, цена которых меньше, чем 3000 усл. Ед.

Пусть запись содержит следующие поля:

модель (marka), год выпуска (year)

и цена автомобиля (price), а сами записи (в количестве 10) хранятся в массиве a1

ЗАДАЧИ ДЛЯ ВЫПОЛНЕНИЯ

задание 1

Сессия. В массиве содержится информация о результатах зимней сессии студентов первого и второго курсов специальности «Разработка программного обеспечения». Данные о каждом студенте (максимальное количество студентов 100) таковы: фамилия (до 18 символов), имя (до 10 символов), возраст, пол, код группы (5 символов), оценки по предметам (информатика, высшая математика, украинский язык программирование, офисное пО, а также оценка за курсовую работу) и общий средний балл. Написать программу, которая позволяет вводить эту информацию, определять средний балл каждого студента и отображать на экране данные по своему варианта:

варианты заданий

1. Фамилии студентов, имеющих задолженности хотя бы по одному предмета.

Читать ПРАКТИЧЕСКАЯ РАБОТА №11 – получение практических навыков по работе с массивами

2. Процент студентов, сдали все экзамены на «5» и «4».

3. Название предмета (дисциплины), который был составлен всеми студентами лучше на первом курсе.

4. Название предмета (дисциплины), из которого на втором курсе было получено всего оценок, ниже чем средний балл для данного курса.

5. Средние баллы по каждому предмету для студентов первого курса.

6. Сравнить средний балл по математике у студентов первого курса со средним баллом по математике у студентов второго курса и вывести результат сравнения.

7. Название группы, в которой наибольший процент ребят.

8. Самые распространенные мужские и женские имена.

9. Количество юношей на первом курсе и их средний возраст.

10. Средний балл студенток на первом и на втором курсах.

11. фамилии первых 10 студентов обоих курсов, которые имеют наибольший средний балл.

12. Фамилии студенток, имена которых наиболее распространены отдельно на первом и втором курсах.

13. фамилии студентов и студенток каждой группы, имена которых наиболее распространены в данной группе.

14. Количество студентов второго курса, возраст которых не превышает средний возраст студенток второго курса.

15. Количество студентов в каждой группе, которые имеют средний балл за сессию не менее, чем общий средний балл.

Контрольные вопросы

1. Или верно, что тип данных «Запись» принадлежит к структурированных типов данных?

2. Дайте определение поля записи.

Читать Лабораторная работа №2 – ознакомиться с интегрированной средой программирования ABC Рascal

3. Верно ли, что поля записи должны быть одного и того же типа?

4. Как делается ссылка на компоненты записи?

5. Может компонент записи быть замечен более чем одним именем?

6. Может массив быть полем записи?

7. Дайте определение составленного имени.Из каких частей оно состоит и как записывается?

8. Чем запись отличается от массива?

9. Оператор используют для упрощения доступа к полям записи?

10. Верно ли, что все поля записи должны быть разных типов?

Домашнее задание

задание 1

Заполните программу об вкладчиков банка: фамилия, сумма вклада, срок, дата начала вклада. Сначала выполните в самой программе инициализацию 10-ти таких записей.

Далее создайте код, необходимый для организации поиска информации по запросу пользователя:

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

Список рекомендуемой литературы

1. Архангельский А.Я. Delphi 5. Справочное пособие. — М .: «БИНОМ», 2001. — С. 138-141.

2. Кандзюба С.П. Громов В.Н. Delphi 6. базы данных и приложения. — К .: «Диасофт», 2001. — С. 114-118.

3. Немнюгин С.А. Turbo-Pascal: практикум. — СПб .: Питер, 2001. — С. 95-99.

Читать Практическая работа №15 – Программирование создания простых изображений

4. Немнюгин С.А. Turbo-Pascal: Учебник. — СПб .: Питер, 2001. — С. 116-123.

5. Текстейра С., Пачеко К. Delphi 5. Руководство разработчика. Т. 1.Основные методы и технологии программирования. — М .: «Вильямс», 2001. — С. 90-92.

6. Федоренко Ю. Алгоритмы и программы на Turbo Pascal Учебный курс. — СПб .: Питер, 2001. — С. 174-183.

[Всего голосов: 5    Средний: 4.6/5]


Related Articles
Лабораторная работа №1 Паскаль – Составление и отладка линейных программ

updated: Ноябрь 16, 2018

Лабораторная РАБОТА – Организация работы с файлами в среде Delphi, Работа с текстовыми файлами

updated: Ноябрь 17, 2018

Создание программы «Справочник по географии»

updated: Ноябрь 17, 2018

Практическая работа №10 «Программирование циклических вычислений»

updated: Ноябрь 17, 2018

Практическая работа №22 – Создание простейшей базы данных

updated: Ноябрь 13, 2018



« ПРАКТИЧЕСКАЯ РАБОТА №11 – получение практических навыков по работе с массивами

Использование подпрограмм Паскаль – Процедуры и функции »

бесплатных паскалей Руководство программиста

_____________________________________________________________________
Руководство программиста для Free Pascal, версия 3. 2.2
Версия документа 3.2.2

Май 2021

Михал Ван Каннейт


____________________________________________________________________________

Содержание
Список таблиц
 Об этом документе
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 $S : проверка стека
  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 $SCREENNAME : укажите отображаемое имя
  1.3.32 $SETPEFLAGS : указать исполняемые флаги PE
  1.3.33 $SMARTLINK : использовать интеллектуальные ссылки
  1.3.34 $SYSCALLS: выберите соглашение о системных вызовах на Amiga/MorphOS.
  1.3.35 $THREADNAME : Установить имя потока в Netware
  1.3.36 $UNITPATH ​​: укажите путь к единице.
  1.3.37 $VARPROPSETTER : разрешить использование параметров var/out/constref для установщиков свойств.
  1.3.38 $VERSION : укажите версию DLL.
  1.3.39 $WEAKPACKAGEUNIT : игнорируется
  1.3.40 $X или $EXTENDEDSYNTAX : расширенный синтаксис
  1.3.41 $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 x 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 Режим DelphiUnicode
 D.5 Режим OBJFPC
 D.6 Режим MACPAS
 D.7 Режим ISO
 D.8 Расширенный режим Pascal
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.8.3 Правила очистки
  E.8.4 Правила архивирования
  E.8.5 Правила установки
  E.8.6 Информативные правила
F Компиляция компилятора
 F.1 Введение
 F.2 Перед запуском
 F.3 Компиляция с использованием make
  F.3.1 Базовая компиляция
  F.3.2 Компиляция для другой цели
  F.3.3 Установка нового компилятора
  F.3.4 Ускорение компиляции
  F.3.5 Добавление отладочной информации
  F.3.6 Различные другие варианты
 F.4 Сборка вручную
  F.4.1 Компиляция RTL
  F.4.2 Компиляция компилятора
Компилятор G определяет во время компиляции

Free Pascal в коде Visual Studio | Стефан Бестер

Отладка Pascal в VS Code

Эта статья посвящена настройке вещей, чтобы вы могли кодировать, компилировать и отлаживать Free Pascal из Visual Studio Code.

Это может быть полезно, если вы выполняете работу без графического интерфейса и не хотите полагаться на полноценную среду разработки Lazarus. Это также позволяет пользователям Windows писать и тестировать программы Linux с помощью WSL, что я и сделал для тестирования этой установки. Обратите внимание, что аналогичные шаги можно использовать для настройки VS Code для Pascal на Mac, если это ваш яд. По крайней мере, это еще один инструмент в вашем распоряжении при работе с устаревшей кодовой базой.

Особое внимание уделяется мистеру Би из группы Паскаль Индонезия, чья статья легла в основу моей.

Windows

В Windows вы можете загрузить и установить Free Pascal непосредственно с веб-сайта. Обратите внимание, что для последней версии нет встроенного 64-разрядного компилятора Windows — вам потребуется собственный 32-разрядный компилятор, а также 64-разрядный кросс-компилятор. Исходник можно скачать по отдельной ссылке.

Linux

В моем случае я установил Free Pascal с Lazarus, запустив apt-get install lazarus на моем Ubuntu WSL. Это помещает исходный код под /usr/share/fpcsrc/3.0.4 и мой файл lazbuild под /usr/bin . Чтобы установить более новую версию Free Pascal, я позже выполнил шаги в вики и загрузил файлы laz и src .deb, предоставленные Lazarus (их я установил напрямую, используя apt install ).

Бонус: установка WSL

Это немного в стороне, но если вы хотите запустить Ubuntu так, как это сделал я, эта статья Microsoft довольно хорошо объясняет шаги по активации WSL. я использовал Этапы ручной установки , потому что я не хотел присоединяться к программе предварительной оценки Windows.

После включения WSL вы можете установить подсистему Linux, например. Ubuntu из Магазина Microsoft. Вы можете проверить, какие дистрибутивы WSL установлены, запустив wsl.exe -l -v в PowerShell.

Если вы устанавливаете расширение Remote-WSL для VS Code, вы можете запустить редактор прямо из консоли Linux, набрав:

 code .  

При первом выполнении будет установлен VS Code Server. После этого он запустит VS Code в контексте вашей подсистемы Linux.

OmniPascal

Это расширение VS Code обеспечивает поддержку Object Pascal для VS Code, включая завершение кода, структурирование и т. д.

OmniPascal — Open Preview — Visual Studio Marketplace

Управляйте своим кодом Delphi и Free Pascal с помощью Visual Studio Code.

marketplace.visualstudio.com

Если вы собираетесь использовать это с расширением Remote — WSL, не забудьте также установить расширение в WSL, например. щелкнув ссылку «Установить в WSL: Ubuntu».

Нажмите «Установить в WSL: Ubuntu».

После установки расширения перейдите в «Файл» → «Настройки» → «Настройки» и найдите раздел «Конфигурация OmniPascal» в разделе «Расширения». Для Free Pascal Source Path введите путь к папке, содержащей исходный код Free Pascal, например

 /usr/share/fpcsrc/3.0.4 

Вы также можете установить Lazbuild Path для сборки проектов Lazarus (файлы *. lpi). Обратите внимание, что это расширение позволяет указать текущий активный проект в строке состояния:

OmniPascal в строке состояния VS Code

Native Debug

Это расширение VS Code позволяет выполнять встроенную отладку. Он поддерживает как отладчик GNU (GDB), так и LLDB. В этой статье я буду использовать GDB.

Собственная отладка — Visual Studio Marketplace

Собственный отладчик VSCode. Поддерживает как GDB, так и LLDB. Нажмите ctrl-p (cmd+p в OS X) и запустите ext install webfreak.debug в…

marketplace.visualstudio.com

VSCode Great Icons

В отличие от других расширений, которые я перечислил, это не является конкретным на Паскаль и не является строго обязательным. Тем не менее, он помогает отличить файлы Pascal от файлов других типов и включает в себя вклад самого г-на Би.

Отличные значки VSCode — Visual Studio Marketplace

Большой набор значков (более 100) для ваших файлов. (!! Это изображение не является исчерпывающим и не обновлено !!) Наслаждайтесь ☺ После…

marketplace. visualstudio.com

Ниже приведен пример расширения в действии:

VSCode Great Icons в действии

Создать tasks

Чтобы выполнять такие действия, как проверка синтаксиса, сборка или очистка с помощью VS Code, необходимо настроить ряд задач. У меня не было настроенных задач, поэтому я создал новый файл tasks.json, перейдя на Terminal → Configure Tasks… и выбрав «Создать файл tasks.json из шаблона» (который создал tasks.json в папке .vscode ).

Подсказка: Рассмотрите возможность использования пользовательских задач; в противном случае вам придется вручную скопировать эти пользовательские задачи в папку .vscode каждого из ваших проектов Pascal.

Получите полную конфигурацию задачи, перейдя по ссылке

Для написания этих задач требуется понимание того, как использовать компилятор Free Pascal. Я использовал задачи от Mr Bee на GitHub, но сильно их урезал (например, удалил переопределения различных глобальных настроек и избавился от вещей Jedi Code Formatter). Мне также пришлось изменить параметры генерации отладочной информации для поддержки GDB. См. эту вики-страницу для получения дополнительной информации.

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

Замечания по использованию

Рекомендуется запустить задачу fpc: создание папок сборки один раз перед запуском любых других задач сборки, поскольку при этом создаются каталоги для различных артефактов сборки. Если этих каталогов не существует, другие задачи не будут выполнены.

Отладчик настроен в файле launch.json вашего проекта.

Вы можете добавить его, выбрав «Выполнить» → «Добавить конфигурацию…», , который создает файл launch.json в вашей папке .vscode. Поскольку вы ранее установили расширение Native Debug, вы можете выбрать «GDB» из списка, и будет создана конфигурация по умолчанию.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *