Код программы на Pascal представляет собой некоторое количество строк, а они в свою очередь состоят из символов. Совокупность последних и следует называть алфавитом языка. В него входят:
Идентификаторы
Идентификаторы – это имена переменных, типов, констант, функций и процедур. К ним можно отнести следующие требования и свойства:
- Идентификатор может содержать строчные и прописные латинские буквы, символ подчеркивания и арабские цифры;
- Первый символ идентификатора обязательно должен быть латинской буквой;
- В средине не должно быть пробелов;
- Буквы не чувствительны к регистру;
- Длина идентификатора не ограничена, но перенос его части на новую строку не предусмотрен;
- Идентификатора не должен совпадать с зарезервированным словом.
Стоить отметить, что хотя называть переменные, константы и т. д. именами логически связанными с их назначением не обязательно, но все же это делать желательно. Ваш код может просматривать кто-то другой, да и вы сами можете делать это спустя какое-то время, и будет полезно, например переменную, отвечающую за год, именовать year.
Pascal | Программа генератор паролей
Арифметические операции
Кроме тех арифметических операций, описанных ранее, Pascal имеет еще два: DIV и MOD. Весь список будет выглядеть так:
Первые четыре операции ни чем не отличаются от тех, что мы изучали в школе. А DIV и MOD будут работать, например следующим образом:
9 DIV 4 = 2 9 MOD 2 = 1
Деление и умножение имеют наибольший приоритет, следовательно, выполняются перед операциями сложения и вычитания.
Кроме операций арифметики и отношений в данном ЯП есть логические операции:
отрицание (NOT), логическое сложение (OR), логическое умножение (AND).
Список приоритетов, (от высшего к низшему) рассмотренных операций, имеет следующий вид:
Источник: kvodo.ru
Какие символы можно использовать при записи программы на языке Паскаль?
program p_1; var x,y: real; beginwriteln (‘vvedite x’); readln(x); writeln (‘vvedite y’); readln(y) ; if x=1 then y: =3; x: =y-x; y: =2*x; x: =2*y+x; y: =y+x/2; writeln(x,»,y); readln; end.
Ответ разместил: koteg2
10.03.2019 18:48
writeln (‘введите слово и символ-‘);
for i: =1 to length(a) do
if copy (s,i,1)=a then writeln (i);
Ответ разместил: петя212
30.04.2020 09:29
f и * (хотя если в «» то можно всё )
Другие вопросы по Информатике
Склавиатуры вводятся n чисел. составьте программу, которая определяет количество отрицательных, количество положительных и количество нулей среди введенных чисел. значение n вводит.
Источник: voprosi-i-otvety.com
String – строчный тип данных, процедуры и функции для работы со строками
Сегодня мы познакомимся со строковым типом данных — String. Как ясно из определения, в переменных такого типа можно сохранять строки.
Программирование Pascal с нуля | Информатика ОГЭ 2022 | Умскул
Порой приходится быть непоследовательными. Мы с самого первого урока имеем дело со строками, а изучать их берёмся только сейчас.
Вначале поговорим об ограничениях, которые накладываются на переменные этого типа.
Когда при помощи процедур write и writeln мы выводили сообщения в программах на экран, то так или иначе касались строк. И строки эти мы обособляли одиночными кавычками — апострофами «’». Из этого вытекает первое ограничение: апостроф не может являться частью строки. Точнее, может, но его для этого нужно «экранировать», мы об этом поговорим позже.
Второе ограничение накладывается на длину передаваемых в программе строк. И длина эта не может превышать 255 символов. При этом на каждую переменную такого типа отводится до 256 байтов: 255 — собственно на строку, а в нулевом байте сохраняется реальная длина переданных данных. Вдумайтесь, для хранения чисел мы использовали 1, 2, 4 или 6 байтов памяти, а для строк отводится до 256 байтов!
Если вспомнить, что Паскаль как язык программирования появился в 1968-1969 годах, и на тогдашних компьютерах было очень мало оперативной памяти, то отдавать по 256 байтов на данные какого-то одного типа — было почти расточительством. Сегодня же мы эту оперативку не считаем вовсе.
Если честно, то современные среды разработки позволяют сохранять в переменную типа String почти ничем не ограниченные строки. Строго говоря, ограничения всё-таки есть, но они находятся близко к объёму оперативной памяти вашего компьютера. Я же с самого начала решил рассказывать в своих статьях и видео о традиционном паскале, поэтому мы эту скользкую тему обойдём.
При наличии современных кодировок и кодовых страниц, я даже не берусь считать, сколько байтов отводит для хранения каждой переменной типа String наша среда разработки — Pascal ABC.Net. Однако и в прежние времена механизм хранения строк был относительно гибким.
1 байт = 8 битов. Бит — минимальная единица информации, в которой может в любой момент времени храниться 0 или 1. Если число состоит из восьми цифр, каждая из которых может принимать только два значения, то мы можем записать 2 8 различных чисел. 256 чисел от 0 до 255.
Если мы заранее знаем, что нам не будут нужны строки предельной длины, то объявляя переменную, можно указать не только тип, но и верхнее ограничение на размер, число меньше 255 символов.
program TypeString; var s: String[20]; BEGIN END.
При попытке сохранить большее количество символов (байтов) в объявленную таким образом переменную, Паскаль выдаст ошибку. Пример вышел так себе, мы только объявили в нём переменную. Теперь напишем совсем другую программу.
В ней мы объявим две строковые переменные и с их помощью выведем на экран текст «Привет, мир!», то есть выполним те же действия, что и на первом нашем уроке. Также воспользуемся процедурой writeln, но на этот раз не будем помещать в неё строку в явном виде, а воспользуемся для этого двумя переменными.
program TypeString; var s1, s2: String; BEGIN s1 := ‘Привет, ‘; s2 := ‘мир!’; writeln(s1, s2); readln; END.
Кстати, если строковая переменная объявлена без ограничений, то в её нулевом байте также хранится реальный размер строки, а не гипотетические 255 байтов. В частности, длина переменной s1 из примера выше равна 8 символам, а для s2 — 4 символа.
Обратите внимание, разбив всю нужную нам фразу на две части и поместив эти части в переменные, мы позаботились о том, чтобы куда-то попал и пробел. Если бы мы этого не сделали, то тексты двух строк при выводе на экран слиплись бы. Выходит, одна из задач программиста заключается в том, чтобы следить за орфографией и построением фраз в программах.
Если бы строковые данные можно было только выводить на экран, то они не стоили бы даже отведённой на их хранение оперативной памяти. Например, строки можно складывать. Давайте перепишем второй пример так, как показано ниже и запустим нашу программу на исполнение.
program TypeString; var s1, s2, s3: String; BEGIN s1 := ‘Привет, ‘; s2 := ‘мир!’; s3 := s1 + s2; writeln(s3); readln; END.
В окне вывода данных PascalABC или в окне программы при её компиляции, вы увидите тот же результат, что и раньше, однако внутренне программа устроена и работает несколько иначе. В переменную s3 мы поместили результат «сложения» двух других строк — переменных s1 и s2.
Пишу сложение в кавычках, так как это не сложение двух аргументов как в математике. Во всяком случае, от перемены мест «слагаемых» при использовании строк, зависит очень многое. Попробуйте у себя в примере поменять переменные s1 и s2 местами и снова запустите программу. Легко убедиться, что на экран по-прежнему выводится объединённая строка, вот только теперь в ней мало смысла. Итак, сложение строк называется мудрёным словом конкатенация и обозначает их объединение в том порядке, как они и записаны.
В новую переменную сначала помещается строка из первого аргумента, затем в её конец без каких-либо разделителей (о пробелах, если они нужны, мы должны позаботиться сами) помещается второй аргумент и так далее. Таким образом можно конкатенировать — объединять более двух строчек.
Кому-то милее знак сложения между строками, а кого-то он только путает. Что ж, в Паскале для конкатенации строк имеется специальная функция Concat, которой в скобках через запятую можно указать от двух и более аргументов-строк. Возможно, именно вам подобная форма записи покажется более наглядной.
Я обещал, что расскажу, как можно обмануть Паскаль и всё-таки поместить одиночную кавычку-апостроф в строку как её часть. Всё просто, для этого сам символ необходимо продублировать — написать слитно не один, а сразу два апострофа. Вот вам очередной пример:
program TypeString; var s1, s2: String; BEGIN s1 := ‘Привет, ‘; s2 := ‘Д»Артаньян’; writeln(s1, s2); readln; END.
Как видите, ничего сложного.
До этого момента значения переменным мы присваивали в явном виде, через операцию присваивания. Теперь же мы напишем программу, в которой попросим пользователя ввести некое значение с клавиатуры, а затем сохраним его в нашу переменную.
program TypeString; var s1: String; userName: String[20]; BEGIN s1 := ‘Привет, ‘; write(‘Введите пожалуйста ваше имя: ‘); readln(userName); writeln(s1, userName); readln; END.
И снова ничего сложного, разница заключается лишь в том, что до сих пор мы просили в наших программах пользователя вводить числа, а теперь вот попросили строку. Программа вывела на экран просьбу ввести ваше имя, я написал своё, программа сохранила его в переменную, а затем вывела на экран приветствие, используя только что полученные с клавиатуры данные.
Когда мы непосредственно в программе присваиваем переменным какие-то строковые значения, нам несложно сосчитать длину этих строк, но как только мы вносим в программу интерактив — отдаём хотя бы на время управление пользователю, то теряем контроль над ситуацией и мы точно не сможем знать количество символов, хранимых в той или иной переменной типа String. А как быть, если нам необходимо узнать фактическую длину строковой переменной? Для этого у Паскаля есть функция Length. Она как раз и возвращает в качестве значения целое число — фактическую длину строки. Смотрите пример ниже.
program TypeString; var s1, s2, s3: String; i: Integer; BEGIN s1 := ‘Привет, ‘; s2 := ‘мир!’; s3 := s1 + s2; i := length(s3); writeln(‘Длина строки, записанной в переменную s3 равна ‘, i); readln; END.
Кроме того, любую строку символов можно рассматривать в качестве массива, состоящего из отдельных элементов. Мы с вами ещё не проходили массивов, снова забегаем вперёд, но сегодня коснёмся этой темы лишь немного, а подробно поговорим о массивах в одном из ближайших уроков.
Для обращения к конкретному символу в строковой переменной следует после её имени в квадратных скобках передать его номер. Приведу ещё один пример:
program TypeString; var s1, s2, s3: String; BEGIN s1 := ‘Привет, ‘; s2 := ‘мир!’; s3 := s1 + s2; writeln(s3[1]); readln; END.
Запустив программу мы убеждаемся, что символы в строке нумеруются, начиная с единицы. Это вызывает путаницу у новичков. Очень многие сущности в программировании начинают нумероваться с нуля, а в строке нулевой байт отведён для хранения её фактической длины, это мы уже неоднократно обсуждали. Следовательно, номера элементов строки — обычные натуральные числа.
Прекрасно, распечатать первый, второй или третий символ из нашей строки мы можем. А как напечатать самый последний, да ещё и в том случае, когда нам не известна заранее длина строки? Здесь нам также поможет функция Length.
program TypeString; var s1, s2, s3: String; BEGIN s1 := ‘Привет, ‘; s2 := ‘мир!’; s3 := s1 + s2; writeln(s3[length(s3)]); readln; END.
Может показаться, что код выглядит громоздко. Если вам так кажется, воспользуйтесь листингом 7 и подставьте в квадратные скобки переменную i. Во всяком случае, в современных компьютерах более чем достаточно оперативки и от одной дополнительной переменной мы потеряем немного.