Как написать пример на языке паскаль

Начало. Тексты программ

Материал из Вики проекта PascalABC.NET

Перейти к навигацииПерейти к поиску

HelloWorld

begin
  writeln('Привет, мир!');
end.

Это — самая первая программа на любом языке программирования.

Вычисление площади круга

const Pi = 3.1415;

begin
  var r := ReadReal('Введите радиус круга: ');
  var S := Pi*r*r;
  Println('Площадь круга равна ',S);
end.

Здесь иллюстрируется ввод, затем вычисления и вывод результата.

Вычисление A8

Код на PascalABC.NET:

var a: real;
begin
  var a := ReadReal('Введите a: ');
  var a2,a4,a8: real; // вспомогательные переменные
  var a2 := a * a;
  var a4 := a2 * a2;
  var a8 := a4 * a4;
  Println(a,$'{a} в степени 8 = {a8}');
end.

Здесь иллюстрируется использование промежуточных переменных и вычислений: без промежуточных вычислений мы бы потратили 7 умножений, а с промежуточными — всего 3.

Вычисление расстояния между двумя точками на прямой

Код на Pascal:

var 
  a,b: real; // координаты точек
  r: real;   // расстояние между точками на прямой
begin
  write('Введите координату точки a: ');
  readln(a);
  write('Введите координату точки b: ');
  readln(b);
  r := abs(a-b);
  writeln('Расстояние между точками = ',r);
end.

Здесь иллюстрируется использование стандартной функции abs

Вычисление гипотенузы по катетам

var 
  a,b: real; // катеты
  c: real;   // гипотенуза
begin
  write('Введите катеты прямоугольного треугольника: ');
  readln(a,b);
  c := sqrt(a*a+b*b);
  writeln('Гипотенуза = ',c);
end.

Здесь иллюстрируется использование стандартной функции sqrt

Бросание кубиков

var 
  r1,r2: integer; // значения на верхних гранях кубиков
begin
  r1 := Random(6)+1;
  r2 := Random(6)+1;
  writeln('Очки, выыпавшие на кубиках: ',r1,' ',r2);
  writeln('Сумма очков равна ',r1+r2);
end.

Здесь иллюстрируется использование стандартной функции Random

Обмен значений двух переменных с использованием третьей

var 
  x,y: real;
  v: real; // вспомогательная переменная
begin
  write('Введите x,y: ');
  readln(x,y);
  v := x;
  x := y;
  y := v;
  writeln('Новые значения x,y: ',x,' ',y);
end.

Это — классическая задача о перемене местами значений двух переменных с использованием третьей переменной. Она часто возникает в других задачах. Интересно, что x и y являются как входными, так и выходными переменными

Код на PascalABC.NET:

var x,y: real;
begin
  write('Введите x,y: ');
  readln(x,y);
  var v: real; // вспомогательная переменная
  v := x;
  x := y;
  y := v;
  writeln('Новые значения x,y: ',x,' ',y);
end.

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

Выделение цифр из двузначного числа

var 
  x: integer;     // двузначное число
  c1,c2: integer; // первая и вторая цифры двузначного числа
begin
  write('Введите двузначное число: ');
  readln(x);
  c1 := x div 10;
  c2 := x mod 10;
  writeln('Первая и вторая цифры двузначного числа: ',c1,' ',c2);
end.

Ссылки

  • Программы для начинающих
  • Сайт PascalABC.NET: Программы и алгоритмы для начинающих


СТРУКТУРА ПРОГРАММЫ

В программе, написанной на  Паскале, могут быть следующие разделы:

Program … ; { Заголовок программы }

Uses … ; { Подключение модулей }

Label … ; { Раздел объявления меток }

Const … ; { Раздел объявления констант }

Type … ; { Раздел объявления новых типов }

Var … ; { Раздел объявления переменных }

Procedure … ; { Описание своих процедур }

Function … ; { Описание своих функций }

Begin { начало основной программы }
 …;
 { Операторы }
 …;

End.

Обязательной частью является лишь тело программы, которое начинается словом begin, а заканчивается словом end с точкой. Операторы в Паскале разделяются точкой запятой. Заголовок программы является хотя и необязательным, но желательным элементом и состоит из зарезервированного слова program и идентификатора — имени программы, за котором следует точка с запятой. Порядок объявлений и описаний не регламентируется.

ПРИМЕР : Простейшая программа.

program prim_1; { демонстрация структуры программы}

{эта программа не требует никаких объявлений и описаний}

begin

 write(‘Привет! Вот мы и начали.’) (* эта строка текста появится на экране *)

end.

ТИПЫ ДАННЫХ

Понятие типа данных является ключевым в языке Паскаль. Тип данных характеризует внутреннее представление, множество допустимых значений для этих данных, а также совокупность операций над ними.

Целые типы

Слово Integer (читается » ‘интеджер», переводится ЦЕЛЫЙ)  указывает, что а и b имеют право быть целыми числами, а не дробными. Смысл подобного ограничения в том, что Паскаль по-разному работает с целыми и дробными числами, а поскольку он язык строгий, то требует, чтобы программист точно указал, к какому из этих двух типов относятся числа.
Integer (-32767 … 32768, 2 байта),                   основные типы

