Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

1. Линейные программы: арифметические операторы, стандартные функции и ввод/вывод в текстовом режиме

Предыдущий раздел:

Следующий раздел:

Задание 1: Линейные программы, арифметические операторы

1. Создайте программу, печатающую при запуске текст «Hello, World» (традиционный текст для первой программы при изучении языка программирования, ваша первая программа приветствует мир). Опробуйте на ней возможности среды разработки. Запустите ее (F9), просмотрите результат выполнения, сохраните на диск (Ctrl-S), загрузите с диска снова (Ctrl-O). Пользуясь копированием через буфер (Ctrl – C, Ctrl – V), сделайте так, чтобы программа выводила слово «Hello» 20 раз.

2. Напишите программы запрашивающую у пользователя два числа и печатающую их сумму.

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

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

Попытайтесь воспользоваться переменной, предварительно ее не описав.

Опишите переменную типа integer, попытайтесь присвоить ей нецелое значение.


3. Создайте программу, решающую квадратные уравнения. Программа должна запрашивать значения коэффициентов и печатать вычисленные корни.

Арифметические операторы

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

5. Если дано трехзначное число, например 123 его можно представить в виде 3+2*10+1*10*10. Воспользовавшись этой информацией, создайте программу, которая, получая от пользователя трехзначное число, будет определять из каких цифр оно состоит, и выводить их через пробел (например, 1_2_3).

6. Напишите программу, запрашивающую у пользователя два момента времени (количество часов, минут и секунд) и сообщающую число секунд, прошедшее между этими двумя моментами.

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

Отличие среды Borland Pascal

Если в качестве среды разработки вы используете Borland Pascal, то следует иметь в виду следующие особенности:

  • После запуска среды необходимо создать новый файл (меню File/New).
  • Сохранение и загрузка файла производится с помощью клавиш F2 и F3.
  • Копирование и вставка производятся сочетаниями клавиш Ctrl — Ins и Shift — Ins (вместо привычных Ctrl — C, Ctrl — V).
  • После того как программа чего-то напечатает, она завершится, и вы не увидите никакого результата, пока не нажмете Alt — F5. Чтобы не делать это каждый раз, рекомендуется помещать в конец программы вызов процедуры readln:
      ...
      readln;
    end.
    

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

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

Следующий раздел:

Предыдущий раздел:

10 комментариев

  1. Анна

    По-моему, в пятом пункте опечатка: «3+2*10+2*10*10». Вместо второй двойки нужна единица.

  2. Taras

    Да. Спасибо, исправил.

  3. Алексанлдр

    7 верно?

    Было правильно. Решение удалил.
    Тарас.

  4. Андрей

    Не понял, а зачем в 7 тригонометрические формулы?
    Выражение такого типа разве не будет правильным?

    Было правильно. Удалил.
    Тарас.

  5. Taras

    Правильно, не нужны они там. Это я что-то перемудрил. Спасибо.

  6. Роман

    Подскажите, пожалуйста, задание 7 решено правильно? Если правильно, то можно ли его решить более простым способом.
    Спасибо.
    var
    h,m: integer;
    begin
    writeln(‘введите время в часах h’);
    write(‘h=’);
    readln(h);
    writeln(‘введите время в минутах m’);
    write(‘m=’);
    readln(m);
    writeln(‘через ‘,h,’ часов, ‘,m,’ минут, часовая стрелка будет находится на — ‘ ,(2*pi*1/12*(h+m/60)-2*pi*trunc((h+m/60)*1/12)),’ радианов, или ‘,
    round(360*1/12*(h+m/60)-360*trunc(1/12*(h+m/60))) ,’ градусов, а минутная стрелка будет находится на — ‘ ,
    (2*pi*1/60*m-2*pi*trunc(m*1/60)),’ радианов, или ‘,
    round(360*1/60*m-360*trunc(1/60*m)) ,’ градусов.’);

    end.

  7. Сергей

    Подскажите пожалуйста по задаче со временем, как быть если время указанное начальное время будет скажем 17 часов, а конечное 13 часов. При момем варианте программа выдаст разницу в четыре часа а прошли почти сутки, как это можно в арифметическом варианте реализовать? Спасибо!

    program semnadcat;
    var
    n,x,y,a,b,c:integer;
    begin
    write(‘часов= минут= секунд= ‘);
    readln(n);
    readln(x);
    readln(y);
    write(‘часов= минут= секунд= ‘);
    readln(a);
    readln(b);
    readln(c);
    write(‘прошло=’,abs((n*3600+x*60+y)-(a*3600+b*60+c)));

    end.

  8. Сергей

    Добрый день! Проверьте пожалуйста на првильность:
    program chasi_v_gradusax;
    var
    h,m,x:real;
    begin
    write(‘часов’);
    readln(h);
    write(‘минут’);
    readln(m);
    x:=m*0.5+h*30-360*trunc(h/11.5-0.01);
    writeln(‘часовая стрелка на ‘,x,’ градусов и на ‘,x/(180/pi),’ радиан’);
    writeln(‘минутная стрелка на ‘,m*6,’ градусов и на ‘,m*6/(180/pi),’ радиан’);
    end.

  9. unknovn

    S=1+2+3+…+n
    как решить

  10. Сергей

    Задача №6, пришлось подумать, но все таки решил)
    Program два_момента;
    var
    h,m,s,h1,m1,s1,s2,mom1,mom2: integer;
    s3: real;
    begin
    writeln(‘Напишите программу, запрашивающую у пользователя два момента времени (количество часов, минут и секунд) и сообщающую число секунд, прошедшее между этими двумя моментами.’);
    writeln(‘Первый момент времени:’);
    write(‘часов:’);readln(h);
    write(‘минут:’);readln(m);
    write(‘секунд:’);readln(s);
    writeln(‘Второй момент времени:’);
    write(‘часов:’);readln(h1);
    write(‘минут:’);readln(m1);
    write(‘секунд:’);readln(s1);
    mom1:=(h*60+m)*60+s;
    mom2:=(h1*60+m1)*60+s1;
    s2:=mom2-mom1;
    s3:=abs(86400*((-s2+abs(s2))/2/s2)-s2);
    writeln(‘Между этими моментами времени прошло ‘,s3,’ секунд.’)
    end.

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