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


HelloWorl

Обычно, изучение любого языка программирования начинается с программы 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.

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

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

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

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

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

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

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

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

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

    1. WriteLn(‘Текст’) или Write(‘Текст’)
      Внутри обычных скобок когда обозначаем текст (НЕ переменную) то ставим ‘ перед и после текста

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

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

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

  9. А мне не понравилось, что программа не чувствительна к числам, которые заканчиваются на 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.

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

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

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

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

  13. Вспомнил. Дело не только в этом было. Суть в том, что не работал общий код, который был изначально. Именно это там не работало. Эти 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.

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

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

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

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

  17. writeln(‘Введите, пожалуйста, ваше имя, чтобы программа вам рассказала о его значении: ‘);
    readln(name);
    нужно писать не read, а readln

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

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