Для того, чтобы переменная имела право принимать значения больших целых чисел, она должна быть описана не как Integer, а как LongInt (сокращение от Long Integer — Длинное Целое, читается “лонг’инт”). Под переменную типа LongInt компьютер отводит в памяти 4 байта и она может принимать значения в диапазоне от  2147483648 до 2147483647.

Longint (-2147483648 … 2147483647, 4 байта),

Вещественные типы

Программист имеет право любую переменную описать не как целую (Integer), а как вещественную (Real). В этом случае переменная имеет право принимать любые целые и дробные значения.По-английски Real читается   » ‘риэл», переводится «вещественный». Под переменную типа Real Паскаль отводит в памяти ячейку размером в 6 байтов.

Real (занимает 6 байт, диапазон от 2.9E-39 до 1.7E+38 по модулю, точность 11-12 значащих цифр)   основной тип Логический тип

Переменные логического типа Boolean занимают в памяти один байт и могут принимать одно из двух значенийFalse — ложное или True — истинное.
 

Символьный тип

Символьный тип Char также называют литерным. Он позволяет работать с символами, которые записываются двумя способами: в одинарных кавычках или по их коду, например ‘a’, ‘B’, ‘*’ или, что то же самое, #97, #130, #42. В отличие от текста программы на паскале, символы, соответствующие строчным и заглавным буквам различаются.

Строковый тип

String говорит о том, что переменная a обязана иметь строковое (текстовое) значение, то есть ее значением будет не число, а произвольная цепочка символов, например,       Привет всем!     или    рпН2Н(*fD6:u   . Слово   String   читается «стринг», переводится «строка».

Служебные слова

• BEGIN будем ставить в начале программы, чтобы компьютеру было видно, откуда она начинается. (Это правило мы очень скоро уточним). BEGIN переводится НАЧАЛО, читается «бигин«.

• END с точкой ставится в конце программы, чтобы компьютеру было видно, где она кончается. END переводится КОНЕЦ, читается «энд».
Точкой с запятой необходимо отделять операторы друг от друга. Служебные слова BEGIN и END от операторов точкой с запятой отделять не нужно.

 Процедура вывода Write

Первый оператор, с которым мы познакомимся, занимается исключительно тем, что приказывает компьютеру изобразить на экране монитора ту или иную информацию, состоящую из букв (символов) и чисел. Пусть мы хотим, чтобы компьютер изобразил на экране число 1999. Эту задачу выполняет процедура Write. К ней обратимся так —  Write(1999).  То, что нужно изобразить, положено заключать в круглые скобки. По-английски слово Write  означает «пиши». Для тех, кто плохо разбирается в английской транскрипции, я возьму грех на душу и приведу примерное произношение русскими буквами — «райт»

КАК  ПИШЕМ ОБРАЩЕНИЕ К ПРОЦЕДУРЕ    ЧТО  ВИДИМ В РЕЗУЛЬТАТЕ  НА  ЭКРАНЕ

Write( -500)                   -500

Write(3 + 2)                    5

Пояснения: Можно печатать не только числа, но и результаты вычисления арифметических выражений

Write(3 * 2)                    6

    Знак  *  обозначает умножение

Write(2 * 2 — 1)                    3
Write( ‘Хорошо!’ )                Хорошо!

    Текст, в отличие от чисел и выражений, нужно брать в одинарные кавычки

Write( ‘Я изучаю Паскаль’ )            Я изучаю Паскаль
Write( 3+2 ,  4+4)                    58

Это не пятьдесят восемь, а два числа: пять и восемь. “К сожалению”, они расположены вплотную друг к другу. Чуть ниже вам станет ясно, как преодолеть этот “недостаток” оператора Write.

Write( ‘Это’   ,    4+4   ,  ‘кошек’ )            Это8кошек

Как видите, один оператор Write может выводить сразу несколько элементов. Элементы нужно отделять друг от друга запятыми. В этом примере — три элемента:    
1)текст  ‘Это’    
2)выражение  4+4    
3)текст ‘кошек’ . 
Все элементы выводятся в одну строку вплотную друг к другу. Если вся информация, выводимая оператором 
Write,не умещается в одну строку, то не уместившаяся часть автоматически выводится с начала следующей строки.  
Самое трудное для новичка — не путать запятые и кавычки, находить элементы и отличать текстовые элементы от чисел и выражений. 
Совет: сначала  найдите внутри скобок запятые. Теперь, чтобы отличить текстовые элементы от прочих, обратим внимание, что они заключены в кавычки.

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

Write( ‘Это   ‘,4+4,’   кошек’ )            Это   8   кошек
Write( ’16+16=’  ,  16+16)                16+16=32

Здесь два элемента : текст ’16+16=’  и выражение 16+16 .  Несмотря на то, что текст очень похож на выражение, компьютер узнает его по кавычкам и не вычисляет, а просто воспроизводит, как записано —    16+16=   .  Любой элемент, заключенный в кавычки, Паскаль считает текстом.    

Write( 3+2 ,   ‘  ‘   , 4+4)                5  8

Здесь три элемента. Второй элемент — текст, состоящий из двух пробелов — ‘  ‘ . В тексте можно использовать любые символы, имеющиеся на клавиатуре.

Программа с использованием оператора WRITELN
BEGIN

BEGIN

WriteLn(‘Начали!’);
WriteLn(8+1);    
WriteLn(5-2) /
/в последнем операторе точка с запятой не ставится

END.

Hа экране мы увидим           Начали!
                                                           9
                                                           3

 Процедура вывода WriteLn

