Урок 2. Ваша первая программа

В предыдущем уроке рассказывалось об основных инструментах разработки программ в среде Lazarus, этапах создания приложения.

В этом уроке мы создадим свою первую программу, познакомимся с редактором исходного кода, узнаем как компилировать и выполнять программу.

Наша программа будет взаимодействовать с пользователем, Вы сможете поэкспериментировать с нею. Не бойтесь экспериментировать, Вы не сможете сделать что-либо непоправимое. И в то же время истинные и прочные навыки эффективной работы достигаются только путем самостоятельного экспериментирования.

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

После того, как компонент размещен на форме, он становиться объектом, который имеет свои установленные по умолчанию свойства. Эти свойства можно просматривать и изменять с помощью окна Свойства.

В нашей первой программе при создании интерфейса пользователя будем использовать три компонента: TForm (Форма), Label (Надпись) и TButton (Командная кнопка).

Так как мы будем использовать их впервые, давайте познакомимся с ними подробнее. Нам нужно знать основные свойства этих компонентов и их назначение, чтобы можно было их настраивать. Описание свойств этих компонентов можно посмотреть перейдя по ссылкам: Forma (Форма), Label (Надпись), Button (Кнопка). С остальными компонентами графического интерфейса будем знакомиться по мере их использования.

Теперь, когда вы изучили новые компоненты, мы загрузим среду программирования и создадим свой первый проект

Проект «Первая программа»

Задание. Создать проект, который после щелчка на кнопке выводит в поле надписи текст: «Я программирую. »

Создать интерфейс программы по образцу:

Первая программа

Разместить надпись и кнопку на форме и установите значения свойств, перечисленные в таблице. Когда вы это сделаете, форма примет такой вид , как на рисунке.

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

Ход выполнения проекта

