PASCALУрок 1.Алгоритм и программа.Алгоритм и программа. Что такое программа? Что такое алгоритм? С сегодняшнего дня наша главная задача – взглянуть на программу не сточки зрения пользователя ЭВМ, а с позиции программиста. Сегодня мы сделаем первый шаг к программированию.Алгоритм – это совокупность чётко сформулированных правил для решения задач за конечное число шагов. Теперь посмотрите внимательно на это определение. Подумайте, сталкивались ли вы когда-либо с подобным явлением – возникала ли у вас необходимость в чётко сформулированных правилах для решения какой-то задачи? Примеры использования алгоритмов человеком: рецепты, инструкции к техническим устройствам, алгоритмы игр (прятки, например). Можно сказать, что алгоритм – это последовательность команд, управляющих работой какого-либо объекта (исполнителя алгоритма).Алгоритм должен обладать некоторыми важными свойствами.^ Свойства алгоритмов:1. Точность и последовательность. Это свойство указывает, что любой алгоритм должен состоять из конкретных действий, следующих в определённом порядке (пример: рецепт приготовления пельменей). Каждая команда должна определять однозначное действие исполнителя.2. Понятность. Алгоритм должен быть понятен его исполнителю, то есть тому, кто его исполняет. Алгоритм должен составляться на конкретного исполнителя.3. Результативность. Это свойство означает, что алгоритм всегда должен приводить к какому-то результату, то есть быть законченным. В противном случае алгоритм называют незаконченным или невыполняемым. Это обычно происходит, когда в алгоритме не хватает некоторых команд, или некоторые команды неверны. Пример (нахождение большего из двух чисел): Даны два числа А и В. Найти большее число. Алгоритм: - вычтем из первого числа второе (А-В); - если получился положительный результат, то первое число больше второго; - если получился отрицательный результат, то второе число больше первого. Пусть А=67, В=43. Пусть А=-24, В=-12. Пусть А=35, В=35. Как видно, в таком алгоритме не хватает команды: «если результат равен 0, то числа равны. Для выполнения алгоритма как правило необходимы какие-то исходные данные: для повара – продукты, для токаря – детали.Теперь давайте с вами пока закроем обсуждение объекта «алгоритм» и перейдём к другому нашему объекту – «программа». И сначала запишем одно из возможных определения этого понятия.^ Программа – это алгоритм, записанный на языке исполнителя. О чём нам говорит данное определение. Прежде всего, мы можем сказать, что программа – это также совокупность чётко сформулированных правил для решения задачи за конечное число шагов. Но чем она отличается от алгоритма? Пример: приготовление пельменей – командный и программный режимы. Т.е., программа это тот же алгоритм, но выполняемый в программном, а не командном режиме и полностью понятный исполнителю (не требует дополнительных пояснений извне). Кроме того, слово программа обычно используют, говоря именно об информатике и ЭВМ, а алгоритм – это более общее понятие.Компьютерные программы тоже состоят из отдельных команд. Самые простые – команды машинного языка: - изобразить на экране точку; - включить звук заданной высоты и громкости: - сложить два числа и т.д. Все эти команды «мелкие», поэтому программа выполнения даже очень простого задания будет состоять из большого числа команд. Пример: рисование окружности. Компьютер рисует каждую геометрическую фигуру по точкам, которые он, как мы определили, умеет рисовать. Таким образом, для прорисовки окружности ЭВМ должна нарисовать последовательность точек, расположенных на определённом расстоянии от центра окружности. Программа для этого будет содержать множество практически одинаковых команд: нарисуй точку там-то, нарисуй точку там… и т.д. Но не проще ли придумать одну команду, которая бы однозначно определяла действия компьютера, не вникая в подробности. И такие команды придуманы. Они называются процедурами. Если присвоить этим процедурам простые названия, то программы будут небольшие и понятные. К примеру, в нашем случае уместна была бы процедура «Окружность», которая являлась бы командой компьютеру выполнить программу рисования окружности по заданным параметрам. А какие параметры (или данные) необходимо здесь знать компьютеру? Расположение центра окружности и величина радиуса. Давайте теперь закрепим сказанное в рабочих тетрадях.^ Программа ЭВМ состоит из отдельных команд. Самые простые – команды машинного языка. Из них состоят более сложные команды – процедуры.Теперь мы можем дать новое определение слову «программа» с точки зрения программиста – человека, который создаёт программы для компьютера. Программа – это алгоритм, записанный с помощью процедур, т.е. команд, понятных и компьютеру и программисту. Для создания таких программ придуманы специальные средства, которые называются языками программирования. Такие языки содержат в себе набор процедур, а также программную среду, позволяющую, скажем так, «записывать» эти процедуры и переводить записанную программу в машинный код. Один из таких языков вам предстоит в дальнейшем изучить и освоить.Таким образом, мы пришли к ещё одному термину – «программирование». Под этим словом понимают как просто процесс создания программ, так и более сложный процесс, подразумевающий решение задачи при помощи ЭВМ посредством построения алгоритмов на специальных алгоритмических языках.^ Основные приёмы программирования:1) Сведение сложного к простому.2) Собственные процедуры.3) Ветвления.Урок 2.Язык программирования Pascal.Язык программирования Pascal.Паскаль (Pascal) – алгоритмический язык программирования высокого уровня. Любой язык программирования содержит, прежде всего, алфавит, из которого строятся команды и другие элементы программы (большинство языков программирования за основу взяли алфавит английского языка). Из алфавита строятся так называемые «слова» (или команды), которые, связываясь между собой при помощи специальных правил (синтаксиса), образуют программу.Алфавит языка Pascal:1. Буквы латинского алфавита.2. Цифры от 0 до 9.3. Специальные символы:+ - * / _ ) ( : ; ‘ и др.4. Буквы русского алфавита.Структура программы (на языке Паскаль): PROGRAM n; заголовок VAR a1;...;a2; раздел описания BEGIN p1;...;p2 раздел операторов END.Команду алгоритма в Паскале принято называть оператором. Оператор содержит указание компьютеру, что надо выполнять в данный момент. Оператор ещё называют процедурой, поскольку каждая команда, написанная на языке высокого уровня, даёт ЭВМ команду выполнять несколько более мелких команд.^ Операторы в программе отделяются друг от друга символом «;».Оператор вывода WRITE. Первый оператор, с которого мы начнём знакомство, даёт компьютеру указание вывести на экран текст. «WRITE» с английского «пиши».^ Общий вид:1. WRITE(параметр)2. WRITELN(параметр) Отличие второго оператора заключается в том, что после его выполнения курсор автоматически переходит на следующую строку. Большинство операторов содержат параметры, которые указываются в круглых скобках. Примеры: WRITE(2005) 2005 WRITE(2*2) 4 WRITE(‘Привет’) Привет WRITE(‘Я’,’изучаю’,’Паскаль’) ЯизучаюПаскаль WRITE(‘12’,’5+1’,5+1,’=’,120+21) 125+16=141При составлении программы все операторы заключаются в логические скобки BEGIN и END.Теперь попробуем создать первую программу на языке Паскаль. Для создания программ созданы системы программирования, которые включают в себя средство для написания программ и средство для перевода текста программы на язык машинного кода и исполнения программы. Такая система существует и для языка Паскаль. Мы рассмотрим систему программирования Borland Pascal версии 7.0. Запустите систему.Составим простейшую программу: PROGRAM PR1; BEGIN WRITELN(‘Дважды два – четыре’); WRITELN(‘2*2=4’); WRITELN(‘Это всем известно’); WRITE(‘ в целом мире’); END.^ Урок 3.Оператор присваивания.Оператор присваивания.Для обозначения исходных данных и результатов вычислений употребляются переменные. В процессе вычислений переменная может принимать разные значения. Для задания значений переменным в Паскале существует ОПЕРАТОР ПРИСВАИВАНИЯ.^ Общий вид:ИМЯ ПЕРЕМЕННОЙ := ЗНАЧЕНИЕ ПЕРЕМЕННОЙ := - это знак присваивания. Имя переменной – как правило, латинская буква.Значением переменной может быть не только число, но и другая переменная, а также арифметическое выражение. Пример: a:=6 (с этого момента компьютер будет помнить, что а=6) а:=2*3+4 (а=10) b:=a (b=10) y:=a+b+1 (y=21).Если необходимо результат присваивания вывести на экран, используют оператор вывода WRITE. Пример: v:=-2+10; h:=10*v; s:=v+h; WRITE(s); END.ВНИМАНИЕ! Все переменные в выражениях должны иметь какое-то значение (числовое), иначе результат не получится.^ Все переменные, используемые в программе, описываются в разделе описания переменных, который имеет вид:VAR__имя переменной 1, имя переменной 2 … имя переменной N : тип переменной;Пример (набрать программу):PROGRAM_PR2;VAR a,b,y:INTEGER;BEGINa:=10;b:=5;y:=a+b;WRITE(‘y=’,y)END.Типы переменных:INTEGER(целый) – описывает переменный целого типа (не дробные). при этом значение числа должно находиться в диапазоне от -32768 до 32767.^ LONGINT(длинный целый) – диапазон от -2147483648 до 2147483647.REAL(вещественный) – описывает дробные переменные.Переменная в ходе выполнения программы может менять своё значение сколько угодно раз, но не может менять тип.Пример (набрать программу): PROGRAM_PR3; VAR_k,l:INTEGER; s:REAL; BEGIN k:=10; l:=4; s:=5*k*l; WRITELN(‘Первое значение S=’,s); k:=15; s:=k/l; WRITE(‘Второе значение S=’,s) END. {ответы: s=200 и s=3,75}^ Именем переменной может служить любая последовательность латинских букв, цифр и знака подчёркивания, но не начинающаяся с цифры. Например: Верное написание Неверное написание xvelichinasumma1polnaya_summa жa*b2abpolnaya summa ^ Урок 4.Арифметические выражения.Арифметические выражения.Основные арифметические действия: + - * /. Основное правило составления арифметических выражений в Паскале: в первую очередь выполняются вычисления в скобках, при этом приоритет всегда имеют действия * и /, а затем + и -. Основные математические функции: SQR(x) – x2 SQRT(x) - ABS(x) - SIN(x), COS(x)Урок 5.Арифметические выражения.Самостоятельная работа: задания 1-2 из сборника «ЗадачиПаскаль.doc».Урок 6.Арифметические выражения.Разбор задачи, содержащей сложные арифметические выражения.program ar;var a,b,c,d,e,f:real;begine:=2;c:=sqrt(cos(e-1));d:=c/(e*e);b:=(d+2)/e;a:=c*(d+b);f:=a/(b*c/(d*e));writeln(f) end.Самостоятельная работа: задание 3 из сборника «ЗадачиПаскаль.doc».^ Урок 7.Арифметические выражения.PROGRAM Arifm; VAR k:INTEGER; x,y,z:REAL; BEGIN k:=2; x:=SQR(SQR(SQR((k+1)/(k-1)))); y:=SIN(SQRT(k*k*k+1))/SQR(COS(7/(2*k))); z:=(1+SQR(SIN(SQRT(x+1))))/COS(1.2*y-4); WRITELN('Z=',z:3:3) END.Ответ: Z=5.833.В записи десятичной дроби в Паскале дробная часть отделяется от целой не запятой, а точкой.Для удобного отображения дробного числа на экране в оператор WRITE после имени переменной добавляют параметр, определяющий количество знаков перед запятой и после неё (например, S:3:2).Сообщения об ошибках: 1. Сотрите точку после END.Unexpected end of file – неожиданный конец файла. При этом курсор как правило помещается в то место, где обнаружена ошибка. 2. Сотрите ; после любого из операторов.“;” expected – ждал точку с запятой. 3. Вместо WRITELN напишите WITELN.Unknown identifier – неизвестное имя.Урок 8.Арифметические выражения.Контрольная работа: Задания из файла «Паскаль Арифметика 1.doc».Урок 9.Оператор ввода READ.Оператор ввода READ.Оператор ввода предназначен для передачи пользователем исходных данных программы в компьютер с помощью клавиатуры. По окончанию ввода данных переменным присваиваются вводимые значения, которые затем используются в ходе выполнения программы.^ Общий вид:1. READ(список переменных);2. READLN(список переменных); Различие между этими двумя формами то же, что и в операторе WRITE.Число переменных в списке может быть любым. Если переменных несколько, то они разделяются запятыми. При вводе переменных с клавиатуры после каждого значения необходимо нажимать клавишу ENTER. Пример (составим программу, вычисляющую и выводящую на экран сумму двух любых чисел, вводимых пользователем с клавиатуры):PROGRAM RD;VAR a,b,s:REAL;^ BEGINWRITELN(‘Введите значения переменных a и b’);READLN(a,b);s:=a+b;WRITELN(‘S=’,s:3:0)END.Добавив в программу оператор READLN без списка переменных в скобках, мы тем самым прекратим выполнение программы до нажатия клавиши ENTER. Т.е. компьютер будет ждать от нас ввода переменных и нажатия ENTER, но так как переменных вводить не надо, то нужно только нажать ENTER.PROGRAM RD;VAR a,b,s:REAL;^ BEGINWRITELN(‘Введите значения переменных a и b’);READLN(a,b);s:=a+b;WRITELN(‘S=’,s:3:0);READLNEND.Рассмотрим такой пример: Составить программу вычисления площади окружности радиуса R (значение радиуса пользователь вводит с клавиатуры). PROGRAM Sokr; VAR r,s:REAL; BEGIN WRITELN('Введите значение радиуса'); READLN(r); s:=3.14*SQR(r); WRITELN('Площадь окружности равна ',s:3:1); READLN END.Самостоятельная работа: задание 4 из сборника «ЗадачиПаскаль.doc».Урок 10.Оператор ввода.Самостоятельная работа: задания 5-7 из сборника «ЗадачиПаскаль.doc».Урок 11.Строковые переменные.Строковые переменные.Для работы с текстом в Паскале можно использовать строковый тип переменных ^ STRING. Переменной, описанной этим типом, можно присвоить в программе не числовое значение, а набор символов (текст) до 255 знаков. Пример: PROGRAM Stroka; VAR a:STRING; BEGIN WRITELN(‘Введите слово’); READLN(a); WRITELN(‘Вы ввели слово ‘,a); READLN END.Пример 2. Составить программу, ведущую диалог с пользователем:Компьютер: Привет! Как тебя зовут?Пользователь: ВасяКомпьютер: Очень приятно, Вася! А сколько тебе лет?Пользователь: 15Компьютер: Ого! Целых 15 лет! Ты уже совсем взрослый!PROGRAM DIALOG; VAR imya:STRING; vozrast:INTEGER; BEGIN WRITELN(‘Привет! Как тебя зовут?’); READLN(imya); WRITELN(‘Очень приятно, ‘,imya,’! А сколько тебе лет?’); READLN(vozrast); WRITELN(‘Ого! Целых ‘,vozrast,’ лет! Ты уже совсем взрослый!’); READLN END.Самостоятельная работа: Составить программу, которая подсчитывает и выводит на экран корень, квадрат и куб числа, введённого пользователем с клавиатуры. Решение:^ PROGRAM cub;VAR x,kor,kw,kub:REAL;BEGINWRITELN('Введите число:');READLN(x);kor:=SQRT(X);kw:=SQR(X);kub:=x*x*x;WRITELN('Корень числа равен ',kor:5:1,', квадрат числа равен ',kw:5:1,', куб равен ',kub:5:1);^ READLNEND.Урок 12.Условный оператор.Условный оператор.Предположим, нам необходимо составить программу, которая перемножала бы два числа, определяла, больше или меньше это произведение, чем 2000, и выводила сообщение на экран («Произведение большое» или «Произведение маленькое»). Составим блок-схему алгоритма решения этой задачи:Данный алгоритм имеет ветвление.^ Для программирования ветвлений в Паскале используют условный оператор, который имеет следующий вид:IF условие THEN оператор1 ELSE оператор2; Например:IF a>b THEN x:=a-b ELSE x:=a+b;(если a>b тогда x=a-b иначе x=a+b). Вернёмся к нашей задаче. Программа для её решения будет выглядеть так: PROGRAM Uslov; VAR a1,a2,y: REAL; BEGIN WRITELN(‘Введите первое число’); READLN(a1); WRITELN(‘Введите второе число’); READLN(a2); y:=a1*a2; IF y>2000 THEN WRITELN(‘Произведение большое’) ELSE WRITELN(‘Произведение маленькое’); READLN END.^ Пример: составить программу, подсчитывающую и выводящую на экран значение переменной D, если известно, что ; учесть, что если a-1=0, то данная задача не решаема.PROGRAM Delenie;VAR a,b,d: REAL;BEGINREADLN(a,b);IF a=1 THENWRITELN(‘Решений нет’)ELSEd:=a*b*b/(a-1);WRITELN(‘D=’,d:3:2);READLNEND.Рассмотрим ещё раз схему: IF условие THEN оператор1 ELSE оператор2; Под условием понимают два арифметических выражения, разделённых знаком сравнения.^ Знаки сравнения: Математика > = ≥ ≤ ≠ Паскаль > = >= ^ Условный оператор в некоторых случаях пишут в краткой форме:IF условие THEN оператор; Например: s:=6; IF s s:=s+1; WRITELN(s); Данный фрагмент программы выведет на экран 7, а не 16. Однако, если s:=-6, тогда будет s равно 5 (т.к. условие выполнится). То есть, такая форма условного оператора подразумевает, что нет какого-то противоположного действия, хотя ветвление всё же присутствует.Самостоятельная работа: задание 9 из сборника «ЗадачиПаскаль.doc».Урок 13.Условный оператор.Самостоятельная работа: задания 10-11 из сборника «ЗадачиПаскаль.doc». Дополнительное задание 12 (Составить программу «калькулятор»): program kalk; var a,b:integer; x:string; f:real; begin writeln('Введите арифметическое действие’); readln(a); readln(x); readln(b); if x='+' then f:=a+b; if x='-' then f:=a-b; if x='*' then f:=a*b; if x='/' then f:=a/b; writeln(f:3:1); readln end.Урок 14.Составной оператор.Составной оператор.Составной оператор – это набор операторов, заключённых в логические скобки (BEGIN и END), и определяющийся в программе как один оператор. Вот фрагмент программы, которая складывает два числа и выводит результат на экран: x:=a+b; WRITELN(‘Сумма равна ‘,x); А вот фрагмент, который перемножает два числа и выводит ответ: x:=a*b; WRITELN(‘Произведение равно’,x); Пусть нам необходимо составить программу, которая по желанию пользователя либо складывала, либо перемножала введённые числа (т.е. пользователь вводит с клавиатуры два любых числа и приказывает либо складывать, либо перемножать их).^ PROGRAM Chisla;VAR Otvet: STRING;a,b: INTEGER;BEGINWRITELN(‘Введите два числа’);READLN(a,b);WRITELN(‘Сложить или умножить?’);READLN(Otvet);IF Otvet=’сложить’ THENBEGINx:=a+b;WRITELN(‘Сумма равна ‘,x);ENDELSEBEGINx:=a*b;WRITELN(‘Произведение равно ‘,x);END;READLNEND.В данной программе можно выделить две похожие структуры – набора операторов, заключённых в логические скобки BEGIN/END. Такие структуры называют составными операторами. Составной оператор – это набор операторов, заключённых в логические скобки (BEGIN и END), и определяющийся в программе как один оператор. При использовании в программе составных операторов, а также при составлении достаточно больших по объёму программ, очень удобно использовать ступенчатую запись программы, при которой составные операторы пишутся с некоторым отступом от левого края страницы. Такая запись облегчает чтение программы и позволяет избегать некоторых ошибок в написании. Также полезно в записи программ: - каждый оператор писать с новой строки; - длинные операторы писать в несколько строк, при этом парные слова записывать друг под другом.Самостоятельная работа: Написать программу, которая по желанию пользователя возводила в квадрат или извлекала корень из введённого числа. Program sostawnoy_operator; var x,otvet:integer; y:real; begin writeln('Введи число'); readln(x); writeln('Что найти: корень или квадрат?’); readln(otvet); if otvet=’квадрат’ then begin y:=x*x; writeln('Квадрат равен ',y:5:2); end else begin if x begin y:=sqrt(x); writeln(‘Корень равен ',y:5:2); end; end; readln end.Урок 15.Циклы в Паскале.Циклы в Паскале.В своей жизненной практике человек постоянно встречается с ситуациями, для решения которых требуется многократно повторять одни и те же действия, пока не выполнится некоторое заранее определённое условие. Например, нам необходимо перевести английский текст на русский язык. Для решения этой задачи мы используем такой алгоритм: - прочесть предложение; - перевести предложение; - записать перевод в тетрадь; - если в тексте остались непереведённые предложения, то перейти к шагу 1; - завершить работу. А вот пример из информатики. Алгоритм перевода числа из 10-й системы счисления в 2-ю: 1. Разделить число на 2 и записать частное. 2. Разделить частное на 2. 3. Сравнить получившееся частное с числом 2. 4. Если частное больше 2, то перейти к шагу 2. 5. Прекратить деление, записать ответ.Такие алгоритмические структуры, которые состоят из серии команд, выполняемых многократно, называются циклами.Цикл – это последовательность операций, которые выполняются неоднократно. Перечень повторяющихся команд называют «телом цикла». Можно выделить три типа циклов: 1. Цикл с постусловием. 2. Цикл с предусловием. 3. Цикл со счётчиком. Для описания каждого из этих типов в Паскале существует свой оператор.1. Цикл с постусловием (REPEAT). Структура:Принцип действия оператора: Сначала компьютер по очереди выполняет операторы, стоящие после слова REPEAT, пока не дойдёт до слова UNTIL. Если условие ложно, то компьютер снова по очереди выполнит эти операторы и снова проверит истинность условия и т.д. Если условие оказывается истинным, то работа оператора REPEAT прекращается и компьютер переходит к выполнению следующих команд.Пример: Написать программу, которая выводила бы на экран цифры от 0 до 20 в столбик. PROGRAM CIKL; VAR a:INTEGER; BEGIN a:=0; REPEAT WRITELN(a); a:=a+1 UNTIL a>20; READLN END.Самостоятельная работа: Задание 2 из сборника «Паскаль Циклы».Урок 16.Циклы в Паскале.Самостоятельная работа: Задание 3 из сборника «Паскаль Циклы».Урок 17.Циклы в Паскале.2. Цикл с предусловием (WHILE). Структура:Принцип действия оператора: Сначала компьютер проверяет истинность условия, стоящего после слова WHILE. Если условие истинно, то выполняется оператор, стоящий после слова DO. Затем снова проверяется истинность условия и т.д. Если условие ложно, то оператор WHILE прекращает свою работу и компьютер переходит к выполнению следующего оператора.Пример: Написать программу, которая выводила бы на экран цифры от 0 до 20 в столбик. PROGRAM CIKL; VAR a:INTEGER; BEGIN a:=0; WHILE a BEGIN WRITELN(a); a:=a+1; END; READLN END.Самостоятельная работа: Задание 2 и 3 из сборника «Паскаль Циклы».Урок 18.Циклы в Паскале.Отличия REPEAT от WHILE:1) Программа выходит из цикла REPEAT тогда, когда условие истинно, а из WHILE, когда условие ложно.2) WHILE может ни разу ни разу не выполнить оператор, стоящий после слова DO, а REPEAT хотя бы раз стоящие после него команды выполнит. Например: k:=8REPEAT k:=1UNTIL 3>2;WRITELN(k);на экране будет 1. k:=8;WHILE 2>3 DOk:=1;WRITELN(k);на экране будет 8. Самостоятельная работа: Задания 4,5 из сборника «Паскаль Циклы».Задача 4: PROGRAM CIKL; VAR a,b:INTEGER; BEGIN b:=0; REPEAT a:=1; b:=b+1; REPEAT WRITE(a,' '); a:=a+1 UNTIL a>b; WRITELN UNTIL b>20; READLN END.Задача 5: PROGRAM PAROL; VAR p:STRING; BEGIN REPEAT WRITELN('Введите пароль!'); READLN(p) UNTIL p='пароль'; WRITELN('Пароль правильный.'); READLN END.(программу можно усовершенствовать, добавив перед UNTIL такую строку: IF p’пароль’ THEN WRITELN(‘Пароль неверный!’)Урок 19-20.Циклы в Паскале.3. Цикл со счётчиком (FOR). Этот цикл ещё называют циклом с известным количеством повторений. Структура: Пример: составить программу, выводящую на экран 200 раз слово Паскаль. PROGRAM CIKL;VAR i:INTEGER;BEGINFOR i:=1 TO 200 DO WRITELN(‘Паскаль’);READLNEND. PROGRAM CIKL;VAR s:INTEGER;BEGIN s:=1;REPEAT WRITELN(‘Паскаль’);s:=s+1UNTIL s>200;READLNEND. Цикл FOR используется для описания заранее известного количества повторений. Счётчик – переменная порядкового типа (например, INTEGER). Начальное и конечное значение – целое число, переменная или арифметическое выражение. Каждый раз при выполнении цикла значение счётчика увеличивается на 1 и сравнивается с конечным, до тех пор, пока не станет больше его. ВНИМАНИЕ: конечное значение должно быть больше начального, в противном случае вместо слова TO надо писать DOWNTO. Пример: PROGRAM CIKL; VAR i:INTEGER; BEGIN FOR i:=200 DOWNTO 1 DO WRITE(I,’ ‘); READLN END.Практическая работа: Задача 1: Написать программу, выводящую на экран в столбик все целые числа из интервала от a до b (интервал задаётся пользователем), а на следующей строке – сумму этих чисел. (задача 3 из сборника «ПаскальЦиклы»). program ciklfor; var i,a,b,s:integer; begin writeln('Введите два числа'); readln(a,b); s:=0; for i:=a to b do begin writeln(i,' '); s:=s+i; end; write(s); readln end.Задача 2: Доработать предыдущую программу так, чтоб она выполнялась также при условии a>b. program ciklfor; var i,a,b,s:integer; begin writeln('Введите два числа'); readln(a,b); s:=0; if a for i:=a to b do begin writeln(i,' '); s:=s+i; end else for i:=a downto b do begin writeln(i,' '); s:=s+i; end; write(s); readln end. Задача 3: Написать программу, которая выводит таблицу квадратов первых десяти целых положительных чисел. Ниже представлен рекомендуемый вид экрана во время работы программы. Таблица квадратовЧисло Квадрат149162536496481100PROGRAM TABLKWADR;VAR i:INTEGER;BEGINWRITELN('Таблица квадратов');WRITELN('Число Квадрат');FOR i:=1 TO 10 DO BEGIN WRITE(i,' '); WRITELN(i*i); END;READLN END.Дополнительное задание: задачи №6 и №7 из сборника «ПаскальЦиклы». №6: PROGRAM PAROL; VAR p:STRING; i:INTEGER; BEGIN for i:=1 to 3 do begin WRITELN('Введи пароль!'); READLN(p); IF p'пароль' THEN WRITELN('Пароль неверный!') ELSE begin WRITELN('Пароль правильный.'); exit; end; end; WRITELN('Ты не знаешь пароля! Пошёл вон!'); READLN END.№7: program summator; var i,s,n,a:integer; begin s:=0; writeln('Сколько чисел нужно сложить?'); readln(n); for i:=1 to n do begin write('Введите ',i,'-е число:'); readln(a); s:=s+a; end; write('Сумма введённых чисел равна ',s); readln end. Урок 21.Работа со звуком в Паскале.Работа со звуком в Паскале. Для создания звука в Паскале используются операторы, входящие в стандартный модуль CRT: SOUND(x) – включает звук с частотой x (Гц). NOSOUND – выключает звук. DELAY(x) – приостанавливает работу программы на x миллисекунд. Для использования этих операторов необходимо вызвать модуль CRT в разделе модулей (USES CRT). Пример: PROGRAM ZWUK; USES CRT; BEGIN SOUND(300); DELAY(2000); NOSOUND; END. Параметрами операторов могут быть не только числа, но и переменные. Пример: PROGRAM MUSIC; USES CRT; VAR s:INTEGER: BEGIN S:=20; WHILE s BEGIN SOUND(s); DELAY(100); S:=s+20; END; NOSOUND; END.Практическая работа: Написать программу, имитирующую сигнализацию автомобиля.Урок 22.Процедуры пользователя.Процедуры пользователя.Как уже говорилось ранее, все операторы Паскаля, как и любого другого языка высокого уровня – это процедуры. Т.е. система программирования рассматривает оператор как набор более мелких команд. Таким образом, операторы READ, WRITE, REPEAT…, IF…, SOUND и т.д. являются процедурами. Их ещё называют стандартными процедурами. Часть стандартных процедур (операторов) требует для их вызова лишь написания в программе, а часть входит в независимые модули, которые сначала нужно включить в программу, описав их в разделе USES. Но сколько бы ни существовало стандартных процедур, всех возможных задач, которые возникают в программировании, они не решат. Поэтому система программирования должна включать в себя возможность создания процедур. Процедура, определяемая пользователем, это независимая часть программы, которую после однократного описания можно многократно вызывать по имени из последующих частей программы для выполнения определённых действий. Процедуры пользователя описываются сразу после раздела описания переменных по следующей схеме: PROCEDURE имя; Описательная часть; BEGIN Исполнительная часть; END;Для запуска описанной таким образом процедуры достаточно в программе указать её имя. Пример: Написать программу, формирующую сигнал SOS азбукой Морзе. PROGRAM MORZE; USES CRT; VAR i:integer; PROCEDURE t; BEGIN SOUND(700);DELAY(800);NOSOUND;DELAY(400); END; PROCEDURE TY; BEGIN SOUND(700);DELAY(3000);NOSOUND;DELAY(3000); END;BEGIN FOR I:=1 TO 5 DO BEGIN ty;ty;ty;t;t;t;ty;ty;ty;DELAY(3000); END.А если создать несколько процедур, каждая из которых будет воспроизводить ноту, то можно написать мелодию.Пример: Напишем программу, выводящую звук заданной пользователем частоты. program melodiya; uses CRT; var s:integer; procedure a; begin sound(s);delay(30000);nosound; end; begin write('Введите частоту в герцах: '); readln(s); writeln('Слушайте звук!'); a; end.Пример: Напишем программу, выводящую мелодию, сочинённую пользователем. Ноты мелодии пользователь вводит в виде их частот. program melodiya; uses CRT; var a:array[1..20] of integer; i,v,n:integer; procedure nota; begin sound(v);delay(30000);nosound;delay(30000); end; begin writeln('Сколько нот вмелодии?'); readln(n); writeln('Введите мелодию:'); for i:=1 to n do readln(a[i]); writeln('Слушаем?'); readln; for i:=1 to n do begin v:=a[i]; nota; end; readln; end.Практическая работа: 1. Составьте программу, которая выводит звук определённой частоты, а пользователь определяет частоту этого звука: если указал частоту ниже или выше, то программа сообщает об этом и снова выводит звук, пока не получит правильный ответ. 2.