Оператор WriteLn —  читается «райт’лайн» , переводится — ПИШИ СТРОКУ. Правила его записи и выполнения те же, что и у Write, с одним исключением — после выполнения оператора Writeследующий оператор Write или WriteLn печатает свою информацию в той же строке, а после выполнения оператора WriteLn — с начала следующей. Примеры:

ПРОГРАММА

 ЧТО  ВИДИМ НА  ЭКРАНЕ

 BEGIN  Write    ( ‘Ама’ ); Write  ( ‘зонка’) END.

 Амазонка

 BEGIN  Write    ( ‘Ама’ ); WriteLn( ‘зонка’) END.

 Амазонка

 BEGIN  WriteLn( ‘Ама’ ); Write    ( ‘зонка’) END.

 Ама
зонка

 BEGIN  WriteLn( ‘Ама’ ); WriteLn( ‘зонка’) END.

 Ама
зонка

 
 Разница между процедурами 
Write и WriteLn в том, что после выполнения Write курсор остается в той же строке, а после выполнения WriteLn курсор прыгает в начало следующей строки, а значит и все следующие символы волей-неволей будут выводиться в следующей строке.

Оператор WriteLn можно использовать просто для перевода курсора в начало следующей строки. Для этого достаточно написать одно слово WriteLn без скобок.

Программа с использованием оператора WRITE
BEGIN

    Write(‘Начали!’);    {Это приказ напечатать слово «Начали!»}
    Write( 8+1) ;
    Write( 5-2)        
{А здесь компьютер из 5 вычтет 2 и  напечатает результат}
END.                           {Не забыть бы точку}
 

На экране мы увидим           Начали!93


Оператор присваивания.    Объявление переменных (VAR)

Что же мы можем делать с переменными величинами, программируя на Паскале? Прежде всего, мы можем задавать компьютеру значение той или иной переменной величины. Это мы можем сделать при помощи нового оператора, который называется оператором присваивания. Так, если мы хотим сказать, что а имеет значение 6, то должны записать  а := 6 Как видите, вместо значка  =  употребляется значок   :=   .  Он называется знаком присваивания ,  а сама запись   а:=6  называется оператором присваивания. Говорят, что величине а присваивается значение 6. С момента выполнения оператора а:=6 компьютер будет помнить, что а равно шести.

Справа от значка := в операторе присваивания можно писать не только числа, но и переменные величины, и выражения. Выражение пока будем понимать так, как его понимает школьная математика. Например, после выполнения следующего фрагмента программы:         . . . .  a:=2*3+4;   b:=a;   y:=a+b+1. . . .    компьютер будет знать, что a равно 10, b равно 10, y равно 21. Еще несколько примеров:

ФРАГМЕНТ  ПРОГРАММЫ

ЧТО ЗАПОМНИТ КОМПЬЮТЕР

v := -2+10;  h := 10*v;  s := v+h

v=8    h=80    s=88

t := 0;   n := 2*t+40;    z := -n

t=0    n=40    z= -40

Необходимо помнить, что компьютер выполняет оператор присваивания «в уме», то есть результат его выполнения не отображается на экране. Если мы хотим видеть результат выполнения оператора присваивания, используем WriteLn.

 Объявление переменных величин . 
 описание начинается со служебного слова 
var (читается ВАР, это сокращение от английского variable — переменная). После него записываются имена всех переменных, встречающихся в программе с указанием через двоеточие типа значений, которые каждая переменная имеет право принимать. В нашем случае я записал имена переменных а и b, так как только они встречаются между BEGIN и END. Слово Integer (читается » ‘интеджер», переводится ЦЕЛЫЙ)  указывает, что а и b имеют право быть целыми числами, а не дробными.

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

       Пример объявления переменных

    Пример прогораммы с использованием оператора   присваивания и объявлении переменных

VAR a,b,y : Integer;
VAR a,b :Integer;
    y :Real;

VAR  a,b : Integer; эта программа
 напечатает число 120

BEGIN    
a:=100;     
b:=20;    
WriteLn (a + b)
END.

ПОРЯДОК  ИСПОЛНЕНИЯ ОПЕРАТОРОВ

 ЧТО НАХОДИТСЯ В ЯЧЕЙКЕ ПАМЯТИ  k

 ЧТО ВИДИМ НА ЭКРАНЕ

 k:=10   

 10

 WriteLn (k)

 10

 10

 k:=25   

 25

 WriteLn (k)

 25

 25

 k:=4

 4

 WriteLn (k)

 4

 4

Как видите, в процессе работы программы содержимое ячейки k меняется.  Так, при выполнении оператора k:=25 там вместо значения 10 появляется 25. А куда же девается десятка? Она стирается, то есть компьютер забывает ее безвозвратно.

Примеры задач

 Известны размеры спичечной коробки: высота — 12.41 см., ширина — 8 см., толщина — 5 см.  Вычислить площадь основания коробки и ее объем .

 
shirina        —    ширина
tol        —    толщина
visota        —    высота
pl        —    площадь
V        —    объем

 VAR    shirina,tol,pl   :Integer;
        visota,V   :Real;

BEGIN

        shirina:=8;   
        tol:=5;  
        visota:=12.41;
        pl := shirina * tol;
        V  := pl * visota;
        WriteLn (pl,’    ‘, V  :10:3)

END.

 Автомобиль 3 часа ехал со скоростью 80 км/час и 2 часа со скоростью 90 км/час. Вычислить среднюю скорость автомобиля (она равна суммарному пути, деленному на суммарное время).

VAR   t1, t2 {t1-время на первом отрезке, t2-на втором}

   v1, v2,{v1-скорость на первом отрезке, v2-на втором}

    s1, s2 :Integer;{s1-первый отрезок пути, s2-второй}

   sredn_skorost:Real;

BEGIN

    t1:=3;       
    t2:=2;
    v1:=80;   
    v2:=90;

    s1:=v1*t1; {путь равен скорость умножить на время}

    s2:=v2*t2;

    sredn_skorost := (s1+s2)/(t1+t2);
    WriteLn (sredn_skorost :10:3);
    ReadLn

END.

Операторы ввода данных ReadLn  и  Read

ReadLn  читается «рид’лайн», переводится «читай строку». Он приказывает компьютеру остановиться и ждать, когда человек введет с клавиатуры определенную информацию, после чего продолжить работу. В частности, ReadLn (a,b) будет ждать ввода двух целых чисел.

Read(a);       в одну строку
ReadLn(В,С);    в столбик

 
Задача:
 Сложить два числа  —    20 и 16.

Сравним две программы решения этой задачи:

VAR a,b : Integer;
BEGIN        
  a:=20;   b:=16;    
  WriteLn (a+b)    
END.

VAR a,b : Integer;
BEGIN    
  ReadLn (a,b);
  WriteLn (a+b)
END.

Таким образом, если первая программа после запуска будет работать без остановки до самого конца и без хлопот выдаст результат, то вторая программа на операторе ReadLn остановится и будет ждать. Во время этого ожидания человек должен на клавиатуре набрать число 20 (так как первым в списке оператора ReadLn стоит a), затем нажать клавишу пробела, затем набрать 16 и нажать клавишу Enter. Паскаль воспринимает нажатие пробела, как сигнал человека о том, что закончен набор на клавиатуре одного числа и сейчас начнется набор другого. После набора на клавиатуре последнего числа необходимо нажать клавишу Enter  в знак того, что ввод чисел для данного оператора ReadLn закончен  и компьютер может продолжать работу. В соответствии с этим компьютер сразу же после нажатия Enter прекращает ожидание и прежде всего направляет число 20 в память, в ячейку a, число же 16 — в ячейку b. На этом он считает выполнение оператора ReadLn законченным и переходит к следующему оператору — WriteLn. В результате будет напечатано число 36.

Одна из причин в том, что программа с ReadLn гораздо универсальнее, «свободнее»: если первая программа решает задачу сложения только двух конкретных чисел, то вторая программа складывает два любых числа. Вторая причина в том, что программа с ReadLn позволяет программисту во время написания программы не задумываться над конкретными значениями исходных данных, оставляя эту головную боль на момент выполнения программы. Но самая главная причина в том, что ReadLn позволяет человеку общаться с компьютером, вести с ним диалог во время выполнения программы.

               

Задания: 

Вычислите периметр и площадь прямоугольника.

 

Пример программы
введите  длину прямоугольника.
12
введите  ширину прямоугольника.
20
Периметр прямоугольника = 64
Площадь прямоугольника = 240


 

var a,b :integer;
begin
writeln(‘введите  длину прямоугольника.’);
readln(a);
writeln(‘введите  ширину прямоугольника.’);
readln(b);
writeln(‘Периметр прямоугольника = ‘, 2*(a+b));
writeln(‘Площадь прямоугольника = ‘, a*b);
end.

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

Пример программы:
Введите исходные данные:
Цена тетради (руб.) =2.75 
Количество тетрадей =5
Цена карандаша (руб.) =0.85 
Количество карандашей =2
Стоимость покупки: 15.45 руб.

var
kar,tetr: real; { цена карандаша и тетради }
nk,nt: integer; { количество тетрадей и карандашей }
summ: real; { стоимость покупки }
begin
writeln(‘Вычисление стоимости покупки.’);
writeln(‘Введите исходные данные:’);
write(‘Цена тетради (руб.) —>’);
readln(tetr);
write(‘Количество тетрадей —>’) ;
readln(nt);
write(‘Цена карандаша (руб.) — >’);
readln(kar);
write(‘Количество карандашей —>’);
readln(nk);
summ:=tetr*nt + kar*nk;
writeln(‘Стоимость покупки:’,summ:6:2,’ руб.’); 
readln;
end.

var
l,w,h : real; { длина, ширина и высота параллелепипеда}
s: real; { площадь поверхности параллелепипеда}
 begin
writeln(‘Вычисление площади поверхности параллелепипеда’);
writeln(‘Введите исходные даные:’);
write(‘Длина (см) —> ‘);
readln(l) ;
write(‘Ширина (см) ->’);
readln(w);
write(‘Высота (см) — >’) ;
readln(h);
s:=(l*w + l*h + w*h)*2;
 writeln(‘Площадь поверхности параллелепипеда:’,s:6:2,’ кв.см. ‘);
 readln;
 end
.

Условный оператор IF 

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

Признаком разветвляющегося алгоритма является наличие операций проверки условия. Различают два вида условий — простые и составные.

