HelloWorl

Урок 3. Первая программа в Pascal.

Обычно, изучение любого языка программирования начинается с программы Hello, world! Но мы с вами займемся этим чуть попозже, потому что сейчас я хочу рассказать вам о величинах и типах данных в Pascal.

Виды величин

Обычно, изучение любого языка программирования начинается с программы Hello, world! Но мы с вами займемся этим чуть попозже, потому что сейчас я хочу рассказать вам о величинах и типах данных в Pascal. Что такое величина? Величина — это отдельный информационный объект, хранящийся в памяти компьютера. Существуют две классификации величин. Мы рассмотрим каждую в отдельности.

величины
Более подробно мы поговорим о них в последующих уроках.

В свою очередь числовой делится на два типа.

числовые
Привожу сразу обозначение этого типа в Паскаль

Символьные тоже делятся на два типа.символьные

Вторая классификация величин.величины Константа — значение неизменно. Переменная — значение может меняться в течение работы программы. Переменные обозначаются символическими именами, которые называются идентификаторами. Как присвоить значение какой либо переменной? С помощью команды присваивания! Команда присваивания в Паскаль: < переменная >:= < выражение >

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

Структура программы в Паскаль

Заголовок

Program <  имя переменной >;

Объявление переменных и констант

const <Символическое имя> = <выражение>;
var <Однотипные переменные> : <тип>;

Раздел операторов

Begin
<оператор 1>;
<оператор 2>;

end.

Ввод и вывод в Паскаль

У вас, наверняка, возникает вопрос: «Как вводить значения переменных с клавиатуры?», а также: «Как вывести на экран полученный результат?». Для этого используются четыре специальных оператора:

Для ввода:

  • read(Переменную)
  • readln(Переменную)

И для вывода:

  • write(Текст в  »)
  • writeln(Текст в »)

«В чем разница между read и readln, write и writeln?»: снова озадачитесь вы. Ответ прост. Если добавляете «ln» (что расшифровывается, как  Line), то курсор переносится на следующую строку.

Hello, World на Pascal

Теперь вы готовы написать первую программу.

Program Hello_World; {фигурные кавычки позволяют вставить комментарий к коду}
Begin
Write('Hello, World!');
End.

Ну, тут все понятно. Чтобы разнообразить решение предлагаю решить несколько задачек этого типа.

Задача 1.  Требуется запросить имя пользователя, а затем вывести «Привет, <имя>!» Для решения этой задачи нам потребуется строковой тип данных — string.

Program Hello_boy_girl; {фигурные кавычки позволяют вставить комментарий к коду}
var name: string; {объявляем name -- это новая переменная}
Begin
Write('Введите свое имя: '); {так как мы используем write, курсор будет мигать после двоеточия}
Read(name); {Считываем все, что ввел пользователь}
Write('Привет,',name,'!'); {Обратите внимание!Переменная отделяется от кавычек ЗАПЯТЫМИ!}
End.

Задача 2.  Требуется узнать сколько лет пользователю, а затем вывести  «Вам  <возраст> лет». Очевидно, что для решения этой задачи нам потребуется целочисленный тип данных — Integer.

Program How_old_are_you;
var years: integer; {объявляем years -- это новая переменная}
Begin
Writeln('Сколько вам лет?'); {так как мы используем writeln,каретка будет мигать под надписью}
Read(years); {Считываем все, что ввел пользователь}
Write('Вам ',years,' лет.'); 
End.

Ну, вот и все! Все, что я хотел рассказать вам в сегодняшнем уроке. Вы узнали, что такое величина в Pascal, и выучили основные типы. А также научились создавать простейшие линейные программы. Более подробно про типы в PascalABC.Net мы поговорим в следующих уроках. Кстати, про PascalABC.Net. Понятно, что писать программы на листочках бесполезно, и вы должны тренироваться на компьютере. По этой ссылке скачайте последнюю версию PascalABC.Net для Windows.
Вот, как выглядит интерфейс программы при запуске.

PascalABC.Net
P.S. Давайте выделим две особенности Pascal:

  1. Паскаль НЕ чувствителен к регистру, то есть  и program, и Program, и PrOgRaM для него ничем не отличаются. А потому с самого начала привыкайте писать в нижнем регистре, чтобы при переходе на другой язык программирования не испытывать никаких проблем с этим;
  2. Имя программы в Pascal не играет никакого значения, оно не несет в себе никаких полезных функций. Если хотите вы можете просто не писать ЕГО!

