Rez паскаль что это
Урок 1. Первая программа на языке Паскаль
Урок из серии: «Язык программирования Паскаль»
Для начала написания непосредственно кода программы надо знать ее структуру: как правильно записываются команды, в каком порядке.
На первом занятии вы узнаете:
Для создания программ можно использовать среду программирования Pascal ABC.
Структура программы
Программа на языке Паскаль начинается с заголовка, имеющего следующий вид:
За ним идет раздел описаний, в котором должны быть описаны все идентификаторы (константы, переменные, типы, процедуры, функции, метки), которые будут использованы в программе.
После раздела описаний идет раздел операторов, который начинается со служебного слова begin (начало) и заканчивается служебным словом end (конец).
В этом разделе задаются действия над объектами программы, описанными в предыдущем разделе. Операторы в этом разделе отделяются друг от друга точкой с запятой. После последнего слова end ставится точка.
Общий вид программы:
В разделе описаний не обязательно должны быть все разделы.
В наших первых программах будет только один раздел — раздел Var (variable — переменная), в котором мы будем объявлять те переменные, которые будем использовать в разделе операторов.
Как написать простейшую программу
Рассмотрим простейшую задачу с линейным алгоритмом.
Для записи программы с линейным алгоритмом нам нужно описать входные и выходные данные, нужны процедуры для вводы и вывода данных и оператор присваивания.
Задача. Ввести с клавиатуры два числа. Вывести на экран их произведение.
Пояснения к программе
Имя этой программы example_1.
Из разделов описаний имеется лишь один — раздел переменных. Он начинается со служебного слова var, после которого идет последовательность объявления переменных, разделенных точкой с запятой.
В каждом объявлении перечисляются через запятую имена переменных одного типа, после чего ставится двоеточие и указывается тип переменных.
В нашем примере описаны три переменные: все они (a, b и rez) имеют целый тип (integer).
После описательной части идет раздел операторов, начинающийся со служебного слова begin.
Первый встречающийся оператор — это writeln(‘текст’); — записать (вывести) на экран текст, заключенный между апострофами, ln добавляется в конце этого оператора для того, чтобы курсор автоматически переходил на следующую строку при выводе на экран текстов или результатов выполнения программы.
Следующий оператор — это readln(a,b); — читать данные с клавиатуры.
В данном случае во время выполнения программы необходимо ввести два целых числа через пробел, тогда переменной a присваивается значение, равное первому введенному числу, а переменной b присваивается значение, равное второму введенному числу.
Например, вы ввели числа 12 и 45, тогда a = 12, а b = 45. В конце этого оператора также можно ставить ln.
Следующий оператор — это снова оператор writeln(‘текст’,rez) — он выведет на экран текст, заключенный между апострофами, а за ним значение переменной rez.
Затем следующий оператор writeln выведет на экран сообщение: »Нажмите », а оператор readln будет ожидать этого нажатия в окне выполнения.
Завершает раздел операторов end с точкой.
Выполнение программы
После запуска программы на экране появляется сообщение:
Введите два целых числа через пробел
Коротко о главном
Программа на языке Pascal состоит из заголовка, раздела описаний и раздела операторов.
Если программа содержит несколько операторов, то они разделяются знаком точки с запятой.
Начало и конец раздела операторов обозначаются ключевыми словами begin и end. После слова end в конце текста программы всегда ставиться точка. Она означает, что программа закончена.
Команда вывода на экран — write(‘текст’) и writeln(‘текст’) отличаются положением курсора после выполнения команды. Команда write(‘текст’) оставляет курсор на той же строке, что и текст, а writeln переводит курсор на новую строку.
Компиляция выполняется клавишей F9. Для выполнения программы надо нажать Ctrl+9.
Презентация была опубликована 8 лет назад пользователемПотап Якунчиков
Похожие презентации
Презентация на тему: » 1 Первая программа на языке Паскаль в среде Турбо Program name_program; Var ; <здесь описываются все идентификаторы: константы, переменные, типы, процедуры," — Транскрипт:
2 2 Пример программы Program Example_1; Var a,b,rez: Integer; Begin Write(Введите два числа через пробел ); Readln(a,b); rez:= a*b; Writeln(Их произведение =,rez); Writeln(Нажмите ); Readln End. Программа вводит два целых числа, вычисляет их произведение и выводит результат на экран.
3 Program Example_1; Var a,b,rez: Integer; Имя программы Example_1 ; имя программы состоит только из букв, цифр, и некоторых символов, имя должно начинаться с буквы, в имени программы не должно быть пробелов. В разделе описаний имеется лишь раздел переменных. Он начинается со служебного слова Var. Дальше объявляются переменные. Имена переменных одного типа перечисляются через запятую. a,b,rez: после чего ставится двоеточие и указывается тип переменных. В данной задаче переменные имеют целый тип ( Integer ), т. е. допускаются только целые числа. При выполнении данного указания в памяти компьютера выделяются именованные ячейки памяти соответствующего размера.
5 5 Readln(a,b); Читать данные с клавиатуры. В данном случае необходимо ввести два целых числа через пробел, тогда переменной а присваивается значение, равное первому введенному числу, а переменной b – равное второму введенному числу. Например, ввели числа 12 и 45, тогда а= 12, а b= 45 ab 1245
8 8 Program Example_1; Var a,b,rez: Integer; Begin Write(Введите два числа через пробел ); Readln(a,b); rez:= a*b; Writeln(Их произведение =,rez); Writeln(Нажмите ); Readln End. ; (точка с запятой) – завершает ввод оператора. Можно не ставить перед End
10 10 Задания Дополнить программу: найти и распечатать сумму чисел а и в; разность чисел а и в. Изменить программу: найти сумму и произведение четырех чисел. Выведите на экран свою фамилию, имя и отчество, в следующей строке – дату рождения.
11 11 Найдите значение выражения a + (d – 12)*3 (c – 5)*k где значения переменных a, d, c, и k вводятся с клавиатуры. Вычислить расстояние между двумя точками с координатами х1, у1 и х2, у2.
Pascal: Занятие №1. Часть 3: Типы данных в Паскаль
Типы данных в Паскале
Паскаль — это типизированный язык программирования. Это означает, что переменные, в которых хранятся данные, имеют определенный тип данных. Т.е. программе напрямую надо указать, какие данные могут храниться в той или иной переменной: текстовые данные, числовые данные, если числовые — то целочисленные или дробные, и т.п. Это необходимо в первую очередь для того чтобы компьютер «знал», какие операции можно выполнять с этими переменными и как правильно их выполнять.
Например, сложение текстовых данных, или как это правильно называется в программировании — конкатенация — это обычное слияние строк, тогда как сложение числовых данных происходит поразрядно, кроме того, дробные и целые числа складываются тоже по-разному. То же самое касается и других операций.
Рассмотрим наиболее распространенные в Pascal типы данных.
Целочисленные типы данных в Паскаль
Тип | Диапазон | Требуемая память (байт) |
byte | 0..255 | 1 |
shortint | -128..127 | 1 |
integer | -32768.. 32767 | 2 |
word | 0..65535 | 2 |
longint | -2147483648..2147483647 | 4 |
Нужно иметь в виду, что при написании программ в паскале integer (в переводе с англ. целое) является наиболее часто используемым, так как диапазон значений наиболее востребуем. Если необходим более широкий диапазон, используется longint (long integer, в переводе с англ. длинное целое). Тип byte в Паскале используется, когда нет необходимости работать с отрицательными значениями, то же самое касается и типа word (только диапазон значений здесь значительно больше).
Примеры того, как описываются (объявляются) переменные в Паскале:
Pascal | PascalABC.NET | |||||||||||||||||||||||||||||||||
Pascal | PascalABC.NET | |||||||||||||||||||||||||||||||
ДЕЙСТВИЕ | РЕЗУЛЬТАТ | СМЫСЛ |
---|---|---|
2 + 3 | 5 | плюс |
4 — 1 | 3 | минус |
2 * 3 | 6 | умножить |
17 div 5 | 3 | целочисленное деление |
17 mod 5 | 2 | остаток от целочисленного деления |
Порядок выполнения операций
var a: integer; b: real; begin a := 1; writeln(‘a := 1; a = ‘,a); a += 2; // Увеличение на 2 writeln(‘a += 2; a = ‘,a); a *= 3; // Умножение на 3 writeln(‘a *= 3; a = ‘,a); writeln; b := 6; writeln(‘b := 6; b = ‘,b); r /= 2; writeln(‘b /= 2; b = ‘,b); end.
Стандартные арифметические процедуры и функции Pascal
Здесь стоит более подробно остановиться на некоторых арифметических операциях.
Пример операции inc:
Более сложное использование процедуры inc:
Inc(x,n) где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.
Пример использования функции odd:
begin WriteLn(Odd(5));
Пример использования процедуры sqr в Pascal:
var x:integer; begin x:=3; writeln(sqr(x)); <ответ 9>end.
Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:
Пример использования процедуры sqrt в Pascal:
var x:integer; begin x:=9; writeln(sqrt(x)); <ответ 3>end.
Pascal: Занятие № 13. Записи в Паскале
Записи в Паскале
Записи в Паскале – структурированный комбинированный тип данных. Запись состоит из определенного числа компонент, называемых полями, которые могут быть разного типа.
Описание записи в Паскале
Общий вид описания типа record в Паскаль:
Но лучше создавать пользовательский тип записи и использовать переменную данного типа:
Рассмотрим примеры объявления и создания записи в Паскале.
type mydate = record month: 1..12; day: 1..31; year: integer end; var d: mydate;
Обращение к полям записи
type mydate = record month: 1..12; day: 1..31; year: integer end; var d: mydate; begin d.day:=1; d.month:=12; readln(d.year); writeln(d.day,’/’,d.month,’/’,d.year); end.
Записи в виде двумерной таблицы
Часто записи используются в виде двумерной таблицы, каждый столбец которой имеет свой тип.
Таким образом, если описана двумерная таблица, то ее начальные значения задаются как вектор, каждый компонент которого является записью.
Рассмотрим пример использования записи-таблицы:
1 | 2 | 3 | |
---|---|---|---|
Day | 2 | 14 | 14 |
Month | 1 | 2 | 12 |
Year | 1985 | 1987 | 1989 |
Задать данные таблицы в виде записи. Объявить массив дней рождения и вывести дату первого дня рождения.
type zap1= record day:1..31; month: 1..12; year: 1900..2100; end; var birthdays:array[1..100] of zap1; begin birthdays[1].day:=2; birthdays[2].day:=14; birthdays[3].day:=14; birthdays[1].month:=1; birthdays[2].month:=2; birthdays[3].month:=12; birthdays[1].year:=1985; birthdays[2].year:=1987; birthdays[3].year:=1989; writeln(birthdays[1].day); end.
Использование конструкции with при работе с записями
При работе с записями есть возможность избавиться от постоянного префикса в виде обращения к названию переменной. Сравним два примера:
Во втором примере значительно проще обращаться к полям записи, избавившись от префикса, благодаря with
Внимание: Ключевое слово with при работе с массивами:
Записи при работе с файлами
type t_subscriber = record surname: string[20]; tel: LongInt; end; var subscriber: t_subscriber; f: file of t_subscriber; i: Integer; begin Assign(f,’notebook.dat’); Rewrite(f); for i:=1 to 5 do begin with subscriber do begin Write(‘Surname: ‘); ReadLn(surname); Write(‘Phone: ‘); ReadLn(tel); end; Write(f, subscriber); end; Close(f); end.
// Запись в файл: write(f, toys[1]); // Считывание из файла: read(f,toys_1[1]);
Рассмотрим пример последовательного доступа к типизированному файлу с использованием записей:
type t_subscriber = record surname: string[20]; tel: integer; end; var subscriber: t_subscriber; f: file of t_subscriber; s: string; begin Assign(f,’z:\pascal.dat’); rewrite(f); subscriber.surname:=’ivanov’; subscriber.tel:=36233357; write(f,subscriber); subscriber.surname:=’petrov’; subscriber.tel:=236244475; write(f,subscriber); close(f); Reset(f); while not Eof(f) do begin Read(f, subscriber); with subscriber do begin Str(tel,s); if Copy(s,1,3) = ‘362’ then tel := tel+2000000; end; Seek(f,FilePos(f)-1); // возврат указателя назад Write(f,subscriber); Writeln(subscriber.surname, ‘ ‘,subscriber.tel); end; Close(f); end.
Множества в Паскале
Множества в Паскале — это некоторое собрание элементов, одно и того же базового типа.
В качестве базового типа может выступать любой простой порядковый тип. Базовым типом не могут быть вещественные числа (real не порядковый тип) и строки (не простой и не порядковый тип).
Размер множества в Turbo Pascal всегда ограничен некоторым предельно допустимым количеством элементов. Во множествах допускаются только такие элементы, порядковые значения которых не выходят за границы 0..255. В Turbo Pascal в целочисленных множествах могут присутствовать только числа от 0 до 255.
Отрицательные элементы множеств в Turbo Pascal не допускаются. Поэтому базовыми типами не могут быть типы shortint, integer, longint.
type week_days = (Mon, Tue, Wed, Thu, Fri, Sat, Sun); var work_days: set of week_days; begin work_days:=[Mon, Wed, Thu]; end.
Из примера видно, что множества (тип set ) задаются путем перечисления значений, разделенных запятыми и заключенных в квадратные скобки.
Синтаксис:
name_set:=[expr1, expr2, … exprn];
Возникает логичный вопрос: как же тогда работать с множествами в Паскале?
Чтобы ответить на данный вопрос, сначала рассмотрим операции, выполняемые над множествами.
Действия над множествами
Объединение двух множеств A и B ( A + B ) – это новое множество, состоящее из элементов, принадлежащих множеству A или B либо тому и другому одновременно
Пример:
Пример:
var ch1, ch2, ch3: set of char; begin ch1:=[‘a’, ‘b’, ‘d’]; ch2:=[‘m’, ‘d’, ‘e’]; ch3:=ch1 * ch2; <Результат: ch3 = ['d'] >end.
Пример:
var ch1, ch2, ch3: set of char; begin ch1 := [‘a’, ‘e’, ‘t’]; ch2 := ch1 – [‘e’]; < ['a', 't'] >ch3 := [‘m’, ‘n’, ‘t’] – ch2; < ['m', 'n'] >end.
Множества и операция IN в Паскале
var voron, vorona, voroni: set of byte; number:integer; begin voron:=[5,6,7,8,9,10]; vorona:=[1]; voroni:=[2,3,4]; writeln (‘введите количество ворон’); readln(number); if number in voron then writeln (‘на ветке ‘, number,’ ворон’); if number in vorona then writeln (‘на ветке ‘, number,’ ворона’); if number in voroni then writeln (‘на ветке ‘, number,’ вороны’) end.
Требуется написать программу, которая в зависимости от числа добавляет правильное окончание.
var m : set of char; s : string; i : byte; begin write(‘строка: ‘); readln(s); m :=[]; i := 1; while i ‘_sdfs234’ вернет значение true, тогда как строка равная ‘_sdfs`234’ вернет false)
type t_chs = set of Char; const lett: t_chs = [‘a’..’z’,’A’..’Z’,’_’]; num: t_chs = [‘0’..’9′]; var str: string; i: byte; flag: boolean;
Описание переменных:
str — проверяемая строка;
flag — переменная-флаг для хранения информации о том, корректна ли строка.
Тип и константы:
t_chs — множество всех возможных символов;
lett — множество, содержащее английские буквы и знак подчеркивания;
num — множество, содержащее цифры.
Длинная арифметика
автор: Качанова Елена Ивановна
Известно, что арифметические действия, выполняемые компьютером в ограниченном числе разрядов, не всегда позволяют получить точный результат. Более того, мы ограничены размером (величиной) чисел, с которыми можем работать.
Диапазон представления целых чисел (Integer, Word, LongInt) ограничен. Поэтому при решении задач всегда приходится действовать с оглядкой, — как бы не допустить возникновения ошибки выхода за диапазон или переполнения. Например, вычисляя факториал (n! = 1 * 2 * 3 * … * n), в диапазоне представления величин типа Integer удастся правильно получить только 7! = 5040, а в диапазоне представления типа LongInt — 12! = 479001600. Для больших значений, конечно, можно использовать действительные типы данных, но это уже не гарантирует точного результата.
А если нам необходимо выполнить арифметические действия над очень большими числами, например,
30! = 265252859812191058636308480000 000?
Поэтому полезно для получения точных значений при действиях с многозначными числами разработать другие способы представления таких чисел, алгоритмы выполнения арифметических и других операций, процедуры ввода и вывода результатов и т.д.
В таких случаях мы сами должны позаботиться о представлении чисел в машине и о точном выполнении арифметических операций над ними.
Числа, для представления которых в стандартных компьютерных типах данных не хватает количества двоичных разрядов, называются «длинными». Реализация арифметических операций над такими «длинными» числами получила название «длинной арифметики».
Организация работы с «длинными» числами во многом зависит от того, как мы представим в компьютере эти числа. «Длинное» число можно записать, например, с помощью массива десятичных цифр, количество элементов в таком массиве равно количеству значащих цифр в «длинном» числе. Но если мы будем реализовывать арифметические операции над этим числом, то размер массива должен быть достаточным, чтобы разместить в нем и результат, например, умножения.
Покажем реализацию решения такого рода задач на примере умножения одного многозначного числа на другое. Именно эта арифметическая операция наиболее часто используется при решении других задач.
Наиболее естественным способом представления многозначного числа является запись каждого его разряда в виде отдельного элемента линейного массива. Пусть (для удобства дальнейших действий) разряды «длинного» числа при записи в массив нумеруются с единицы, начиная с разряда единиц, т.е. цифра из разряда единиц — элемент массива с номером один, цифра из разряда десятков — элемент массива с номером два и т.д. Определим для работы с «длинными» неотрицательными числами тип данных:
Dl_Ch = Array[1..Nmax] Of Digit;
Для решения поставленной задачи необходимо уметь выполнять следующие действия:
1) ввод «длинного» числа;
2) собственно умножение двух «длинных» чисел;
3) вывод «длинного» числа;
4) определение количества цифр в записи числа.
Каждую из подзадач реализуем в виде отдельной подпрограммы. Начнем с ввода. Ввести большое число целесообразно в виде строки, а в дальнейшем преобразовать в массив цифр (можно читать число из файла). В процедуре учтен указанный выше способ размещения «длинного» числа в массиве, т.е. с точки зрения пользователя число записывается как бы в обратном порядке.
Procedure Translate(S : String; Var A : Dl_Ch; Var F : Boolean);
Zero(A); I := Length(S); F := True;
While (I >= 1) And F Do
Прокомментируем эту процедуру на примере: S:=’5678′
После выполнения процедуры Translate цифры в массиве А расположатся следующим образом:
Procedure Zero(Var A : Dl_Ch);
For I := 1 To NMax Do A[I] := 0;
Таким образом, длинное число записано в массив, где впереди (в качестве элементов с большими номерами) стоят незначащие нули. При выполнении действий и выводе ответа они не учитываются.
Сейчас разработаем функцию определения количества значащих цифр в записи числа, поскольку она потребуется при реализации подпрограммы умножения.
Function Dlina(C : Dl_Ch) : Integer;
При ее разработке было использовано следующее соображение: если число не равно нулю, то количество цифр в его записи равно номеру первой цифры, отличной от нуля, если просмотр числа осуществляется от старшего разряда к младшему. Если же длинное число равно нулю, то получается, что количество цифр в его записи равно одной, что и требовалось.
Ну и, наконец, главная процедура. При составлении алгоритма используется идея умножения «столбиком», хотя в нашем варианте сложение выполняется не по окончанию умножения, а по ходу его, т.е. перемножив очередные цифры, сразу же добавляем результирующую цифру в нужный разряд и формируем перенос в следующий разряд.
A, B — множители, C — произведение>
Procedure umn(A, B : Dl_Ch; Var C : Dl_Ch);
Var I, J : Integer; P : Digit; Rez : 0..99;
For I := 1 To Dlina(A) Do
For J := 1 To Dlina(B) Do
запишем его в пока ещё свободный разряд>
Сейчас приведем листинг программы целиком.
Type Digit = 0..9; Dl_Ch = Array[1..Nmax] Of Digit;
Procedure Zero(Var A : Dl_Ch);
For I := 1 To NMax Do A[I] := 0;
Function Dlina(C : Dl_Ch) : Integer;
Procedure Print(A : Dl_Ch);
For I := Dlina(A) DownTo 1 Do Write(A[I] : 1);
Procedure Translate(S : String; Var A : Dl_Ch;
Zero(A); I := Length(S); F := True;
While (I >= 1) And F Do
Procedure Umn(A, B : Dl_Ch; Var C : Dl_Ch);
Var I, J : Integer; P : Digit; Rez : 0..99;
For I := 1 To Dlina(A) Do
For J := 1 To Dlina(B) Do
Write(‘Введите первый множитель: ‘);
ReadLn(S); Translate(S, M, Logic)
Write(‘Введите второй множитель: ‘);
ReadLn(S); Translate(S, N, Logic)
В приведенном листинге Print — процедура вывода длинного числа.
Для того чтобы прочитать исходное число из файла и результат писать в файл, достаточно изменить следующие процедуры и аккуратно прочитать числа:
Procedure Print(A : Dl_Ch);
For I := Dlina(A) DownTo 1 Do Write(f2,A[I] : 1);
Procedure Translate(Var A : Dl_Ch;
Var I,j,z : Word;s:char;
While not eoln(f1) And F Do
for j:=1 to (i-1) div 2 do
Процедура сложения двух «длинных» чисел может выглядить следующим образом:
Procedure Summa(A, B : Dl_Ch; Var C : Dl_Ch);
Var I, J,m : Integer; P : Digit; Rez : 0..99;
if Dlina (A)>Dlina(B) Then m:=Dlina(A)
В рассмотренных примерах для каждой цифры числа выделялось определенное место в таблице. Можно в каждой ячейке таблицы хранить по несколько цифр, например, по 3. Тогда основные процедуры обработки можно посмотреть в статье Окулова.
- фамилия мануйлова какой национальность
- Use кейсы что это