Простым условием (отношением) называется выражение, составленное из двух арифметических выражений или двух текстовых величин (иначе их еще называют операндами), связанных одним из знаков: 

    <    — меньше, чем…

    >    — больше, чем…

    <=    — меньше, чем… или равно

    >=    — больше, чем… или равно

    <>    — не равно

    =    — равно

В общем случае полная форма конструкции условного оператора имеет вид:

if  <логическое выражение>  then  <оператор 1> else    <оператор 2>

if

читается «иф»

переводится  «если»

then

читается «зэн»

переводится  «то»

else

читается «элз»

переводится  «иначе»

Условный оператор работает по следующему алгоритму.

Сначала вычисляется значение логического выражения, расположенного за служебным словом IF. Если его результат истина, выполняется <оператор 1>, расположенный после слова THEN, а действия после ELSE пропускаются; если результат ложь, то, наоборот, действия после слова THEN пропускаются, а после ELSE выполняется <оператор 2>.

Рассмотрим пример.

Задача.

 Вывести на экран большее из двух данных чисел.

Var

    x, y : integer; {вводимые числа}

Begin

    writeln(‘Введите 2 числа ‘); {вводим два целых числа через пробел}

    readln(x,y);

    if x>y

      then

          writeln (x)  {если х больше y, то выводим х}

      else

          writeln (y)  {иначе выводим y}

     End.

Можно также использовать и сокращенную (неполную) форму записи условного оператора.

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

Неполная форма условного оператора имеет следующий вид.

if  <логическое выражение> 

  then

      <оператор>

Тогда если выражение, расположенное за служебным словом IF. в результате дает истину, выполняются действия после слова THEN, в противном случае эти действия пропускаются.

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

Если в качестве оператора должна выполниться серия операторов, то  они заключаются в операторные скобки begin-end. Конструкция Begin … End называется составным оператором.

if  <логическое выражение>

  then

      begin

         оператор 1;

         оператор 2;

         …

      end

  else   

      begin

        оператор 1;

        оператор 2;

         …

      end;

Определение. Составной оператор — объединение нескольких операторов в одну группу. Группа операторов внутри составного оператора заключается в операторные скобки (begin-end).

begin

    оператор 1;

    оператор 2;

end;

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

Примеры программ с IF

Составить программу, которая предлагает Ивану-Царевичу выбрать правильное направление пути.

У Ивана-Царевича есть три варианта дальнейшего пути:

направо,   — «Коня потеряешь»

налево,   — «Голову сложишь»

 вперед.    — «Невесту найдешь»

Var p :string;

Begin

WriteLn (‘Куда путь держишь?’);

ReadLn (p);

If p=‘направо’  then  writeLn (‘Коня потеряешь’);

If p=‘налево’  then  writeLn (‘Голову сложишь’);

If p=‘прямо’  then  writeLn (‘Невесту найдешь’);

ReadLn;

End.

пример выполнения программы

Куда путь держишь?

прямо

Невесту найдешь

Куда путь держишь?

направо

Коня потеряешь

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

Program sum3;

Var a,  b, c: real;

Begin

Readln ( a, b,с );

If a*a + b*b = c*c   then writeln (‘треугольник прямоугольный’)

else writeln (‘не прямоугольный’);

Readln;

End.

пример выполнения программы

Длина первой стороны

3

Длина второй стороны

4

Длина третьей стороны

5

треугольник прямоугольный

Вложенные операторы if.

При решении задач часто приходится рассматривать не два, а большее количество вариантов. Это можно реализовать, используя несколько условных операторов. В этом случае после служебных слов Then и Else записывается новый условный оператор. 

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

Пример

Снаряд должен попасть  в промежуток между 30 и 40 км.

Если он попадает в данный промежуток то появляется надпись «Попал», иначе если не долетел «Недолет» или «Перелет»

if x >= 30 then

     if x <= 40 then  

          writeln (‘Попал’) —  вложенный условный оператор

     else writeln (‘Перелет’)

   else

     writeln (‘Недолет’);

Примеры программ

Диалог с компьютером

Компьютер : «Как тебя звать?»

Пользователь: «Вася»

Компьютер: Чем займемся Вася сложением или умножением?»

Пользователь вводит знак «+» или «*»

Если «+»:

Компьютер: «Введите первое число»

а

Компьютер: «Введите второе число»

b

Компьютер: Сумма чисел = ……»

Если «*»:

Компьютер: «Введите первое число»

а

Компьютер: «Введите второе число»

b

Компьютер: Произведение  чисел = ……»

var a,b :integer;

 imya : string;

 d :char;

 begin

 Writeln (‘Как тебя звать?’);

 Readln (imya);

 Writeln (‘Чем займемся ‘,imya,’  сложением или умножением?’);

 Readln (d);

 If d=’+’ then   

begin

Writeln (‘Введите первое число’);

 Read(a);

 Writeln (‘Введите второе число’);

 Read(b);

  Writeln (‘Сумма чисел = ‘,a+b);

 end

  else   

begin

   Writeln (‘Введите первое число’);

 Read(a);

 Writeln (‘Введите второе число’);

 Read(b);

  Writeln (‘Произведение чисел = ‘,a*b);

  end;

  end.

Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ «подходит» или «не подходит»).

program qq;

    var x: integer;

    begin

   writeln(‘Введите возраст’);

   read ( x );

   if x >= 25 then

     if x <= 40 then  

          writeln (‘Подходит’)

     else writeln (‘Не подходит’)

   else

     writeln (‘Не подходит’);

    end.

Сложные условия 

Логические операции not, and, or.

Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций:

not – НЕ (отрицание, инверсия)

and – И (одновременное выполнение условий)

or – ИЛИ (выполнение хотя бы одного из условий)

Порядок выполнения (приоритет = старшинство)

выражения в скобках

not

and

or

<, <=, >, >=, =, <>

Особенность – каждое из простых условий обязательно заключать в скобки.

Пример

if not (a > b) or (c <> d) and (b <> a) 

then begin

  …

end

Сравните программы:

вложенное условие

var x: integer;

    begin

   writeln(‘Введите возраст’);

   read ( x );

   if x >= 25 then

     if x <= 40 then  

          writeln (‘Подходит’)

     else writeln (‘Не подходит’)

   else

     writeln (‘Не подходит’);

    end.

составное условие

var x: integer;

    begin

   writeln(‘Введите возраст’);

   read ( x );

   if (x >= 25)and ( x <= 40 )

then  

          writeln (‘Подходит’)

     else writeln (‘Не подходит’)

    end.

Примеры программ с сложными условиями.

Человек вводит с клавиатуры строку, смысл которой — приветствие при встрече. Компьютер тоже должен ответить приветствием. 

Отвечать нужно в соответствии со следующей таблицей:

VAR     a,b     :String;     {a-ПРИВЕТСТВИЕ ЧЕЛОВЕКА, b-ОТВЕТ КОМПЬЮТЕРА}

BEGIN

    ReadLn (a);

    if  a=‘Привет’                                        then Writeln (‘Привет ‘);

    if  (a=’Здорово‘) OR (a=’Здравствуйте’)        

then Writeln (‘Здравствуйте‘);

    if(a=’Добрыйдень’)OR(a=’Приветик’)OR(a=’Салют’)    then Writeln (‘Салют‘);

END.

   Оператор варианта case

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

VAR     Otmetka: Integer;

begin

    WriteLn (‘Какую отметку ты получил по чистописанию?’);

    ReadLn (Otmetka);

    CASE otmetka OF     {Перевод: В СЛУЧАЕ ЕСЛИ отметка РАВНА…}

        1,2        :WriteLn(‘Кошмар!’);

        3        :WriteLn(‘Неважно’);

        4        :WriteLn(‘Неплохо’);

        5        :WriteLn(‘Молодец!’);

        ELSE     WriteLn(‘Таких отметок не бывает’)

    END                                {Конец оператора CASE}

end.

Основой программы является оператор варианта CASE (читается «кэйс», переводится «случай»). Предлог OF читается «эв». Весь оператор CASE нужно понимать так:

В СЛУЧАЕ ЕСЛИ отметка РАВНА

    1 или 2     печатай ‘Кошмар!’

    3           печатай ‘Неважно’

    4           печатай ‘Неплохо’

    5           печатай ‘Молодец!’

    ИНАЧЕ        печатай ‘Таких отметок не бывает’

КОНЕЦ оператора case

В процессе исполнения оператора case компьютер сравнивает значение переменной Otmetka по очереди со всеми значениями, перечисленными перед двоеточиями. Наткнувшись на совпадающее значение, он выполняет оператор, стоящий после двоеточия. На этом исполнение оператора case завершается. Если же совпадающего значения так и не нашлось, то выполняется оператор, стоящий после слова else (в нашей программе он полезен на тот случай, если ученик болен манией величия и вводит число 6). После else может стоять и цепочка операторов, записанных через точку с запятой.

У оператора case есть существенное ограничение — переменная, стоящая после слова case, должна быть так называемого порядкового типа.

в качестве переменной-селектора можно использовать переменную целого (integer) или символьного (char) типа.

Var

    a  : integer;

Begin

    writeln(‘Введите цифру ‘);

    readln(a);

    case a of

        0 : write (‘ноль’);

        1 : writeln (‘один’);

        2 : writeln (‘два’);

        3 : writeln (‘три’);

        4 : writeln (‘четыре’);

        5 : writeln (‘пять’);

        6 : writeln (‘шесть’);

        7 : writeln (‘семь’);

        8 : writeln (‘восемь’);

        9 : writeln (‘девять’)

        else writeln (‘Это число не является цифрой’);

   end;

End.

Написать программу преобразования цифр в слова.

Пример вывода программы

Введите цифру 

ф

Это число не является цифрой

Введите цифру 

5 -пять

6 -шесть

1 -один

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

Паскаль - рабочая среда (интрефейс)

Pascal – один из самых известных языков программирования. Создан в 1968 – 1969 годах швейцарским ученым Никлаусом Виртом, был назван в честь французского математика и физика Блеза Паскаля, и используется для обучения программированию по сей день.

1. Подготовка к работе

Итак, вы решили научиться программировать и начать с языка наиболее для этого подходящего – Pascal. Для начала работы вы должны приобрести (скачать) компилятор.

А что же собственно, такое, этот «компилятор»? Это специальная программа, которая считывает код программы, а затем переводит его на язык машинных кодов. То есть, по сути, все языки программирования – это способ “общения” с компьютером, а компилятор помогает перевести нашу “речь” на понятную ему.