Lazarus. Создание проекта

    1. Загрузите Lazarus. Создайте новый проект. Для этого:1) Выполнить команду Проект => Создать проект …2)В появившемся диалоговом окне выбрать слово Приложение и нажать кнопку ОК.

    Lazarus. Создание папки для файлов проекта

    2) Не выходя из этого диалогового окна Создать новую папку Primer_1 для файлов вашего проекта (проект будет содержать несколько файлов), открыть ее и щелкнуть по кнопке Сохранить.

    Тем самым мы сохраним файл Project1, содержащий сведения о проекте.

    Сразу же откроется окно Сохранить Unit1 для сохранения программного кода проекта (файл Unit1.pas), в котором также необходимо щелкнуть по кнопке Сохранить.

    Кроме этих двух файлов в папке проекта создается автоматически еще несколько файлов, в том числе – unit. lfm, который представляет собой файл с полными данными о проектировщике формы. Позиция, размер, расположенные компоненты и пр.

    Папка проекта должна содержать следующие файлы:

    Компонент

    Свойство

    Значение

    Форма примет такой вид, как на рисунке:

    Lazarus. Обработчик события щелчок на кнопке

    Сейчас процедура обработчика события пустая, при нажатии кнопки она ничего не делает.

    2) Чтобы процедура выполнила необходимые действия, напишите соответствующий код между операторными скобками begin и end. В нашем случае это оператор присваивания, который изменяет свойство Сaption (текст надписи) объекта Label1 на новое значение:

    Вводя код, обратите внимание на подсказку, появившуюся после ввода точки, следующей за label1. Подсказка представляет собой всплывающее меню, в котором перечислены допустимые свойства и методы компонента label1

    Lazarus. Система подсказки кода

    С помощью мыши вы можете выбрать из списка нужное свойство или метод.

    Lazarus. Первая программа. Протокол компиляции

    Далее этот файл, в случае успешного создания, запускается на выполнение.

    В предыдущем задании новые значения свойств для компонентов, размещенных на форме, были перечислены в таблице.

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

    Задания для самостоятельного выполнения

    Задание 3.Создайте приложение, разместите на форме компоненты: Buton1, Edit1 так как показано на образце.

    Lazarus. Практическая работа №3

    По щелчку на кнопке нужно заменить текст в заголовке окна на текст введенный пользователем в текстовое поле.

    Задание 4. Создайте приложение, в результате работы которого при щелчке на кнопке привет в поле надписи выводится приветствие, при щелчке на кнопке Очистить сообщение исчезает.

    Lazarus. Практическая работа №4

    Задание 5. Создайте приложение, в результате работы которого в поле надписи Label 1 выводится выводиться одно из сообщений, в зависимости от того, на какой кнопке пользователь щелкнул мышью.

    Lazarus. Практическая работа №5

    Наименование кнопки Отображаемый текст в надписи label1
    Форма Заготовка главного окна разрабатываемого приложения
    Инспектор объектов Окно, предназначенное для редактирования свойств объектов
    Unit1.pas Файл с программным кодом
    Проект Группа файлов, относящихся к данному приложению

    Для объектов на форме установите следующие значения свойств:

    Компонент Свойство Значение
    Label1 Caption Здесь будет выведено сообщение
    WordWrap True
    Form1 BorderIcons
    biMinimize
    biMaximize
    False
    False

    В этом уроке мы создали свою первую программу в среде Lazarus.

    В следующем уроке мы продолжим знакомится с компонентами Lazarus, создадим еще несколько новых проектов.

    external sigfpe lazarus что за ошибка

    В POSIX-системах, SIGFPE — сигнал, посылаемый процессу, при попытке выполнения ошибочной арифметической операции.

    SIGFPE — целочисленная константа, определённая в заголовочном файле signal. h . Символьные имена сигналов используются вместо номеров, так как в разных реализациях номера сигналов могут различаться.

    Этимология [ править | править код ]

    SIG — общий префикс, сигналов, FPE — аббревиатура англ. floating-point exception — исключение в операции с плавающей запятой. На самом деле, SIGFPE используется и для целочисленной арифметики, название же сохраняется для обеспечения обратной совместимости кода.

    Использование [ править | править код ]

    SIGFPE может быть послан процессу по ряду причин. Самая распространенная из них — переполнение типа данных в результате неожиданно больших (или малых) значений входных данных и/или ошибки дизайна программы.

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

    При делении SIGFPE вызывает не только равный нулю делитель — на некоторых платформах (включая x86), целое деление INT_MIN, самого малого (отрицательного) целого числа, на (−1) не может быть выполнено, поскольку положительное число с этим модулем непредставимо (при INT_MIN = (−2147483648), INT_MAX = 2147483647).

    У меня возникла проблема в моем проекте Lazarus: каждый раз, когда я хочу использовать функцию, она выдает указанную выше ошибку ( External: SIGSEGV ). Я не знаю, что это значит, но некоторые отладки показали мне, что это код, вызывающий ошибку:

    Исключение происходит после i := я + 1; , Я был бы очень благодарен, если бы вы могли мне помочь!

    2 ответа

    3 Решение kludg [2015-11-28 13:41:00]

    Динамические массивы, такие как TStringArray = array of string; основаны на нуле; ваш код использует его как 1-based и повышает нарушение прав доступа.

    Вы должны заменить i := 1; по i := 0;

    К второй проблеме, это потому, что вы присоединяетесь к индексу i, который в начале — 1, поэтому у вас есть проблема, диапазон массива определяется «длиной — 1», поэтому, если ваша длина равна 1, то ваш диапазон равен 0. Поэтому для решения проблемы в вашем цикле for вы должны поставить Result[i-1] := s; например, вы получаете индекс, который вы действительно хотите.

    procedure TForm1.Button1Click(Sender: TObject);
    var a, b,c:integer;
    begin
    a:=5;
    b:=-7;
    c:=9;

    if (a>0) then
    Label1.caption:=floattostr(sqr(a))
    else
    Label1.caption:=floattostr(Exp(4*Ln(a)));

    if (b>0) then
    Label2.caption:=floattostr(sqr(b))
    else
    Label2.caption:=floattostr(Exp(4*Ln(b)));//50строка

    if (c>0) then
    Label3.caption:=floattostr(sqr(c))
    else
    Label3.caption:=floattostr(Exp(4*Ln(c)));
    end;
    end.

    Источники:

    https://gospodaretsva. com/urok-2-vasha-pervaya-programma. html

    https://window-10.ru/external-sigfpe-lazarus-chto-za-oshibka/

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: