Паскаль лекции. Лекции Паскаль. Программа на языке машинных команд (ее называют объектной). Краткое знакомство
Скачать 1.24 Mb.
|
2 §1. Начало программирования на языке Паскаль Программа - алгоритм, записанный на языке программирования, служащий для выполнения каких-либо действий. Транслятор. Допустим, что написана программа решения задачи на каком-то языке программирования, но компьютер понимает только команды, переведенные в двоичный код. Этот перевод можно осуществить с помощью трансляторов. Транслятор - программа, переводящая текст алгоритма, записанного на каком-то языке программирования, на язык машинных кодов. Различают два вида трансляторов: компиляторы и интерпретаторы. Они различаются с точки зрения выполнения работы. Компилятор читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем загружается в компьютер и выполняется. Интерпретатор переводит и выполняет программу строка за строкой (как синхронный переводчик). Компилятор осуществляет синтаксический контроль программы и при обнаружении ошибок выдает диагностические сообщения. Если ошибок нет, результатом компиляции является программа на языке машинных команд (ее называют объектной). Краткое знакомство. Язык Паскаль появился в 1984 году. Он разработан Н.Виртом в 1968-1970 г.г., получил широкое распространение благодаря наглядности программ и легкости при изучении. Turbo Pascal 7.0 позволяет : а) создавать тексты программ; б) компилировать их(находить и исправлять ошибки); г) компоновать программы из отдельных частей; д) использовать модули библиотек; е) отлаживать и выполнять программы. PDF created with pdfFactory Pro trial version www.pdffactory.com 3 Система ТР состоит из множества файлов, основные из которых : TURBO.EXE, который содержит готовую к работе диалоговую систему программирования ( в нее входят текстовый редактор, компилятор, компоновщик, загрузчик); TURBO.TPL - основная библиотека ТР; TURBO.HLP - справочная служба. Для загрузки программы Turbo Pascal 7.0 надо : 1. Зайти в каталог ТР7 на диске. 2. Найти и запустить файл turbo.exe После загрузки системы экран разделен на три части : 1. Главное меню. 2. Основное, или рабочее, окно. 3. Строка, в которой указывается назначение основных функциональных клавиш. Переход из основного окна в главное меню осуществляется посредством клавиши [ F10] Функциональные клавиши Турбо Паскаль. F1 - помощь; F2 - сохранение редактируемого текста на диске; F3 - загрузка текста с диска в окно редактирования; F9 - компилировать программу, но не выполнять ее; F10 - переход к верхнему меню; CTRL-F9 - выполнить прогон программы (компилировать ее и выполнить); ALT-F5 - просмотр результатов выполнения программы; Esc - переход из главного меню в окно редактирования. ALT-X - выход из системы Турбо Паскаль. PDF created with pdfFactory Pro trial version www.pdffactory.com 4 §2. Алфавит языка Паскаль. Переменные. Типы переменных Алфавит языка Паскаль. Алфавит языка - это конечный набор символов, которые используются при написании любой конструкции на языке. Алфавит языка Паскаль можно разбить на 3 группы : 1. буквы строчные и прописные буквы латинского и русского алфавита; 2. цифры - арабские 0..9 3. специальные символы - (+,-,*,/,=,<,>,<>,<=,>=,.:;{}’ := ( ) ), служебные слова : and, begin,const,div,do,else,for, и т.д. и указывается тип переменных списка. Переменная - это область памяти, названная собственным именем, которая может менять свое значение в процессе выполнения программы. Переменная характеризуется именем, типом и значением. Константа - не изменяет своего значения в процессе выполнения программы, она может быть задана явно своим значением или обозначена именем. Имя (идентификатор) переменной или константы задается латинскими буквами и арабскими цифрами. В качестве идентификатора нельзя использовать служебные слова. Идентификатор должен быть уникальным, т.е. в данном блоке программы один идентификатор не может быть использован для обозначения более чем одного объекта. Например : Zap, gor,X, p1, summa, a28,rar_1, proba, x1,y1,max,min и т.д. Типы переменных Тип Диапазон значений Целый ShortInt -128...127 Integer -32768 ...32767 PDF created with pdfFactory Pro trial version www.pdffactory.com 5 Longint -2147483648 ... 2147483647 Byte 0 .... 255 Word 0 ... 65535 Вещественный Real 2,9 10 -39 ..... 1,7 10 38 11..12 значащих цифр Single 7..8 значащих цифр Double 15..16 значащих цифр Extended 19..20 значащих цифр Comp 19..20 значащих цифр Логический Boolean TRUE FALSE C имвольный Char 1 символ Строковый String Массив символов, по умолчанию длина 256 символов. Массивы array Записи record Множества set Файлы file Указатели pointer PDF created with pdfFactory Pro trial version www.pdffactory.com 6 §3. Операторы присваивания. Оператор ввода-вывода. Арифметические операции. Стандартные функции Оператор присваивания ( := ). переменная переменная := арифметическое выражение функция число или константа Значение выражения из правой части оператора присваивания заменяет текущее значение переменной из левой части. !!! Тип значения выражения должен совпадать с типом переменной ПРИМЕР : а=2; а а=а+2; а Стандартные математические функции abs(x) Абсолютное значение х, т.е. х exp(x) Значением функции является е в степени х. sin(x) и cos(x) Значение синуса или косинуса х, х должен задаваться в радианах. arctan(x) Арктангенс х. ln(x) Натуральный логарифм х (х>0) sqr(x) Квадрат х. sqrt(x) Квадратный корень из х. random(x) Случайное число из диапазона 0<=...< x Pi Значение пи. odd(x) Значение функции true, если х нечетен, и false в противном случае. 2 4 PDF created with pdfFactory Pro trial version www.pdffactory.com 7 inc(x,n) Значением является х увеличенное на n. dec(x,n) Значением является х уменьшенное на n. int(x) Целая часть числа х. frac(x) Дробная часть числа х. trunc(x) Целая часть в форме longint. round(x) Значение х округленное до следующего целого числа. Правила записи арифметических выражений. 1. Все данные, входящие в арифметическое выражение, должны быть одного типа. Допускается использовать вместе данные целого и действительного типа. 2. Записывать все составные части в одну строку без подстрочных и надстрочных индексов. 3. Использовать скобки одного типа - круглые. ( [{ и другие скобки применять запрещается) 4. Нельзя записывать подряд 2 знака арифметических операций. 5. Вычисления выполняются слева направо в соответствии со старшинством операций: 1) вычисление функций; 2) * / DIV ( деление нацело) MOD ( получение остатка от деления) 3) + - Правила записи стандартных функций. 1. Имя функции записывается латинскими буквами. 2. Аргумент функции записывается в круглых скобках после имени функции. 3. Аргументом функции может быть : константа, переменная или арифметическое выражение. PDF created with pdfFactory Pro trial version www.pdffactory.com 8 Например : ax 2 + bx + c записывают так a*x*x +b*x + c ac b 4 2 записывают так sqrt(b*b – 4*a*c) x b c a 3 2 записывают так (a + c – 2*b)/(3-x) Рассмотрим примеры использования арифметических действий : Правильно : VAR a,b : integer; r,s : integer; r:=a div b; {r=3 при a=7, b=2} r:= a mod b; {r=1 при a=7,b=2} s:=a*b; s:=a div b; Неправильно : VAR a,b : integer; r : integer; r:=a/b; { если результат объявлен как целочисленный, нельзя использовать наклонную черту деления} VAR a,b : real; r : integer; r:=a div b; { нельзя использовать операцию div для вещественных чисел} r:=a mod b; { операция mod используется только по отношению к целым числам} VAR a,b : integer; r : real; PDF created with pdfFactory Pro trial version www.pdffactory.com 9 r:=a div b; {r должно быть целым} Слева по отношению к оператору присваивания должен стоять более широкий тип. VAR a : integer; b : real; c : real; c:=a+b { правильно} a:=c+b; { неправильно} Оператор ввода . Read(< список переменных>); Readln(< список переменных>); После выполнения данного оператора программа останавливается и ждет ввода данных с клавиатуры. Если вводятся числовые данные, то их можно ввести через пробел друг за другом, а можно каждый отдельно нажимая в конце ввода Enter. Переменный в <списке переменных> разделяются запятой. Ln за словом Read означает, что после ввода следует перевести курсор на следующую строку. Вводить с клавиатуры можно только значения переменных, но не выражения. READLN(f,b,a); read(s); readln(w); Оператор вывода . Write(‘ комментарии’, <переменные>); Writeln(‘ ком - рии’, <переменные>); Переменный в <списке переменных> разделяются запятой. PDF created with pdfFactory Pro trial version www.pdffactory.com 10 Для вывода целых и действительных чисел можно указывать форматы в операторе Write. Формат указывается через двоеточие после переменной. Write(y:5:2) на вывод значения y отведено 5 позиций, из них 2 на дробную часть. Writeln(‘y=‘,y:8:3) - восемь позиций, на дробную часть 3. Writeln(‘ М=‘,М:4) - переменная М целого типа, на нее отведено 4 позиции. §4. Структура программы. (* комментарии *) PROGRAM < имя программы>; USES - модули; { раздел описаний } LABEL - описание меток; CONST - описание констант; TYPE - описание типов; VAR - описание переменных; PROCEDURE - описание процедур; FINCTION - описание функций; { начало раздела операторов} BEGIN операторы ввода, вывода и обработки данных END. { конец раздела операторов, конец программы} Среди разделов описаний есть раздел описания переменных. Он начинается со служебного слова Var, после которого идет последовательность объявлений переменных, разделенных точкой с запятой. В каждом объявлении перечисляются через запятую имена PDF created with pdfFactory Pro trial version www.pdffactory.com 11 переменных одного типа, после каждого списка имен переменных ставится двоеточие Var f,a : integer; g,y1,y2 : real; s,s1,s2 : char; Раздел описания констант начинается со слова CONST. Пример : Сonst n=25; r=38; m=5.15; Первая программа. Задача 1 : Написать программу, которая вводит значения двух любых чисел, выводит на экран сумму, разность, произведение и частное от деления этих чисел. Ввод каждого числа произвести с отдельной строке. Каждый результат также нужно поместить на отдельную строку, пояснив в комментарии, чему соответствует выводимое число. program exampl_1; var a,b : integer; begin writeln(' Введите первое число’); readln(a); writeln(' Введите второе число’); readln(b); writeln('A+B= ', a+b:5); writeln('A-B= ', a-b:5); writeln('A*B= ', a*b:7); writeln('A div B= ', a div b:5); writeln(' Нажмите PDF created with pdfFactory Pro trial version www.pdffactory.com 12 Сохранение программы. Для того чтобы сохранить программу, необходимо либо, либо : нажать Enter, в вертикальном меню выбрать команду Save as... и нажать клавишу Enter; в появившемся окне ввести имя файла и нажать Enter; Компиляция программы или выйти в верхнее меню и выбрать команду Compile и нажать клавишу Enter; или нажать клавишу ALT-F9. Запуск программы на выполнение. или выйти в верхнее меню и выбрать команду RUN и нажать клавишу Enter; или нажать клавишу CTRL-F9. Алгоритм работы с программой 1. Написать программу на бумаге. 2. Запустить Турво Паскаль. 3. Набрать программу при помощи клавиатуры. 4. Сохранить программу на диске. 5. Запустить программу на компиляцию. 6. Запустить программу на выполнение. Наша программа есть пример линейного алгоритма. Линейные алгоритмы описывают решение задач с последовательным выполнением действий. Обычно такие действия идут в следующем порядке : PDF created with pdfFactory Pro trial version www.pdffactory.com 13 ввод исходных данных (может отсутствовать, тогда данные задаются внутри программы), последовательные команды - обычно вычислительного характера; вывод результатов (должен присутствовать обязательно). Задача 2 : Написать программу определения цифр трехзначного числа. program examp2_1; var a, z1,z2,z3, rez : integer; begin writeln(' Введите число’); readln(a); z1:=a Mod 10; writeln(' Цифра единиц числа - ’z1); z2:=(a Div 10) Mod 10; writeln(' Цифра десятков числа - ’z2); z3:=a Div 100; writeln(' Цифра сотен числа - ’z3); rez:=z3*100+z2*10+z1; writeln(' Это тоже число - ’rez); end. Эксперименты с программой. 1. Введите в качестве исходного данного число 3476589. Убедитесь, что у вас получается неправдоподобный результат. 2. Вместо числа введите какой-нибудь символ. убедитесь, что компьютер выдает сообщение об ошибке “Error 106: Invalid numeric format”. 3. Добавьте лишний знак апострофа в операторе Writeln. Убедитесь, что программа не проходит компиляцию, а система сообщает об ошибке “Error 8: String constant” exceeds line”. 4. Измените программу exampl2_1 для нахождения цифр двузначного числа. Сохраните ее под именем exampl2_2. 5. Измените программу exampl2_2 для нахождения цифр четырехзначного числа. Сохраните ее под именем exampl2_3. Решите следующую задачу : Дано двузначное число. Определить :а) сумму и произведение цифр числа; PDF created with pdfFactory Pro trial version www.pdffactory.com 14 б) число, образованное перестановкой цифр исходного числа. §5. Разветвляющие алгоритмы. Составной оператор Составной оператор представляет собой последовательность операторов, выполняемых в том порядке, в котором они записаны в программе. Он имеет следующий вид : begin оператор; оператор;...оператор; end; Количество слов BEGIN совпадает с количеством слов END. Для того чтобы избежать ошибки при составлении программы, пишите каждую пару BEGIN-END с одной позиции. Разветвляющий алгоритм - это алгоритм, в котором в зависимости от выполнения или невыполнения некоторого условия выполняется либо одна, либо другая последовательность действий. Оператор if или условный оператор Условный оператор может записываться в полной и неполной форме. Полная форма условного оператора : if< условие> then <оператор1> else < оператор2> Обратите внимание на запись служебных слов и операторов. Каждое слово ELSE пишется под своим словом IF. Для большей наглядности и «читаемости» текста программы операторы, следующие за словом THEN и ELSE можно писать на следующей строке. PDF created with pdfFactory Pro trial version www.pdffactory.com 15 Внимание !!!! Перед словом ELSE нельзя ставить точку с запятой. Условие в операторе IF..THEN...ELSE может быть простым или сложным. Простое условие представляет собой логическое выражение, состоящее из двух выражений одинакового типа, соединенных знаком операции отношения (>,<,>=,<>,<=). Сложное условие состоит из простых, соединенных знаками логических операций : OR(или) NOT(не) AND (и). При этом каждое условие ограничено с обеих сторон круглыми скобками. Выполнение оператора IF... THEN... ELSE 1. Проверяется : выполняется или нет условие, стоящее после слова IF. 2. Если условие выполняется, т.е. значение его «истина», то выполняется оператор, стоящий после слова THEN, а затем управление передается оператору программы, записанному после оператора IF ...THEN...ELSE. 3. Если условие оператора IF не выполняется (т.е. оно имеет значение “ложь”), то выполняется оператор, стоящий после слова ELSE, а затем начинает выполняться следующий после IF...THEN...ELSE оператор. Блок-схема полного условного оператора Да Нет условие действие1 действие2 PDF created with pdfFactory Pro trial version www.pdffactory.com 16 Условие Задача 1: Составить программу вывода на экран большего из двух чисел. PROGRAM prim1; USES Crt; var x,y : real; begin ClrScr; (* очищение экрана *) Writeln(‘ Введите два числа’); Readln(x,y); IF x>y THEN Writeln(x) ELSE Writeln(y); end. Неполная форма условного оператора : if< условие> then <оператор> Действие этого оператора отличается от предыдущего том, что в случае невыполнения условия начинает выполняться следующий после IF...THEN...оператор программы. Блок-схема неполного условного оператора нет да PDF created with pdfFactory Pro trial version www.pdffactory.com 17 Задача 2 : Написать программу поиска наибольшего из двух чисел. Найденное число должно быть помещено в переменную МАХ. PROGRAM prim2; USES Crt; var x,y ,max : real; begin ClrScr; (* очищение экрана *) Writeln(‘ Введите два числа’); Readln(x,y); max:=x; IF y>max THEN max:=y; Writeln(max); end. Решая всевозможные задачи часто необходимо выполнять группу операторов либо за словом THEN , либо за словом ELSE. Для того чтобы записать группу действий необходимо использовать составной оператор BEGIN END. 1. If < условие> then begin оператор1; оператор2; оператор n; end else оператор; 2. If < условие> then оператор else begin оператор1; оператор2; оператор n; end; PDF created with pdfFactory Pro trial version www.pdffactory.com 18 3. If < условие> then begin оператор1; оператор2; оператор n; end else begin оператор1; оператор2; оператор n; end Задача 3. Решить квадратное уравнение вида ax 2 + bx +c = 0 План решения задачи : 1. задать коэффициенты a,b,c. 2. вычислить значение дискриминанта. |