P.P.S.  В мире наиболее популярны три операционные системы: Linux,  Mac OS  и Windows. А если у вас не  Windows? Какой компилятор выбрать тогда? Об этом мы с вами поговорим в уроке номер N.

  • KVIN

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

    • danilkonon

      Если вы используете Turbo Pascal, то поставьте после program uses crt; и перед end. readkey;

      program aaa;
      uses crt;
      var a: integer;
      read(a);
      writeln(a);
      readkey;
      end.

  • Anonim

    В объявлении константы есть ошибка: значение не надо присваивать, у константы оно просто равно

    • danilkonon

      спасибо. исправили

  • Кирилл

    P.P.S. В мире наиболее популярны три операционные системы: Linux, Mac OS и Windows. А если у вас не Windows? Какой компилятор выбрать тогда? Об этом мы с вами поговорим в уроке номер N.

    Так что же делать обладателям отличных от Windows ОС?

    • Вообще у вас есть три более-менее простых варианта:

      1) Использовать веб среду http://pascalabc.net/WDE/ (не используйте Сафари, попробуйте Хром)
      2) Установить FreePascal для Mac OS. У меня, если честно, так и не получилось.
      3) Установить виртуальную машину( Windows 7, Windows XP) и на нее установить PascalABC.NET или Turbo Pascal.

      • NinthRise

        Есть ещё Lazarus

    • макс

      есть wine, virtualbox, online pascalabc. чего надо еще?

  • DAM4GE

    Как открывать нужные скобки? Если я пишу Hello, world в скобках » » , то у меня вылезает ошибка.

  • Игорь

    Спасибо, я создал программу которая общается с пользователем, объединив эти две задачи.
    Получилось вот так:

    begin
    var name: string;
    write(‘Напиши своё имя: ‘);
    read(name);
    write(‘Молодец, ‘, name, ‘!’);
    var years: integer;
    writeln(‘Сколько тебе лет?’);
    read(years);
    write(», years, ‘, значит. А мне ещё и года нету(((‘);
    writeln(‘Мне пора на компьютер твоего друга… Пока’);
    end.

  • Anon

    Что делать если установил ABC Pascal, а после запуска не хочет открываться и нормально работать?

  • Елена Агафонова

    А мне не понравилось, что программа не чувствительна к числам, которые заканчиваются на 1,2,3,4. Получилось немного громоздко, но как сократить пока не придумала)

    program Your_age;
    var a: integer;
    begin
    writeln(‘А сколько Вам лет?’);
    readln(a);
    if (a > 4) and (a 21) and (a mod 10 > 4) then
    write(‘Значит, Вам ‘,a,’ лет!’);
    if (a 1) and (a mod 10 20) and (a mod 10 > 1) and (a mod 10 < 5) then
    write('Значит, Вам ',a,' года!');
    if (a mod 10 = 1) and (a 11) then
    write(‘Значит, Вам ‘,a,’ год!’)
    end.

    • Noob145

      Есть такой оператор — case of
      Если не изменяет память работает в integer.
      Например,
      write(‘Введите число’);
      readln(m); {m — введенная переменная}
      case m of
      1:write(‘Лол’); {То есть при введении единицы выведется «Лол»}
      2..5:write(‘Не лол’); {При введении числа от 2 до 5 выведется «Не лол»}
      else write(‘Kek’); {При введении числа отличного от 1-5 выведется «Kek»}
      end; {Конец алгоритма}

  • Fizn

    Подскажите, пожалуйста, возможно ли с помощью линейного алгоритма сделать так, что работала команда ввода read(surname)?
    Использую PascalABCNET.
    После написания такого кода программа не делает того, с чем прошу мне подсказать:

    var
    name,surname:string;
    begin
    writeln(‘Введите, пожалуйста, ваше имя: ‘);
    readln(name);
    writeln(‘Введите, пожалуйста, вашу фамилию: ‘);
    readln(surname);
    end.

    • alen_marzz

      А вы уверены в том, что она не делает?) У вас ведь нигде и вывода нет.

      • Fizn

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

      • Fizn

        Вспомнил. Дело не только в этом было. Суть в том, что не работал общий код, который был изначально. Именно это там не работало. Эти 2 ввода игнорировались. После вопроса, где нужно ввести 1 или 2 программа переходила на вопрос о возрасте.

        var
        name, surname: string;
        a, age: integer;

        BEGIN

        writeln (‘Connection…’);
        writeln(‘Доброго времени суток, пользователь программы!’);
        writeln(‘Вы находитесь в программной среде высшего интеллектуального творчества человечества.’);
        writeln(‘Просьба вести себя осторожно, дышать ровно, следовать инструкциям и быть готовым нести ответственность за принятие своих решений.’);
        writeln(‘Вы готовы? 1 — Yes/2 — No’);
        writeln(‘Введите число:’);
        read(a);

        case a of
        1:writeln(‘Решение о вашем действии записано в информационное пространство Вселенной. Отмена действий невозможна.’);
        0:write(‘Большие решения требуют серьёзной ответственности. Когда будете к этому готовы, можете в любой момент обратиться к программной среде.’);
        else writeln(‘У вас только одно право на ошибку. Попробуйте ещё раз ввести 1 или 0.’);
        end;

        writeln(‘Введите, пожалуйста, ваше имя, чтобы программа вам рассказала о его значении: ‘);
        read(name);
        writeln(‘Введите, пожалуйста, вашу фамилию, чтобы программа вам рассказала о её значении: ‘);
        readln(surname);
        writeln(‘Сколько вам лет, ‘,name,’?’);
        readln(age);

        case age of
        2..4,22..24,32..34,42..44,52..54,62..64,72..74,82..84,92..94,102..104,122..124:writeln(‘Вам ‘,age,’ года.’);
        1,21,31,41,51,61,71,81,91,101,121:writeln(‘Вам ‘,age,’ год.’);
        5..20,25..30,35..40,45..50,55..60,65..70,75..80,85..90,95..100,105..120,125,126:writeln(‘Вам ‘,age,’ лет.’);
        else write(‘В настоящее время человечеством не доказано, что человек может столько лет жить на планете Земля.’);
        end;
        END.

        • alen_marzz

          Очень здорово, что программа запустилась. Но на будущее: когда вы просите помощи, лучше прикреплять полный код программы/подпрограммы. Иначе такая помощь выполняется почти вслепую.

          • Fizn

            Тот, что выше написал, полный код программы. В нём не работает то, что я описал в предыдущем сообщении.
            readln(name) и readln(surname) не предлагают ввести данные. Сразу переходит программа на writeln(‘Сколько вам лет, ‘,name,’?’).

          • Fizn

            Тот, что выше написал, полный код программы. В нём не работает то, что я описал в предыдущем сообщении.
            readln(name) и readln(surname) не предлагают ввести данные. Сразу переходит программа на writeln(‘Сколько вам лет, ‘,name,’?’).

            https://uploads.disquscdn.com/images/50fc00ceb7dc2e9dd91f0aa03bb9f56f324daffa4ccb6de35b673b7b01b26e14.png