Для Pascal существует немало компиляторов, самые известные из них: Pascal ABC, Free Pascal, Pascal ABC.NET, Turbo Pascal. Все эти программы по-своему хороши, но лично для меня (автора), очень удобен Pascal ABC (или Pascal ABC.NET), поскольку он имеет весьма удобный интерфейс, подробную справку, и даже специально подготовленный для новичков сборник задач.

2. Начало работы

Что ж, перед нами открыто окно компилятора. Чистый, белый (или синий?) лист. Здесь и будут появляться на свет наши первые программы. Перед началом работы следует запомнить, что язык Pascal – это совокупность трёх составляющих: алфавита, синтаксиса (правил написания объектов языка) и семантики (правил использования этих объектов).
Алфавит Pascal состоит из:

  1. Прописных и строчных букв латиницы: A…Z, a…z;
  2. Цифр: 0…9;
  3. Специальных символов: + — * / = < >.,:; ‘ # ( ) { } [ ] и их комбинаций: «>=» «

Задача же синтаксиса и семантики состоит в том чтобы, правильно написать раздел программы и правильно составить ее структуру, в противном же случае наша программа будет работать неправильно (или же не работать вовсе!).
Вам наверное уже не терпится приступить к самой интересной части, так что сейчас мы с вами попробуем написать ваши первые программы.

Структура программы выглядит так:

Program «имя программы»; — заголовок программы;
(Примечание: в конце строки ставится точка с запятой, не во всех, но в большинстве)
Uses (название библиотеки); здесь подключаются библиотеки, которые дают дополнительные возможности при создании программ;
Label (имя метки); здесь, если необходимо, прописываются метки, позволяющие переходить в разные места программы (о них позже);
Const тут указываем переменные с постоянной величиной, например, p=3.14;
Var тут через запятую перечисляем все переменные, а затем, указываем тип данных (Пример: Var: K, L, M: integer; N, O: real; (если несколько типов));
Begin (здесь без точки с запятой)
Дальше следует основной блок программы;
end. – конец программы (обязательно после “end” точка, если только это конец программы, а не операторные скобки).

3. Создание первых программ

Теперь вы знакомы с основной структурой программы. Следует заметить, что из вышеперечисленных разделов обязательными есть только «Var», «Begin» и «end», остальные же могут применяться, если это требуется в ходе выполнения поставленной задачи.

Откройте окно вашого компилятора, и введите следующие строки:

program Programma1;
begin
end.

Нажмите кнопку «Выполнить»(«Run»). Ничего не происходит? Так и есть, ведь наша программа «пустая», мы не указали что она должна делать, потому ничего и не произошло. Обычно принцип работы программы написанной на языке Pascal состоит из трёх этапов: ввод данных – обработка данных – вывод даннных. Теперь познакомимся с оператором “write”. Он служит для как раз для вывода данных без перехода на новую строку. Попробуем его применить, тем самым сделав нашу программу чуть сложнее и интереснее:

program Programma1;
begin
write(‘ Pascal ‘);
end.

Собственно, так он и применяется. Между апострофами мы можем ввести любой текст, на любой раскладке, и после выполнения программы он появится в окне вывода (или в командной строке, смотря какой у вас компилятор). В данном случае, должно появиться слово «Pascal».

3.1. Операторы write, writeln, read, readln

Теперь поговорим о вводе данных. Мы уже познакомились с оператором write, но существуют также и другие. Writeln, к примеру, используется для вывода данных с переходом на новую строку. Зачем? Ну, например чтобы дать какой-нибудь переменной значение:

program Programma1;
var A:integer;
begin
writeln(‘A= ‘); read(A); {ввести значение и «прикрепить» его к переменной A}
write(A); {Вывести значение переменной A}
end.

Как вы видите, я вкратце описал каждое действие в фигурных скобках. Это называется комментарий. В дальнейшем я также буду использовать их для объяснений.
В этом примере для присваивания к переменной значения, введенного с клавиатуры используется оператор read. Мы видим, что при выполнении он прочитал строку в переменную А. А другой оператор, readln работает по другому. Используя его, мы можем сразу ввести нужную строку, и она прочитается в переменную:

program Programma1;
var A:integer;
begin
readln(A);
write(‘A= ‘, A); {строка будет выглядеть так: «А= ‘ введенное значение А ‘ „}
end.

Теперь, когда вы немного знаете о вводе данных, поговорим о том, какие могут быть данные, и как их обрабатывать.

3.2. Типы данных в Pascal

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

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

•Целые типы данных (для целых чисел):
— byte
Объем памяти значений этого типа составляет 1 байт. Диапазон значений для данного типа: от 0 до 255.
— word
Значения этого типа занимают уже 2 байта памяти, а диапазон значений уже побольше: от 0 до 65535.
— integer (уже нам знакомый)
Значения также занимают 2 байта памяти, диапазон такого же размера, но включает уже и отрицательные числа: -32786…32787.
— LongInt
Объем памяти, занимаемый значением типа равняется 4 байтам. Диапазон значений же полностью соответствует названию типа данных: от -2147483648 до 2147483647
— ShortInt
Значение типа потребляет 1 байт памяти, диапазон относительно небольшой: -128…127.

