Pascal — Pascal — язык для пыток


Содержание

Pascal-Паскаль

Программирование. Строки и символы Pascal-Паскаль

  • Скачено бесплатно: 6878
  • Куплено: 414
  • Pascal-Паскаль->Программирование. Строки и символы Pascal-Паскаль

Программирование. Строки и символы Pascal-Паскаль

Строки Pascal-Паскаль

Строка представляет собой особую форму одномерного массива символов, которая имеет существенное отличие. Массив символов имеет фиксированную длину (количество элементов), которая определяется при описании. Строка имеет две разновидности длины:

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

Строка в Паскале – упорядоченная последовательность символов. Количество символов в строке называется ее длиной. Длина строки в Паскале может лежать в диапазоне от 0 до 255. Каждый символ строковой величины занимает 1 байт памяти и имеет числовой код в соответствии с таблицей кодов ASCII.

Код ASCII (American Code for Information Interchange – Американский стандартный код для обмена информацией) имеет основной стандарт и его расширение. Основной стандарт использует шестнадцатеричные коды 00-7F, расширение стандарта – 80-FF. Основной стандарт является международным и используется для кодирования управляющих символов, цифр и букв латинского алфавита; в расширении стандарта используются символы псевдографики и буквы национальных алфавитов.

32 пробел 48 0 64 @ 80 P 96 ` 112 p
33 ! 49 1 65 A 81 Q 97 a 113 q
34 « 50 2 66 B 82 R 98 b 114 r
35 # 51 3 67 C 83 S 99 c 115 s
36 $ 52 4 68 D 84 T 100 d 116 t
37 % 53 5 69 E 85 U 101 e 117 u
38 & 54 6 70 F 86 V 102 f 118 v
39 ‘ 55 7 71 G 87 W 103 g 119 w
40 ( 56 8 72 H 88 X 104 h 120 x
41 ) 57 9 73 I 89 Y 105 i 121 y
42 * 58 : 74 J 90 Z 106 j 122 z
43 + 59 ; 75 K 91 [ 107 k 123 <
44 , 60 78 N 94 ^ 110 n 126
47 / 63 ? 79 O 95 _ 111 o 127

Строковая константа Паскаля – последовательность символов, заключенная в апострофы. Например, ‘строковая константа’, ‘243’. Два следующих друг за другом апострофа (») обозначают пустую строку, т.е. строку с нулевой длиной.

Описание строковой переменной Паскаля

Для описания строковых переменных в Паскале существует предопределенный тип string.

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

Пример описания строковой переменной в Паскале:

В приведенном выше описании строковая переменная s1 может содержать не более 10 символов, переменная s2 – не более 20 символов. Если же при описании строки ее максимальная длина не указывается, то по умолчанию принимается максимально допустимая длина, равная 255 символам (переменная smax)..

Символы в строке упорядочены, каждый из них имеет порядковый номер, начиная с первого. Имеется возможность обратиться к любому элементу строки, указав его номер, так же как это делается в одномерных массивах. Например, s1[2] позволяет обратиться ко второму символу в строке s1, при этом мы можем поменять это значение, выполнив оператор присваивания s1[2]:= ‘r’, можем вывести на экран это значение или присвоить его другой переменной.

Действия со строками в Паскале

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

Операции отношения позволяют сравнивать строки на отношение равенства (=), неравенства (<>), больше (>), меньше ( =), меньше или равно ( Пример действий со строками в Паскале:

‘строка’<>‘строки’ (верно, т.к. не совпадают последние символы);

‘Abc’ ‘век’ (отношение верно, т.к. буква ‘г’ в алфавите стоит после буквы ‘в’, а, следовательно, имеет больший код).

Стандартные функции для работы со строками в Паскале

Copy (S, poz, n) выделяет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – любое строковое выражение, poz, n – целочисленные выражения.

Значение S Выражение Результат
‘строка символов’ Copy(S,3,3) рок

Concat (s1, s2. sn) выполняет слияние строк s1, s2. sn в одну строку.

Выражение Результат
Concat(‘язык’, », ‘Pascal’) ‘язык Pascal’

Length(S) определяет текущую длину строкового выражения S. Результат – значение целого типа.

Значение S Выражение Результат
‘(а+в)*с’ Length(s) 7

Pos(subS, S) определяет позицию первого вхождения подстроки subS в строку S. Результат – целое число, равное номеру позиции, где находится первый символ искомой подстроки. Если вхождение подстроки не обнаружено, то результат функции будет равен 0.

Значение S Выражение Результат
‘предложение’ Pos(‘е’, S) 3
‘предложение’ Pos(‘a’, S)

Стандартные процедуры для работы со строками в Паскале

Delete (S, poz, n) удаляет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – строковая переменная (в данном случае нельзя записать никакое другое строковое выражение, кроме имени строковой переменной, т.к. только с именем переменной связана область памяти, куда будет помещен результат выполнения процедуры); poz, n – любые целочисленные выражения.

Исходное значение S Оператор процедуры Конечное зн-е S
‘abcdefg’ Delete(s, 2, 3) ‘aefg’

Insert(subS, S, poz) вставляет в строку S, начиная с позиции poz, подстроку subS. Здесь subS – любое строковое выражение, S – строковая переменная (именно ей будет присвоен результат выполнения процедуры), poz – целочисленное выражение.

Исходное значение S Оператор процедуры Конечное зн-е S
‘рис. 2’ Insert(‘№’, S, 6) ‘рис. №2’

Процедуры преобразования типов в Паскале

Str(x, S) преобразует число x в строковый формат. Здесь x – любое числовое выражение, S – строковая переменная. В процедуре есть возможность задавать формат числа x. Например, str(x: 8: 3, S), где 8 – общее число знаков в числе x, а 3 – число знаков после запятой.

Оператор процедуры Значение S
Str (sin(1):6:4, S) ‘0.0175’
Str (3456, S) ‘3456’

Val(S, x, kod) преобразует строку символов S в число x. Здесь S – строковое выражение, x – числовая переменная (именно туда будет помещен результат), kod – целочисленная переменная (типа integer), которая равна номеру позиции в строке S, начиная с которой произошла ошибка преобразования, если преобразование прошло без ошибок, то переменная kod равна 0.

Тип X Оператор процедуры Значение X Значение kod
Real Val(‘12.34’, x, kod) 12.34
Integer Val(‘12.34’, x, kod) 12 3

Программирование

Исходники Pascal (127)

Справочник

Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Pascal: Занятие № 7. Подпрограммы: процедуры в Pascal

Процедуры в Паскале

Подпрограмма — это фрагмент кода, который имеет свое имя и создается в случае необходимости выполнять этот код несколько (много) раз. Подпрограмма описывается единожды перед началом основной программы (до begin ). Компилятор пропускает данный фрагмент кода, пока в основной программе не встретит «вызов» подпрограммы, который выглядит как обращение к ней по имени (возможно, имени с аргументами, указанными в скобках).

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

Итак, рассмотрим синтаксис объявления и описания процедуры в Паскале

procedure pr; var i:integer; begin for i:=1 to 60 do begin <тело подпрограммы>write(‘*’); writeln; end; end; <конец подпрограммы>begin pr; <вызов процедуры>end.

В данном примере работы с процедурой в Паскале очевидно, что компилятор пропустит блок описания процедуры и дойдет до основной программы (9 строка кода). И только после того, как встретится вызов процедуры (10 строка), компилятор перейдет к ее выполнению, вернувшись к строке 1.

Процедуры с параметрами. Фактические и формальные параметры

Рассмотрим пример необходимости использования процедуры.

Особенность: Три похожие фигуры.

  • общее: размеры, угол поворота
  • отличия: координаты, цвет

    Алгоритм решения:

    • выделить одинаковые или похожие действия (три фигуры);
    • найти в них общее (размеры, форма, угол поворота) и отличия (координаты, цвет);
    • отличия записать в виде неизвестных переменных, они будут параметрами процедуры.

    Решение на паскале:
    Процедура:

    uses GraphABC; procedure Tr( x, y: integer; color:system.Drawing.Color); begin MoveTo(x, y); LineTo(x, y-60); LineTo(x+100, y); LineTo(x, y); FloodFill(x+20, y-20,color); end; begin SetPenColor(clBlack); Tr(100, 100, clBlue); Tr(200, 100, clGreen); Tr(200, 160, clRed); end.

    Рассмотрим синтаксис объявления и описания процедуры с параметрами в Паскале.

    Параметры процедуры (в некоторых языках они называются аргументами) указываются в скобках после ее имени (в объявлении).

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

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

    var s:char; procedure pr(a:char); var i:integer; begin for i:=1 to 60 do begin write(a); writeln; end; end; begin writeln(‘simvol’); readln(s); pr(s); end.

    В данном примере при вызове процедуры компилятор заменит формальный параметр a фактическим параметром s , т.е. тем символом, который будет введен с клавиатуры. Оба параметра имеют тип данных char .

    • число фактических параметров должно быть равно числу формальных параметров;
    • соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу данных.

    Процедуры с параметрами. Параметр-переменная

    var x,y,m,n:integer; procedure MaxNumber(a,b:integer;var max:integer); begin if a>b then max:=a else max:=b; end; begin write(‘vvedite x,y’); readln(x,y); MaxNumber(x,y,m); <фактические параметры>writeln(‘max=’,m) end.

    В примере формальные параметры a и b служат для помещения в них сравниваемых чисел, а параметр-переменная max — для сохранения в ней максимального из двух чисел. Параметр-переменная или выходной параметр передает свое значение в основную программу (фактическому параметру m ), т.е. возвращает значение, тогда как формальные параметры-значения (входной параметр), наоборот, принимают значения из основной программы (из фактических параметров x и y ). Для параметра-переменной ( max ) используются те ячейки памяти, которые отведены под соответствующий параметр при вызове процедуры (ячейка m ).

    Таким образом, сформулируем понятия:

    Если в качестве формального параметра указана обычная переменная с указанием ее типа, то такой параметр есть параметр-значение или входной параметр ( a и b в примере). Тип данных формального параметра-значения должен соответствовать типу данных его фактического параметра ( a и b должны попарно соответствовать типу данных x и y ).

    Если перед именем формального параметра в объявлении процедуры стоит служебное слово var, то такой параметр называется параметром-переменной или выходным параметром ( max в примере). Для него используются те ячейки памяти, которые отведены под соответствующий параметр при вызове процедуры ( m ). Фактический параметр, соответствующий параметру-переменной, может быть только переменной (не константой, не литералом и не выражением).

    var x,y:integer; procedure exchange(a: integer;var b:integer); var c:integer; begin if a>b then begin c:=a; a:=b; b:=c; <второй параметр процедуры - b - всегда будет максимальным>end; end; begin writeln(‘введите два числа’); readln(x,y); exchange (x,y); writeln(‘max=’,y) end.

    Используя данный способ решения задачи, мы обошлись без третьего параметра. Для этого в процедуре мы использовали еще одну локальную переменную c . Процедура меняет значения переменных a и b таким образом, чтобы b всегда была максимальной. Поэтому в 15 строке программы в качестве максимальной выводится второй параметр ( y ), соответствующий формальному параметру b .

    1. Необходимо определить наибольший общий делитель двух введенных чисел, используя цикл.
    2. Необходимо определить наибольший общий делитель двух введенных чисел, используя процедуру (два параметра-значения, один параметр-переменная).
    • Вводятся a и b (например, 18 и 24)
    • В цикле повторяем действия:
    • Если а 18 если b>a -> swap(a,b) 24/18 = 1(6) a=6, b=18 6 18/6 =3(0) a=0, b=6 6 128 и 56 128/56=2(16) a=16,b=56 16 56/16=3(8) a=8,b=16 8 16/8=2(0) a=0, b=8 8

    0 do begin if a

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

    const n = 10; var i:integer; a, b: array[1..n] of integer; procedure arr_out (k:integer; arr: array[1..n] of integer); var i: byte; begin write (‘вывод массива: ‘); for i := 1 to k do write (arr[i]:4); writeln; end; begin for i:=1 to n do a[i]:=random(10); arr_out (n, a); end.

    Пояснение:
    Тело основной программы:
    — формирование элементов массива (с функцией random ).
    — вызов процедуры с двумя параметрами: количество элементов, массив.
    Тело процедуры:
    — вывод элементов массива с использованием параметров

    Продолжим нашу задачу:

    const n = 10; var a, b: array[1..n] of integer; procedure arr_rand (k:integer; var arr: array[1..n] of integer); var i: byte; begin write (‘Заполнение массива случайными числами ‘); randomize; for i := 1 to k do arr[i]:=random(100); end; begin arr_rand (n, a); end.

    Самостоятельная работа

    Общее задание 2: Описать процедуру Mean(X, Y, AMean, GMean) , вычисляющую:

    • среднее арифметическое AMean = (X+Y)/2
    • и среднее геометрическое GMean = √X*Y двух положительных вещественных чисел X и Y .

    X и Y/ — входные параметры, AMean и GMean — выходные параметры вещественного типа.
    В основной программе: Для заданных A, B, C, D найти среднее арифметическое и среднее геометрическое для пар (A, B), (A, C), (A, D), используя созданную процедуру.

    1 вариант: для 5 одномерных массивов определять произведение элементов каждого массива, используя процедуру с двумя параметрами — число элементов массива и параметр-переменная для вывода произведения.

    2 вариант: для 5 одномерных массивов определять минимальный элемент каждого массива, используя процедуру с двумя параметрами — число элементов массива и параметр-переменная для вывода минимального элемента.


    * сложное С помощью процедуры формировать случайным образом одномерные массивы из 10 элементов (значения от -20 до +20). Вызывать процедуру до тех пор, пока среди значений не появится ноль.

    Применяется ли Pascal?

    Я программист. Программирую на C/C++, C#, Java, JavaScript, Python, HTML + CSS, PHP + MySQL.
    Использую Qt, WPF, WinAPI, MatPlotLib, XML. Люблю использовать C++ & DirectX.
    Интересуюсь разработкой игр на Unity3D, изучаю Blender, GIMP.

    В общем, сильно интересуюсь программированием.

    И никак не могу понять, где используют Pascal? Он сильно устарел.
    Да, были времена, когда считался крутым тот, кто может создать платформер на Pascal или мелкую 2D игрушку на нём.
    Но это уже 80-е года того столетия. Это было уже очень давно.
    В 70-х годах придумал его какой-то быдлокодер, и почти с тех времён этот язык не развивается.
    Единственное, где его можно применить, это только в школах или начальных классах, чтобы объяснить новичкам, что такое программирование вообще.

    Так тогда у меня вопрос к другим программистам. Вы используете Pascal? Он сейчас применяется где-нибудь, кроме как учить школьников писать говнокод? Требуют ли его на работе? Нужен ли он в данный момент вообще?

    27.01.2020, 21:42

    Turbo Pascal, Pascal ABC, Free Pascal, PascalABC.NET — в чем разница?
    Всем привет, решил изучать Паскаль, но на форуме увидел 4 его версии — Turbo Pascal, Pascal ABC.

    Не применяется css
    Добрый день всем! Я только начинаю разбираться в css, подскажите пожалуйста, почему не применяются.

    Не применяется CSS
    Доброго времени суток. Есть такой код:

    Не применяется Background
    Привет, за блоком «why» и «lowmenubg» должен быть фон но он почему то не отображается. И еще.

    Не применяется стиль к tr
    Здравствуйте, подскажите пожалуйста, почему я не могу применить стиль к тегу tr таблицы: 71 27.01.2020, 22:42 2 27.01.2020, 22:58 [ТС] 3

    А почему бы не использовать Basic для азов и начального обучения?
    Он проще и гораздо лучше на мой взгляд.
    Плюс! Basic сейчас используется в отличие от Pascal.
    Например, скрипты можно писать на VB, очень удобно. Среды разработки есть для Basic.
    Даже у Microsoft есть свои среды для Basic.

    Как думаешь, Иван?
    Было бы лучше использовать Basic?

    27.01.2020, 23:17 4

    Ситуация с VB так же как и Delphi. В первом случае используют Basic, а в другом Pascal. Но наверное, популярность VB выше, чем у Delphi. Хотя фиг знает. Но в целом у них у обоих невысокая популярность по сравнению с C++, Java или C# (если смотреть по рынку вакансий)

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

    Это нужно у методистов спросить, почему они в программу включили именно начинать с Pascal, а не с C++, Java или C#. Или вообще может лучше с Assembler’а, чтобы сразу понимать как процессор работает.

    27.01.2020, 23:17
    27.01.2020, 23:34 [ТС] 5

    Интересно одно. А у Pascal вообще есть своё предназначение?
    Например, Lua подходит для создания скриптов, логики игры.

    С++ подходит для создания движков, системного программирования, создания приложений;

    C# для создания приложений, скриптинга в играх;

    Python отлично подходит для математики и научных расчётов (особенно если есть такие дополнительные вещи как MatPlotLib);

    ASM для создания прошивок, программирования микроконтроллеров, для низкоуровнего программирования.

    JavaScript подходит для создания скриптов, для сайтов.

    PHP подходит для работы с базами данных.

    А этот говнокодистый язык вообще к чему-нибудь современному приспособлен, кроме как создавать консольные мелочи 70-х, 80-х годов прошлого столетия?

    Добавлено через 5 минут
    Вообще, если честно, он не способен ни с одной современной задачей справиться.
    Что бы я не хотел сделать, Pascal не может, а стоит только взяться за C++ или Python, всё с лёту.
    Pascal сильно устарел. Он умеет работать только со старыми компами. А время летит, технологии совершенствуются, и Pascal уже стар для современных компьютеров.
    К Pascal ни одной современной библиотеки даже нельзя подключить.

    27.01.2020, 23:37 6
    27.01.2020, 23:39 [ТС] 7

    Даа, но если сравнивать C++ с Pascal, то C++ его просто УБИВАЕТ!

    Добавлено через 54 секунды
    Работы Pascal программист сейчас уже нигде нету, и давным давно уже нет. Только учитель по информатике в средней школе.

    27.01.2020, 23:40 8
    28.01.2020, 00:06 [ТС] 9
    28.01.2020, 00:12 10

    Учу Паскаль, но и самому уже кажется что он устарел. да, на delphi можно хоть что-то написать, но это не будет более-менее серьёзное приложение. Сейчас я пытаюсь перебираться на cpp.

    Нравится и синтаксис Паскаля. Надеюсь на embarcadero, возможно у него получиться поднять delphi (Object Pascal) на новый уровень.

    28.01.2020, 00:30 11

    Если посмотреть вики, то там написано что Written in C, C++, and Python

    28.01.2020, 06:58 12

    PHP — скорее серверная часть Web-а. Тоже существует на одной инерции. Некогда резко появилась услуга хостинга сайтов. Виртуализации тогда не было, а хостерам, естественно, не хотелось что бы на их машине арендатор запускал вирусы могущие принести ему вред. По этому разрешались скрипты — перл, php. Под это с годами выросло не одно поколение пыхыперов, навертели к пыхыпу разных либ, назвали их фреймвёрками и стеками технологий, так и существует в XXI веке веб на скриптах.
    С++ тоже явно устарел несмотря на гальванизацию трупа всяким стандартами ++11. Но, это ж какая масса прогеров! Какая инерция! Вот Rust, похоже так и не всплывёт. И раньше бывали попытки. Недостаток С/C++ — почти как не напиши — компилятор будет пытаться хоть как то откломпилировать код, вместо того, что бы сказать что его надо привести в порядок a**b+++c. И вообще С/C++ — это «ехал поинтер через стек».

    В общем, везде примерно один бардак. Но куда деваться. Хорошо бы помечтать что бы мол запретить преподавание, хранение, распространение некоторого старья, но запреты, обычно, всё только ухудшают. Оглянуться не успеть и придётся писать только на 1С.

    Словарь языка Pascal

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

    Язык программирования Pascal использует следующие наборы символов:

    • Английские буквы и буквы национальных алфавитов, в том числе русского. Буквы могут быть как строчными, так и прописными.
    • Арабские цифры — 0 1 2 3 4 5 6 7 8 9 .
    • Знаки операций и знаки, входящие в составное обозначение операций — + — * / : = .
    • Ограничители — . , ( ) [ ] <> : ; ‘ » .
    • Специальные символы — $ @ # &amp ; ^ _

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

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

    Идентификаторы записываются с помощью допустимых в Pascal символов и должны удовлетворять следующим правилам:

    • в состав имени могут входить только английские буквы, цифры и символы подчеркивания,
    • при этом имя может начинаться только с английской буквы или символа подчеркивания, но не с цифры.

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

    Словарный набор почти любого языка программирования делится на три группы:

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

    Ключевые слова – это слова языка программирования, которые имеют специальное, раз и навсегда закрепленное за ними значение. В программе нельзя использовать идентификаторы, совпадающие по написанию с ключевыми словами. Например, нельзя назвать переменную begin , так как это слово используется в самом Паскале.

    Ключевые слова языка программирования Pascal:

    and end nil set
    array file not then
    begin for of to
    case function or type
    const goto packed until
    div if procedure var
    do in program while
    downto label record with
    else mod repeat

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

    Десятичные числа всегда начинаются с цифры, перед которой может стоять знак числа, + или -.

    Действительные, или вещественные, числа записываются в двух форматах. В формате с фиксированной точкой явно указывают положение десятичной точки (например, 4.505, -16.25, +1.0). В формате с плавающей точкой используется десятичный порядок, обозначаемый прописной или строчной буквой E, после которой идет целое число, указывающее значение порядка, например, 8e10, 1.62e-3, 0.8E+3.

    В языке Pascal максимально допустимое целое число равняется 2147483647 (оно содержится в предопределенной целой константе MaxLongInt). Чтобы получить это число достаточно выполнить выражение

    В Паскале возможен диапазон целых чисел от -2147483648 до 2147483647. Предопределенная в Паскале целая константа MaxInt содержит в себе значение 32767

    Распространенные компиляторы с языка Pascal позволяют оперировать действительными числами до 38 порядка, а некоторые – до 67 порядка.

    Целое число может задаваться не только в десятичной, но и в шестнадцатеричной системе счисления. Шестнадцатеричному числу предшествует знак $.

    Текстовым литералом (строкой) в языке Pascal называют последовательность любых допустимых символов, стоящих между апострофами (например, ‘Hello World!’). Если в качестве символа строки необходимо использовать апостроф, то записывают подряд два апострофа

    Строку можно задавать также в виде последовательности, образованной из символов # с последующим цифровым кодом требуемого символа (например, запись #72#73#33 эквивалентна строке ‘HI!’). В строковых данных прописные и строчные буквы различаются.

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

    Паскаль — Урок 1: Первые знания, операторы, структура

    Итак, с сегодняшнего дня мы начинаем линейку уроков по изучению самого простого языка программирования — Pascal. Из чего буде состоять этот урок? Сегодня мы обсудим структуру программы, написанной на pascal, основные операторы, типы переменных.

    Вся программа состоит из следующих частей:

    1) Описание переменных

    2) Основной программы:

    Если всё это представить в виде алгоритма, то получается так:

    — Переменные а и б — численные;

    Теперь давайте разберемся с тем, а как это делается в программе.

    Для задания типа переменных используется служебное слово var, сами переменные могут быть любыми латинскими буквами. Также есть тип переменных. Тип переменных может быть строковый, целочисленный, а может быть массивом и т.д. Для начала нам потребуется два типа — это тип integer и тип real. Тип integer — тип для целых чисел (1; 288; 3;4; 512; -2; -100 и т.д.). Его проще использовать, да и чаще встречается. Тип real — тип дробных чисел (1,289; 8, 56 и т.д.). В этом типе нужно работать, если есть деление, корень и др.

    Начало программы даёт служебное слово begin, а конец — end. Для вывода какого-то необходимого слова или числа используется команда writeln (‘нужное’), а для ввода — read (что-то).

    Это абсолютно бестолковая программа, которая выводит то, что Вы ввели.

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

    Pascal. Основы

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

    Алфавит языка Паскаль включает:

    • Латинские буквы;
    • Цифры;
    • Специальные символы (+ — * / = ^ ( ) < >[ ] . , : ; ‘# $ и др.).

    Для описания величин в языке Паскаль используются константы и переменные.

    Константы – величины, не изменяющие своего значения в процессе выполнения программы.

    Переменные – величины, в ходе выполнения программы могут быть неоднократно переопределены.

    Типы констант и переменных

    Паскаль позволяет использовать следующие типы констант и переменных:

    • Простые
      • целочисленный тип (integer);
      • логический (boolean);
      • символьный (char);
      • перечисляемый (задается перечислением всех возможных значений переменной);
      • интервальный (задается с указанием наибольшего и наименьшего значений);
      • вещественный (real);
    • Строковые
      • строка (string);
    • Структурированные
      • массивы (array);
      • записи (record);
      • множества (set);
      • файл (file);
    • Ссылочные.

    Каждому из перечисленных типов соответствует свой набор операций по обработке данных. Так, для целочисленного и вещественного типов используются операции арифметических действий (сложение, вычитание, умножение, деление). Для логического типа выполняются операции and – логическое и, or – логическое или, xor – логическое исключающее или, not – логическое не.

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

    В данной таблице приведены стандартные арифметические функции.

    Вычисление косинуса числа


    Вычисление синуса числа

    Вычисление абсолютного значения числа

    Вычисление квадрата числа

    Вычисление квадратного корня числа

    Вычисление арктангенса числа

    Вычисление экспоненты числа

    Вычисление натурального логарифма числа

    Вычисление четности числа

    Вычисление целой части числа

    Примечание: Во всех тригонометрических функциях число x указывают в радианах.

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

    Операции одного и того же старшинства выполняются слева направо в порядке их появления в выражении. Выражения в круглых скобках вычисляются в первую очередь.

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

    • Объявления и соглашения;
    • Тексты процедур и функций;
    • Основной блок программы.

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

    Раздел объявлений и соглашений

    Кроме того, в программе могут использоваться комментарии – любой текст, ограниченный (*…*) или <…>. Комментарий может быть помещен в любом месте программы.

    Рассмотрим более подробно назначение каждой части программы.

    Заголовок программы состоит из зарезервированного слова Program и идентификатора – имени программы.

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

    • System – системный модуль низкоуровневых программ поддержки языка Паскаль; подключается автоматически, даже при отсутствии ссылки на него в строке uses;
    • Dos и WinDos – модули поддержки часто используемых функций MS DOS и Windows;
    • Crt – модуль управления режимами вывода информации на экран;
    • Printer – модуль управления выводом информации на печать;
    • Overlay – модуль управления оверлеями языка Паскаль; позволяет выполнять программы, которым требуются большие объемы памяти;
    • Strings – используется при написании программ, совместимых с Windows;
    • Graph – модуль для работы с графикой.

    В разделе описания меток содержатся сведения об используемых в программе метках. Переход по ним выполняется оператором goto. Метки отделяются от помечаемого оператора знаком “:”, должны быть описаны, могут быть целочисленными (от 0 до 9999) или идентификаторами. Каждая описанная метка обязательно должна появиться в программе.

    Для описания констант используется ключевое слово const, имя константы, знак “=” и значение константы:

    В разделе описания типов Type программист может задавать свои типы, сформированные на основе определенных правил с использованием стандартных типов.

    В разделе Var описываются переменные, используемые в программе:

    В списке переменных их имена отделяются запятой, в качестве имени типа можно использовать один из стандартных типов или идентификатор типа, объявленного в разделе Type. Описанные таким образом переменные могут использоваться в пределах блока, где они были описаны, а также во всех вложенных блоках, если в них эти переменные не описаны повторно.

    В разделе текстов процедур и функций в соответствии с определенными правилами производится описание процедур и функций.

    Процедура

    Процедура имеет следующую структуру:

    Раздел объявлений процедуры может включать подразделы Label, const, type, var для обявления локальных меток, постоянных, типов и переменных собственно. Слово «локальный» означает, что все перечисленные объекты могут быть использованы только в рамках данной процедуры или других подчиненных ей процедур.

    Функция

    Описание функций отличается по структуре от описания процедур только заголовком:

    Функция – это особый вид процедуры, результатом разботы которой является единственное значение. С этим значением связывается имя функции, в то время как име процедуры служит только для ее вызова.

    Основной блок программы состоит из ряда операторов и является выполняемой частью программы. Он начинается со слова Begin и заканчивается словом end, после которого должна стоять точка. Операторы языка Паскль не привязаны к определенной позиции строки. В одной строке можно указывать несколько операторов. Исполняемые операторы отделяются друг от друга знаком « ; ».

    Допускается перенос с одной строки на другую частей операторов (но без разделения ключевых слов).

    Как было указано выше, основной блок программы представляет собой некоторый набор операторов.

    Оператор – неделимый элемент программы, который позволяет выполнить определенные действия.

    Операторы должны записываться строго в соответствии с правилами, установленными для данного языка программирования. Рассмотрим основные операторы языка Паскаль.

    Оператор присваивания

    Данный оператор предписывает запомнить некоторое значение в переменной. Значение и индентификатор переменной разделены парой знаков « := ». Типы объектов с обеих сторон данного знака должны строго совпадать, за исключением того случая, когда тип переменной – real, а тип выражения – integer.

    Общий вид оператора:

    Операторы ввода/вывода

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

    Где — последовательность имен переменных, разделенных запятыми. Буквы ln добавляются в конце оператора для того, чтобы курсор автоматически переходил на следующую строку при выводе на экран текстов или результатов выполнения программы.

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

    Вывод данных на экран дисплея выполняется операторами:

    Выражения в списке разделяются запятыми. Значения выражений сначала вычисляются, а затем выводятся на экран. Буквы ln имеют то же значение, что и в операторе readln.

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

    займет для вывода числа 10 три позиции, а для вывода числа 55 – шесть позиций на экране.

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

    Если х =3,14159, то оператор

    займет для вывода переменной х шесть позиций, две из которых будут использованы для дробной части х (т.е. значение х будет округлено до 3,14).

    Для того, чтобы прокомментировать выводимые значения, в список ввода можно помещать строки любых символов, заключенные в одинарные кавычки – апострофы.

    При выполнении фрагмента программы

    На экран будет выведено:

    Приведем пример Паскаль-программы.

    Задача – составить программу для подсчета суммы двух заданных чисел. Для этого необходимо ввести текст в память компьютера и сохранить на диске под именем pr1. Далее запустить программу на выполнение. При наличии ошибок внести соответствующие исправления. Получить результаты работы программы.

    Введение в Pascal

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

    ✎ 1) program – по-английски «программа», пишется в самом начале кода, после чего идет название программы латиницей и точка с запятой. Например: program Summa; − программа под названием Summa. Но эту часть кода, называемую заголовком программы, можно и не писать − она присутствует только для наглядности и показывает, какую задачу решает данная программа. Здесь мы употребили слово «код» − так называется текстовая запись программы.

    ✎ 2) integer – по-английски означает «целое число» (или просто «целое») и в Паскале используется для обозначения 32-битных (8 байт) целых чисел со знаком с диапазона [-2147483648, 2147483647] . Что означают эти большие числа, мы потом разберем.

    ✎ 3) real – с английского «реальный», «настоящий», «вещественный», «действительный». В языке Паскаль этим термином обозначаются вещественные числа с диапазона [-1.8∙10 308 , 1.8∙10 308 ] . Это очень большие числа, но значащих цифр выводится 15 – 16. Кстати, типы данных integer и real в среде программирования PascalABC.Net всегда автоматически выделяются синим цветом.

    ✎ 4) const – аналог англ. «constant», означающее «постоянная», «константа». В Паскале это величина, которая не может изменяться. Записывается так:

    Эту запись надо воспринимать так, как она пишется: число N равно 12, S равно 5, «пи» равно 3,14 (как и в математике, только вместо запятой в Паскале используется точка). В последней строке мы использовали двойной слэш (две косые черты), после которых идет текст, – так в Паскале пишутся комментарии, и их программа не воспринимает. Всё, что начинается двойным слэшом и до конца строки – это комментарий, который пишется для пояснения к программе и всегда выделяется другим цветом (в PascalABC.Net — это зеленый , в Turbo Pascal не используется такой вид комментария). Существует и другой тип комментария – это <текст, заключенный в фигурные скобки, так же, как и здесь, тоже выделяющийся зеленым цветом>. Этот вид комментария может действовать несколько строк подряд – от начала скобки и до её закрытия, и всё, что находится в середине такой конструкции, компилятор не воспринимает как код и просто пропускает.

    В действительности формат записи const немножко сложнее. По правилам мы должны были записать:

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

    ✎ 5) var – происходит от англ. «variable» («переменная», или «изменчивый»), что в Паскале означает величину, которая в процессе программы может изменять свое значение. Записывается так:

    Как видно из записи, знака «=» здесь нет – пересчитываются переменные одного типа (через запятую) и после двоеточия указывается только тип. Переменные N, m (целые) и Q, r, t (вещественные) в программе могут изменять значения в пределах integer и real соответственно. Ещё одно замечание: описание переменных всегда стоит после описания констант (постоянных) – сначала идет конструкция const , а потом var .

    ✎ 6) begin – в переводе с английского означает «начинать» и Паскале означает начало основной программы, в которой записываются команды (операторы). После слова begin точка с запятой не ставится.

    ✎ 7) end – по-англ. «конец», и в языке Pascal означает то же (конец программы). После последнего слова end всегда стоит точка. Мы выделили слово «последнего», поскольку использование конструкции begin – end возможно ещё в одном случае: это так называемые операторные скобки, которые применяются для объединения нескольких операций под одним оператором. Но об этом потом. Таким образом, основная программа будет выглядеть так:

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

    8) write – по-английски означает «писать». Этот оператор выводит на экран текст, помещенный в него, поэтому так и называется – оператор вывода. Текст, помещенный в него, выделяется синим и записывается так:

    write( ‘этот текст выведен на экране’ );

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

    этот текст выведен на экране

    В таком виде оператор write используется в том случае, когда надо показать подсказку, пояснение, комментарий и т. п. А от если необходимо вывести ещё и числовое значение, скажем, S = 50 кв. м, то используется формат:

    write( ‘Величина площади равна: S = ‘ , S);

    В результате получим на экране результат:

    Величина площади равна: S = 50

    А при необходимости вывести единицы измерения, надо после S снова вставить текст в кавычках:

    write( ‘Величина площади равна: S = ‘ , S, ‘ кв.м’ );

    После выполнения последнего оператора вывода получим вывод на экран:

    Величина площади равна: S = 50 кв.м

    ✎ 9) writeln – то же, что и write, но после выполнения курсор будет переведен на следующую строку.

    ✎ 10) read – в переводе с английского означает «читать», поэтому read называется оператором считывания, или ввода данных. Записывается как read(N), что означает необходимость ввода величины N, где N – любое число, или текст, или другой тип переменной. Например, если надо ввести возраст человека, которому 32 года, мы можем записать так:

    В первой строчке этого кода программа выводит вопрос « Каков Ваш возраст? » и переводит курсор в следующую строку (окончание ln); во второй строке мы выводим « Year = » (в начале пробел); далее мы видим оператор readln(Year) означающий необходимость введения возраста Year (число 32); наконец, выводим сообщения « Мой возраст », « 32 » и « года. » поочередно. Необходимо внимательно следить за пробелами. В результате выполнения данного кода мы получим сообщение:

    Каков Ваш возраст?
    Year = 32
    Мой возраст 32 года

    ✎ 11) readln – то же, что и read, только с переводом на новую строку. Действительно, в приведенном выше примере после введения числа Year мы только в следующей строке пишем: « Мой возраст 32 года ».

    Это пока что все. На следующей странице мы напишем первую программу, и в программировании на Паскале это будут наши первые шаги.

    Pascal — Pascal — язык для пыток

    Язык Паскаль, названный в честь французского математика и философа Блеза Паскаля (1623-1662), был создан как учебный язык программирования в 1968-71 годах швейцарским ученым Никлаусом Виртом на кафедре информатики Стэнфордского университета (Цюрих). В настоящее время это язык имеет более широкую сферу применения, чем предусматривалось при его создании. Свое признание Паскаль получил с появлением пакета Турбо Паскаль (Turbo Pascal). Этот язык отличается простотой понимания, стройностью и структурностью алгоритмов, быстротой компилятора и удобными средствами создания и отладки программ.

    Достоинствами языка Паскаль являются:

    1. Простой синтаксис языка. Небольшое число базовых понятий. Программы на Паскале достаточно легко читаемы.
    2. Достаточно низкие аппаратные и системные требования как самого компилятора, так и программ, написанных на Паскале.
    3. Универсальность языка. Язык Паскаль применим для решения практически всех задач программирования.
    4. Поддержка структурного програмирования, программирования «сверху-вниз», а также объектно-ориентированного программирования.

    В настоящем пособии рассматривается Tirbo Pascal v7.0. Данная версия разработана фирмой Borland и является последней в линейке компиляторов Pascal для DOS. Дальнейшее развитие Паскаль получил в Delphi — системе разработки программ для Windows.

    Среда разработчика Turbo Pascal 7.0

    Базовыми компонентами система программирования Турбо Паскаль являются компилятор языка Паскаль, средства создания и редактирования исходных текстов программ и средства их отладки (поиска и исправления ошибок). Все эти компоненты объединены в единую интегрированную среду разработчика, с которой как раз и работает программист, создавая свои программы.

    Запуск программы

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

    1. Запустить Norton Commander (Far Manager);
    2. Зайти в каталог, в котором планируется сохранять файлы с исходными текстами программы, а также вспомогательные файлы вашей прграммы;
    3. Вызвать горячее меню Norton Commander (нажав клавишу F2);
    4. Выбрать строку «Turbo Pascal 7.0»;
    5. Если окно редактирования не открылось, то открыть его через пункт меню «File» (нажать Alt+F, выбрать New).

    Если у вас уже есть некоторый файл с исходным текстом программы (файл с расширением pas), с которым вы хотите продолжить работу, то достаточно навести на него указатель Norton Commander и нажать Enter. В этом случае запустится Turbo Pascal и сразу откроется текст выбранной вами программы.

    Окно среды разработчика

    Основной экран интегрированной среды разработчика Turbo Pascal 7.0 выглядит следующим образом:

    По функциональному назначению выделяется три области экрана:

    • Строка меню
    • Рабочая область
    • Строка состояния


    Строка меню активизируется нажатием клавиши F10. В меню содержатся следующие разделы:

    • File. Позволяет выполнять все основные действия с файлами (создание, открытие, сохранение ..)
    • Edit. Позволяет выполнять все основные операции редактирования текста (копирование, вставка, удаление фрагментов, отмена последних изменений ..)
    • Search. Позволяет осуществлять поиск и замену фрагментов текста.
    • Run. Позволяет запускать программу, в том числе в пошаговом режиме.
    • Compile. Позволяет осуществлять компиляцию программы.
    • Debug. Содержит команды, облегчающие процесс поиска ошибок в программе.
    • Tools. Содержит некоторые дополнительные средства Турбо Паскаль.
    • Options. Позволяет установить необходимые для работы параметры компилятора и среды разработчика.
    • Window. Позволяет выполнять все основные операции с окнами (открывать, закрывать, перемещать, изменять размер).
    • Help. Позволяет получить имеющуюся в системе справочную информацию.

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

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

    Строка состояния демонстрирует некоторые доступные и важные в данный момент операции и соответствующие им комбинации клавиш.

    Основные команды и горячие клавиши

    Ниже приведены основные команды среды раработчика Турбо Паскаль и соответствующие им горячие клавиши. Более полный перечень горячих клавиш вы можете найти в приложении.

    • Ctrl+F9 — запуск программы
    • Alt+F5 — просмотр пользовательского экрана
    • F2 — сохранение программы
    • F3 — открытие сохраненной программы
    • Alt+F3 — закрытие активного окна
    • Alt+X — выход из Турбо Паскаль
    • F1 — контекстная помощь
    • Ctrl+F1 — справка об операторе, на котором установлен курсор
    • Alt+Backspace — отмена последнео изменения
    • Ctrl+Y — удаление строки
    • Shift+стрелки — выделение блока текста
    • Ctrl+Insert — копирование выделенного блока в буфер
    • Shift+Insert — вставка из буфера

    Волгоградский государственный педагогический университет
    Кафедра алгебры, геометрии и информатики

    Pascal-Паскаль

    Программирование. Строки и символы Pascal-Паскаль

    • Скачено бесплатно: 6878
    • Куплено: 414
    • Pascal-Паскаль->Программирование. Строки и символы Pascal-Паскаль

    Программирование. Строки и символы Pascal-Паскаль

    Строки Pascal-Паскаль

    Строка представляет собой особую форму одномерного массива символов, которая имеет существенное отличие. Массив символов имеет фиксированную длину (количество элементов), которая определяется при описании. Строка имеет две разновидности длины:

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

    Строка в Паскале – упорядоченная последовательность символов. Количество символов в строке называется ее длиной. Длина строки в Паскале может лежать в диапазоне от 0 до 255. Каждый символ строковой величины занимает 1 байт памяти и имеет числовой код в соответствии с таблицей кодов ASCII.

    Код ASCII (American Code for Information Interchange – Американский стандартный код для обмена информацией) имеет основной стандарт и его расширение. Основной стандарт использует шестнадцатеричные коды 00-7F, расширение стандарта – 80-FF. Основной стандарт является международным и используется для кодирования управляющих символов, цифр и букв латинского алфавита; в расширении стандарта используются символы псевдографики и буквы национальных алфавитов.

    Функция Назначение
    32 пробел 48 0 64 @ 80 P 96 ` 112 p
    33 ! 49 1 65 A 81 Q 97 a 113 q
    34 « 50 2 66 B 82 R 98 b 114 r
    35 # 51 3 67 C 83 S 99 c 115 s
    36 $ 52 4 68 D 84 T 100 d 116 t
    37 % 53 5 69 E 85 U 101 e 117 u
    38 & 54 6 70 F 86 V 102 f 118 v
    39 ‘ 55 7 71 G 87 W 103 g 119 w
    40 ( 56 8 72 H 88 X 104 h 120 x
    41 ) 57 9 73 I 89 Y 105 i 121 y
    42 * 58 : 74 J 90 Z 106 j 122 z
    43 + 59 ; 75 K 91 [ 107 k 123 <
    44 , 60 78 N 94 ^ 110 n 126
    47 / 63 ? 79 O 95 _ 111 o 127

    Строковая константа Паскаля – последовательность символов, заключенная в апострофы. Например, ‘строковая константа’, ‘243’. Два следующих друг за другом апострофа (») обозначают пустую строку, т.е. строку с нулевой длиной.

    Описание строковой переменной Паскаля

    Для описания строковых переменных в Паскале существует предопределенный тип string.

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

    Пример описания строковой переменной в Паскале:

    В приведенном выше описании строковая переменная s1 может содержать не более 10 символов, переменная s2 – не более 20 символов. Если же при описании строки ее максимальная длина не указывается, то по умолчанию принимается максимально допустимая длина, равная 255 символам (переменная smax)..

    Символы в строке упорядочены, каждый из них имеет порядковый номер, начиная с первого. Имеется возможность обратиться к любому элементу строки, указав его номер, так же как это делается в одномерных массивах. Например, s1[2] позволяет обратиться ко второму символу в строке s1, при этом мы можем поменять это значение, выполнив оператор присваивания s1[2]:= ‘r’, можем вывести на экран это значение или присвоить его другой переменной.

    Действия со строками в Паскале

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

    Операции отношения позволяют сравнивать строки на отношение равенства (=), неравенства (<>), больше (>), меньше ( =), меньше или равно ( Пример действий со строками в Паскале:

    ‘строка’<>‘строки’ (верно, т.к. не совпадают последние символы);

    ‘Abc’ ‘век’ (отношение верно, т.к. буква ‘г’ в алфавите стоит после буквы ‘в’, а, следовательно, имеет больший код).

    Стандартные функции для работы со строками в Паскале

    Copy (S, poz, n) выделяет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – любое строковое выражение, poz, n – целочисленные выражения.

    Значение S Выражение Результат
    ‘строка символов’ Copy(S,3,3) рок

    Concat (s1, s2. sn) выполняет слияние строк s1, s2. sn в одну строку.

    Выражение Результат
    Concat(‘язык’, », ‘Pascal’) ‘язык Pascal’

    Length(S) определяет текущую длину строкового выражения S. Результат – значение целого типа.

    Значение S Выражение Результат
    ‘(а+в)*с’ Length(s) 7

    Pos(subS, S) определяет позицию первого вхождения подстроки subS в строку S. Результат – целое число, равное номеру позиции, где находится первый символ искомой подстроки. Если вхождение подстроки не обнаружено, то результат функции будет равен 0.

    Значение S Выражение Результат
    ‘предложение’ Pos(‘е’, S) 3
    ‘предложение’ Pos(‘a’, S)

    Стандартные процедуры для работы со строками в Паскале

    Delete (S, poz, n) удаляет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – строковая переменная (в данном случае нельзя записать никакое другое строковое выражение, кроме имени строковой переменной, т.к. только с именем переменной связана область памяти, куда будет помещен результат выполнения процедуры); poz, n – любые целочисленные выражения.

    Исходное значение S Оператор процедуры Конечное зн-е S
    ‘abcdefg’ Delete(s, 2, 3) ‘aefg’

    Insert(subS, S, poz) вставляет в строку S, начиная с позиции poz, подстроку subS. Здесь subS – любое строковое выражение, S – строковая переменная (именно ей будет присвоен результат выполнения процедуры), poz – целочисленное выражение.

    Исходное значение S Оператор процедуры Конечное зн-е S
    ‘рис. 2’ Insert(‘№’, S, 6) ‘рис. №2’

    Процедуры преобразования типов в Паскале

    Str(x, S) преобразует число x в строковый формат. Здесь x – любое числовое выражение, S – строковая переменная. В процедуре есть возможность задавать формат числа x. Например, str(x: 8: 3, S), где 8 – общее число знаков в числе x, а 3 – число знаков после запятой.

    Оператор процедуры Значение S
    Str (sin(1):6:4, S) ‘0.0175’
    Str (3456, S) ‘3456’

    Val(S, x, kod) преобразует строку символов S в число x. Здесь S – строковое выражение, x – числовая переменная (именно туда будет помещен результат), kod – целочисленная переменная (типа integer), которая равна номеру позиции в строке S, начиная с которой произошла ошибка преобразования, если преобразование прошло без ошибок, то переменная kod равна 0.

    Тип X Оператор процедуры Значение X Значение kod
    Real Val(‘12.34’, x, kod) 12.34
    Integer Val(‘12.34’, x, kod) 12 3

    Программирование

    Исходники Pascal (127)

    Справочник

    Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту

    лабы по информатике, егэ

    лабораторные работы и задачи по программированию и информатике, егэ по информатике

    Pascal: Занятие № 7. Подпрограммы: процедуры в Pascal

    Процедуры в Паскале

    Подпрограмма — это фрагмент кода, который имеет свое имя и создается в случае необходимости выполнять этот код несколько (много) раз. Подпрограмма описывается единожды перед началом основной программы (до begin ). Компилятор пропускает данный фрагмент кода, пока в основной программе не встретит «вызов» подпрограммы, который выглядит как обращение к ней по имени (возможно, имени с аргументами, указанными в скобках).

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

    Итак, рассмотрим синтаксис объявления и описания процедуры в Паскале

    procedure pr; var i:integer; begin for i:=1 to 60 do begin <тело подпрограммы>write(‘*’); writeln; end; end; <конец подпрограммы>begin pr; <вызов процедуры>end.

    В данном примере работы с процедурой в Паскале очевидно, что компилятор пропустит блок описания процедуры и дойдет до основной программы (9 строка кода). И только после того, как встретится вызов процедуры (10 строка), компилятор перейдет к ее выполнению, вернувшись к строке 1.

    Процедуры с параметрами. Фактические и формальные параметры

    Рассмотрим пример необходимости использования процедуры.

    Особенность: Три похожие фигуры.

  • общее: размеры, угол поворота
  • отличия: координаты, цвет

    Алгоритм решения:

    • выделить одинаковые или похожие действия (три фигуры);
    • найти в них общее (размеры, форма, угол поворота) и отличия (координаты, цвет);
    • отличия записать в виде неизвестных переменных, они будут параметрами процедуры.

    Решение на паскале:
    Процедура:

    uses GraphABC; procedure Tr( x, y: integer; color:system.Drawing.Color); begin MoveTo(x, y); LineTo(x, y-60); LineTo(x+100, y); LineTo(x, y); FloodFill(x+20, y-20,color); end; begin SetPenColor(clBlack); Tr(100, 100, clBlue); Tr(200, 100, clGreen); Tr(200, 160, clRed); end.

    Рассмотрим синтаксис объявления и описания процедуры с параметрами в Паскале.

    Параметры процедуры (в некоторых языках они называются аргументами) указываются в скобках после ее имени (в объявлении).

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

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

    var s:char; procedure pr(a:char); var i:integer; begin for i:=1 to 60 do begin write(a); writeln; end; end; begin writeln(‘simvol’); readln(s); pr(s); end.

    В данном примере при вызове процедуры компилятор заменит формальный параметр a фактическим параметром s , т.е. тем символом, который будет введен с клавиатуры. Оба параметра имеют тип данных char .

    • число фактических параметров должно быть равно числу формальных параметров;
    • соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу данных.

    Процедуры с параметрами. Параметр-переменная

    var x,y,m,n:integer; procedure MaxNumber(a,b:integer;var max:integer); begin if a>b then max:=a else max:=b; end; begin write(‘vvedite x,y’); readln(x,y); MaxNumber(x,y,m); <фактические параметры>writeln(‘max=’,m) end.

    В примере формальные параметры a и b служат для помещения в них сравниваемых чисел, а параметр-переменная max — для сохранения в ней максимального из двух чисел. Параметр-переменная или выходной параметр передает свое значение в основную программу (фактическому параметру m ), т.е. возвращает значение, тогда как формальные параметры-значения (входной параметр), наоборот, принимают значения из основной программы (из фактических параметров x и y ). Для параметра-переменной ( max ) используются те ячейки памяти, которые отведены под соответствующий параметр при вызове процедуры (ячейка m ).

    Таким образом, сформулируем понятия:

    Если в качестве формального параметра указана обычная переменная с указанием ее типа, то такой параметр есть параметр-значение или входной параметр ( a и b в примере). Тип данных формального параметра-значения должен соответствовать типу данных его фактического параметра ( a и b должны попарно соответствовать типу данных x и y ).

    Если перед именем формального параметра в объявлении процедуры стоит служебное слово var, то такой параметр называется параметром-переменной или выходным параметром ( max в примере). Для него используются те ячейки памяти, которые отведены под соответствующий параметр при вызове процедуры ( m ). Фактический параметр, соответствующий параметру-переменной, может быть только переменной (не константой, не литералом и не выражением).

    var x,y:integer; procedure exchange(a: integer;var b:integer); var c:integer; begin if a>b then begin c:=a; a:=b; b:=c; <второй параметр процедуры - b - всегда будет максимальным>end; end; begin writeln(‘введите два числа’); readln(x,y); exchange (x,y); writeln(‘max=’,y) end.

    Используя данный способ решения задачи, мы обошлись без третьего параметра. Для этого в процедуре мы использовали еще одну локальную переменную c . Процедура меняет значения переменных a и b таким образом, чтобы b всегда была максимальной. Поэтому в 15 строке программы в качестве максимальной выводится второй параметр ( y ), соответствующий формальному параметру b .

    1. Необходимо определить наибольший общий делитель двух введенных чисел, используя цикл.
    2. Необходимо определить наибольший общий делитель двух введенных чисел, используя процедуру (два параметра-значения, один параметр-переменная).
    • Вводятся a и b (например, 18 и 24)
    • В цикле повторяем действия:
    • Если а 18
  • если b>a -> swap(a,b)
    24/18 = 1(6) a=6, b=18 6
    18/6 =3(0) a=0, b=6 6
    128 и 56
    128/56=2(16) a=16,b=56 16
    56/16=3(8) a=8,b=16 8
    16/8=2(0) a=0, b=8 8

    0 do begin if a

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

    const n = 10; var i:integer; a, b: array[1..n] of integer; procedure arr_out (k:integer; arr: array[1..n] of integer); var i: byte; begin write (‘вывод массива: ‘); for i := 1 to k do write (arr[i]:4); writeln; end; begin for i:=1 to n do a[i]:=random(10); arr_out (n, a); end.

    Пояснение:
    Тело основной программы:
    — формирование элементов массива (с функцией random ).
    — вызов процедуры с двумя параметрами: количество элементов, массив.
    Тело процедуры:
    — вывод элементов массива с использованием параметров

    Продолжим нашу задачу:

    const n = 10; var a, b: array[1..n] of integer; procedure arr_rand (k:integer; var arr: array[1..n] of integer); var i: byte; begin write (‘Заполнение массива случайными числами ‘); randomize; for i := 1 to k do arr[i]:=random(100); end; begin arr_rand (n, a); end.

    Самостоятельная работа

    Общее задание 2: Описать процедуру Mean(X, Y, AMean, GMean) , вычисляющую:

    • среднее арифметическое AMean = (X+Y)/2
    • и среднее геометрическое GMean = √X*Y двух положительных вещественных чисел X и Y .

    X и Y/ — входные параметры, AMean и GMean — выходные параметры вещественного типа.
    В основной программе: Для заданных A, B, C, D найти среднее арифметическое и среднее геометрическое для пар (A, B), (A, C), (A, D), используя созданную процедуру.

    1 вариант: для 5 одномерных массивов определять произведение элементов каждого массива, используя процедуру с двумя параметрами — число элементов массива и параметр-переменная для вывода произведения.

    2 вариант: для 5 одномерных массивов определять минимальный элемент каждого массива, используя процедуру с двумя параметрами — число элементов массива и параметр-переменная для вывода минимального элемента.

    * сложное С помощью процедуры формировать случайным образом одномерные массивы из 10 элементов (значения от -20 до +20). Вызывать процедуру до тех пор, пока среди значений не появится ноль.

    Цукерберг рекомендует:  Создание простейшего REST-сервера на JavaScript с Node.js
  • Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих