Массив string паскаль — Мир ПК

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

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

Pascal: Занятие № 11. Строковый тип данных в Паскаль

Символьный тип char в Паскале

Символьной переменной соответствует тип char:

Инициализация символьной переменной:

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

Функция преобразует целое число, имеющее тип BYTE, в один символ ASCII-кода:

Функция возвращает порядковый номер символа параметра в таблице ASCII:

var i: integer; begin for i:=32 to 255 do write(chr(i):3); end.

Строковые переменные в Паскаль

Строковые переменные в Паскале имеют тип String

Объявление и инициализация строковой переменной:

var a:string; begin a:=’Привет всем!’; writeln(a); end.

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

var a:string; begin writeln(‘Введите слово’); readln(a); writeln(‘Вы ввели слово ‘,a); end.

Строка «рассматривается» компилятором, как массив букв:

Функции работы со строками в Pascal

Исходные данные Операция Результат
s3=’Мотороллер’
s4= ‘трон’
s5=’Корочка’
s6=’Рубашка’
s8=’2.73′

var s:string[30]; n,i:integer; begin writeln(‘введите текст’); readln(s); n:=0; for i:=1 to length(s) do if s[i]=’f’ then n:=n+1; write(‘в тексте букв f = ‘,n) end.

const m = [‘1’..’9′]; var s: string; i, k: byte; begin read(s); k := 0; for i := 1 to length(s) do if s[i] in m then inc(k); writeln(‘цифр = ‘, k); readln; end.

var a,b,c:string; i:longint; begin write(‘введите слово:’); readln(a); b:=»; for i:=1 to length(a) do b:=a[i]+b; if a=b then write(‘перевертыш’) else write(‘не перевертыш’); end.

String 6. Определить, встречается ли в тексте сочетание букв «ку».