•Вещественные типы данных (для чисел с дробной частью):
— Real
Занимаемая значением типа память – 6 байт. Число значащих цифр – 11-12. (значащие цифры – это точные цифры, т.е. не округленные). Диапазон значений типа: от 2.9*10-39 до 1.7*1038.
— Double
Размер значения типа – 8 байт. Число значащих цифр – 15-16. Диапазон: 5.0*10324…1.7*10308.
— Extended
Занимает 10 байт. Число значущих цифр – 19-20. Диапазон: 3.4*10-4932…1.1*104932.
Помимо этих, существуют также символьный тип данных (char) и даже логический тип данных (boolean), переменные которого могут принимать значения только true или false.

Итак, мы уже немало узнали о вводе и выводе данных. Теперь же перейдем к самой сложной части – обработке данных.

3.3. Обработка данных. Математические операции. Условия. Логические операции.

Мы уже научились вводить данные в программу, теперь попробуем научиться их обрабатывать. Первое, и самое главное, что нам пригодится в этом деле – оператор присваивания. Выражается он вот так: «:=», и используется для присваивания значения переменной. Примеры: A:=1.5; B:=2+A. Теперь, когда мы знакомы с оператором присваивания, можем рассмотреть математические операции Pascal:

  1. Сложение (+);
  2. Вычитание (-);
  3. Умножение (*);
  4. Деление (/);
  5. Целочисленное деление (div) – возвращает целую часть от деления (Пример: 10 div 3 = 3);
  6. Остаток от деления (mod) – возвращает только остаток от деления (Пример: 5 mod 2 = 1);

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

abs(x) – возвращает модуль от x;
sin(x) – синус угла x (в радианах);
cos(x) – косинус угла x (в радианах);
int(x) – возвращает целую часть от x;
random(число) – случайное число от 0 до заданного;
sqr(x) – квадрат x;
sqrt(x) – квадратный корень x;
inc(x) – увеличить x на 1;
dec(x) – уменьшить x на 1.

Условия

Условия в Pascal играют очень большую роль, особенно если алгоритм выполнения программы разветвленный. Формулируется условие следующим образом:

if (условие 1) then (действие 1 — основное) else (действие 2 — альтернативное)
(if – если, then – то, else – иначе)

При построении условия пользуются логическими операциями and, not, or, xor:

• and – операнд, объединяющий несколько условий в одно. Действие будет выполняться, только если все перечисленные условия будут верны.
program Usloviya;
var a:integer;
begin
readln(a);
if (2*2=4) and (3+2=5) then a:=a+1 else a:=a-1;
write(a);
end.

На этом примере мы видим, что все условия, перечисленные через and верны, потому выполнялось только первое действие, идущее через than. Если хотя бы одно условие не было верно, тогда выполнилось бы второе действие.

• not – логическое действие с условием из одной части. Если условие неверно, то будет выполняться основное действие (первое), если верно – то альтернативное (второе).

program Usloviya;
var b:integer;
begin
readln (b);
if not 5=4 then b:=b+1 else b:=b-1;
write (b);
end.

Условие 5=4 неверно, следовательно, будет выполняться первое действие.

• or (или) – логический оператор для условия из нескольких частей. Основное действие будет выполняться, если верно хотя бы одно условие.
program Usloviya;
var d:integer;
begin
readln (d);
if (5=4+1) or (5=4) then d:=d+1 else d:=d-1;
write(d);
end.

Одно из условий верно, поэтому программа перейдет к основному действию. Тоже повторится, если верными будут все условия. Если же ни одно условие не будет верно, то выполниться альтернативное действие.

• xor – с этим оператором основное действие выполняется, если верно только одно условие. Если верны несколько условий, или же ни одного, то выполнится альтернативное действие.

program Usloviya;
var n:integer;
begin
readln(n);
if (6=4) xor (3=5-2) then n:=n+1 else n:=n-1;
write (n);
end.

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

Теперь мы с вами знакомы и с основами обработки данных. Осталось поговорить о некоторых дополнительные процедурах, и функциях для управления программой, которые вам не раз пригодяться при дальнейшем обучении на Pascal.

3.4. Процедуры и функции для управления программой

Поговорим о упомянутой раньше метке. Эта процедура очень легка в использовании и позволяет при надобности перейти в любую часть программы, «перескочив» одну из следующих частей, или же наоборот, вернуться в предыдущую часть. Прописывается метка очень просто: сперва описываем метку в разделе меток (см. п. 3. Начало работы. Структура программы), а затем указывается место перехода, а нужный оператор помечается меткой.

program Metka;
label 1,2;
var A, B:integer;
begin
readln (A);
2: if A=5 then goto 1; {2: — действие после перехода на соответствующую метку,}
A:=A+1; {goto — переход на метку}
goto 2;
1: write (A);
end.

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

•Delay(время) – остановка программы с задержкой, время в кавычках указывается в миллисекундах.
•Readkey – остановка программы до нажатия клавиши, значение функции – код нажатой клавиши.
•Exit – досрочное завершение процедуры.
Следует заметить, что для работы delay, readkey, и exit необходимо подключить модуль crt (uses crt).

Также посмотрите видео: Паскаль с нуля — первая программа.

4. Заключение

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

Поняв принцип работы с Pascal, вы сможете изучить и другие языки программирования, и в будущем писать уже более «серьезные» программы, чем те с которыми вы познакомились при изучении этой статьи. Продолжайте учиться! Удачи!

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

Понравилась статья? Поделить с друзьями:
  • Как написать приложения для айфона
  • Как написать приложение таймер
  • Как написать приложение прилагается
  • Как написать приложение под андроид на python
  • Как написать приложение под ios