String 7. Заменить данную букву в слове другой буквой (буквы вводит пользователь).

  • После того как строка считывается (вводится), измеряется ее длина (функция length).
  • Далее стока просматривается посимвольно в цикле while или for .
  • Если символ строки входит в множество букв ( const letters=[‘a’..’z’]; ), то этот символ прибавляется к первому элементу массива слов строки ( . array [1..100] of string ).
  • Если символ равен пробелу, то увеличиваем счетчик для массива слов и переходим к следующей итерации цикла.

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

    Примечание:
    Использовать функции: Pos, Copy, Delete

    Посимвольный ввод до пробела

    Посимвольный ввод удобен для «мгновенной» обработки символов в строке.

    Для организации массива символьных строк:

    1. Все данные разделяются одним пробелом. Нужно подсчитать, сколько студентов получили отметку 5.
    2. Вывести фамилии студентов, у которых оценка 2.
    3. Вывести фамилии студентов, родившихся в 1996 году.

    Пример:
    Входной текст: Алгоритм — это правила выполнения определенных действий!, предписание исполнителю! совершить последовательность действий!, набор команд для компьютера!
    Выходной текст: Алгоритм — это правила выполнения определенных действий, предписание исполнителю! совершить последовательность действий, набор команд для компьютера!

    Трудность низкая:
    Программа должна формировать в памяти вторую строковую переменную с измененным текстом, а потом выводить ее на экран.

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

    И напоследок рассмотрим олимпиадное задание по Паскалю:

    * Решить ту же задачу, в которой сдвиг будет не на 3 позиции, а на k, причем отрицательное значение является признаком сдвига влево, положительное — вправо.

    var a:char; i,n:byte; s,s1:string; begin s1:=»; readln(s); for i:=1 to length(s) do begin n:=ord(. ); n:=n+3; if n=123 then n:=97; <в ASCII 120 — x, 97 — a>if . ; <в ASCII 121 — y, 98 — b>if . ; <в ASCII 122 — z, 99 — c>a:=chr(. ); s1:=. ; end; writeln(s1) end.

    var a:char; i,n:byte; s,s1:string; begin s1:=»; readln(s); for i:=1 to length(s) do begin n:=ord(s[i]); n:=n+3; if n=123 then n:=97; <в ASCII 120 — x, 97 — a>if n=124 then n:=98; <в ASCII 121 — y, 98 — b>if n=125 then n:=99; <в ASCII 122 — z, 99 — c>a:=chr(n); s1:=s1+a; end; writeln(s1) end.

    Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

    Двумерные массивы паскаль

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

    Рассмотрим матрицу 3*3, то есть она будет состоять из 3 строк и 3 столбцов:

    Каждый элемент обладает 2-мя индексами. Первый — номер строки, в котором располагается элемент, а второй – номер столбца. Следовательно, индекс элемента определяется местом пересечением столбца и строки . Например, a13 – это элемент, стоящий в первой строке и в третьем столбце массива.

    Описание двумерного массива Паскаля.

    Имеется ряд методов объявления двумерного массива.

    Рассмотри способ, в котором указывается тип элемента и переменные.

    В данном варианте матрица mas состоит из 4 строк, в каждой из которых 9 столбцов. При этом мы можем обратиться к любой i -й строке через mas [ i ], а к j -му элементу внутри i строки – m [ i , j ].

    Во втором и третьем способе матрицу можно задать в одну строку.

    Как и в предыдущем варианте, матрица имеет 4 строки и 9 столбцов, обращение к какому-либо элементу массива имеет вид: mas [ i , j ]. Значит, что элемент, расположен в i -й строке и j -м столбце. Важно не перепутать строки со столбцами, иначе произойдет ошибка в ответе.

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

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

    в ходе выполнения такой программы матрице а можно присвоить значения матрицы b ( a := b ).

    Ввод двумерного массива Паскаля.

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

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

    Способ заполнения двумерного массива Паскаля зависит от поставленной задачи. Например, функцию random (N) позволяет заполнять матрицу случайными величинами a[i,j]:=random(25)-10. Некоторые задачи требуют содержание выражений в матрице. Не забывайте, что в любом случае должен быть определен каждый элемент в каждых строках и столбцах.

    Вывод двумерного массива Паскаля на экран.

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

    Примечание! Использовать операторы readln ( a [ i , j ]), writeln именно в таком виде, в противном случае компилятор не сможет считать и напечатать элемент. Ввод в программу операторов в таком виде readln (a), writeln (a) не допустим, так как а – это переменная типа массив.

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

    В памяти ЭВМ элементы двумерного массива располагаются последовательно и занимают несколько байт. Например, элементы массива типа integer, будут занимать по 2 байта. А весь массив займет S^2 байта, где S – количество элементов в массиве.

    В матрице для каждого элемента типа integer потребуется 2 байта памяти. Рассмотрим пример.

    В данном случае необходимо 24 байт памяти.

    Модель размещения массива M типа matrix в памяти.

    Для любого элемента предоставляется две ячейки памяти, размещение осуществляется от первой строки до нижней, в порядке изменения индекса.

    Между переменной и адресом ячейки устанавливается соответствие, однако, при объявлении матрицы программе известно только адрес начала массива, к остальным элементам адрес вычисляется по формуле:

    где Addres – местоположение первого элемента, выделенного для массива; I , J – индексы элемента в двумерном массиве; SizeElemt – размер элемента массива (например, 2 байта для элементов типа integer ); sum – количество элементов в строке.

    SizeElemt * sum *( I -1)+ SizeElemt *( J -1) — смещение относительно начала массива.

    Какой размер памяти выделяется для массива?

    Чтобы программа работала нормально, компьютер выделят память сегментами по 64 Кбайт. Один из сегментов отводится для данных, которые обрабатываются программой. Для каждой переменной отводится свой сегмент. Например, если переменная состоит из массива, то он не сможет занимать места больше, чем 65536 байт. Естественно, кроме массива в сегменте могут находится и другие переменные, поэтому объем памяти вычисляется по формуле 65536- S , где S – размер памяти, ранее отведенные под другие переменные.

    Рассмотрим пример, в котором:

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

    Можно без труда подсчитать количество элементов, которые допустимы по формуле: 65536/2 –1=32767. Однако, других переменных не должно быть. Матрицы обладают еще меньшими пределами индексов.

    Решим задачу с двумерным массивом Паскаля.

    Задача: Вычислить произведение ненулевых элементов матрицы.

    Решение:

    • Для начала нужно установить переменные: матрицу, состоящую из целочисленных элементов; P – произведение элементов, не равное 0; I , J – индексы массива; N , M – количество строк и столбцов в матрице.
    • Входные данные N , M пусть вводятся с клавиатуры, а матрица зададим с помощью функции random ().
    • Выходными параметром получим P (произведение).
    • Выведем матрицу на экран, для проверки работы программы.

    А теперь поговорим о процедурах.

    Примечание! Тип массива должен быть определен заранее. Например:

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

    Print – процедуры вывода на экран матрицы, которая передается по значению.

    Для реализации вложенных циклов внутри процедуры нужно ввести счетчики – k и h . Алгоритм вывода матрицы на экран был описан выше, используем это описанием.

    Итак, опишем ход выполнения программы.

    • Ввод значений N и M ;
    • Обращаемся к процедурам vvod ( a ) и print ( a ) для ввода и вывода матрицы соответственно, где а – матрица;
    • Переменной, которая отвечает за произведение P, присвоим значение 1;
    • Поочередно перебираем элементы матрицы с индексом 11 до элемента с индексом Каждый элемент матрицы должен удовлетворять условию: если a ij ? 0, то произведение P умножаем на элемент a ij ( P = P * a ij );
    • Выводим на экран результат произведения ненулевых элементов матрицы – P

    Pascal-Паскаль

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

    • Скачено бесплатно: 9293
    • Куплено: 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)

    Справочник

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

    Читать еще:  Что входит в алфавит языка паскаль

    Оценка статьи:
    1 звезда2 звезды3 звезды4 звезды5 звезд
    Загрузка…

    Ссылка на основную публикацию

    wpDiscuz

  • Запись опубликована в рубрике Языки программирования. Добавьте в закладки постоянную ссылку.