Remkomplekty.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Массив string паскаль

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

Двумерный массив в Паскале представляет собой таблицу, состоящую из нескольких одномерных массивов. Двумерные массивы 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: Занятие № 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

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.

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

    Язык паскаль онлайн

    Тип string (строковый) в паскале – Процедуры и функции для работы со строками

      Browse: Home / Самоучитель паскаль онлайн / Тип string (строковый) в паскале – Процедуры и функции для работы со строками

    Строковой тип предназначен для хранения определенных строк , например имени пользователя.

    У этого типа есть определенные особенности , которые мы рассмотрим в данной статье.

    Строковый тип может хранить в себе до 255 символов ( пробелы так же следует учитывать ).

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

    Тип данных string можно объявить двумя способами : с обозначением длины строки и без обозначения. При простом объявлении строки в блоке var :

    для переменной text будет предоставлено 255 символов ( максимальное количество ). Но мы можем заранее понимать , что какая-либо переменная будет очень короткой и тогда мы используем объявление с обозначением длины :

    В данной строке поместятся всего 20 символов , которые будут занимать 21 байт , в отличии от 256 байт , которые займет целая строка. Экономия памяти на лицо.

    Вы наверное уже задались вопросом : Почему строка в 255 символов занимает 256 байт ? все дело в том что строка хранит в себе не только символы , но и размер самой строки в нашем случае это 255.

    Читать еще:  While else паскаль

    Операции со строками :

    Несколько строк можно складывать. Например вывод имени и фамилии одного человека может выглядеть так :

    В данном случае , если мы введем Игорь Петров , то получим на выходе программы ИгорьПетров.

    Строки также можно сравнивать ( больше , меньше или равно ). Пример сравнения легче всего рассмотреть на сравнении имен : Игорь и Иван.
    Строки сравниваются по символам : чем ближе символ к началу алфавита тем меньше он «весит». Получается , что имя Игорь будет больше , так как 2 символ в их имени больше у Игоря.

    Функция length :

    Функция length возвращает длину строки. Например функция length(‘привет’) вернет нам число 6 , так как слово привет состоит из 6 символов. С помощью этой функции вы сможете узнать длину любой строки.

    Функция pos :

    Давайте рассмотрим такую задачу : нам нужно найти на какой позиции в строке встречается некоторое слово :

    В этом случае на выходе программы мы получим позицию слова , которое встречается в строке в первый раз. Если такого слова нет , то функция возвращает 0.

    Как работает функция pos : pos( какое слово ищем , в какой строке );

    Функция insert :

    Данная функция добавляет в строку любую другую строку . Она принимает в себя 3 атрибута : insert( какую строку добавить , в какую строку , на какую позицию ).

    Функция delete :

    Эта функция удаляет определенное количество символов из строки и несет в себе 3 атрибута : delete( из какой строки , с какой позиции , сколько символов удалить ).

    На заметку :

    Строку так же можно представить в виде массива длинной в 255 ячеек , заполненных символами. Пример :

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

    Для закрепления всех этих функция давайте рассмотрим такую задачу : Требуется ввести строку и ввести слово , которое будет заменено на слово «( удалено )».

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

    Length (s: string): integer;

    Функция Length возвращает в качестве результата значение текущей длины строки-параметра.

    Пример. n: = length (‘Pascal’);

    Concat (s1, [s2, …, sn]: string): string

    Функция Concat выполняет слияние строк-параметров, которые могут быть произвольное количество. Каждый параметр выражением строчной типа. Если длина строки-результата превышает 255 символов, то она усекается до 255 символов. Эта функция эквивалентна операции конкатенации «+» и работает чуть менее эффективно, чем эта операция.

    Функция Copy возвращает подстроку, выделенный из исходной строки s, длиной count символов, начиная с символа под номером index.

    Пример. s: = ‘Система Turbo Pascal’;

    s4 = copy (s, 15, 6);

    Delete (var s: string; index, count: integer)

    Процедура Delete удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.

    Пример. s: = ‘Система Turbo Pascal’;

    Insert (source: string; var s: string; index: integer)

    Процедура Insert предназначена для вставки строки source в строку s, начиная с символа index этой строки.

    Пример. s: = ‘Система Pascal’;

    insert ( ‘Turbo’, s, 9);

    Pos (substr, s: string): byte

    Функция Pos осуществляет поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.

    Пример. s: = ‘Система Turbo Pascal’;

    x1 = pos ( ‘Pascal’, s);

    x2 = pos ( ‘Basic’, s);

    Str (X: арифметическое выражение; var st: string)

    Процедура Str преобразует числовое выражение X в его строчное представление и помещает результат в st.

    Val (st: string; x: числовая переменная; var code: integer)

    Процедура Val преобразует строчный запись числа, содержащегося в st, в числовое представление, помещая результат в x. x — может быть как целиком, так и действительной переменной. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразования не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равен 0, то это свидетельствует об успешном превращении.

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

    Chr (n: byte): char

    Функция Chr возвращает символ по коду, равный n. Если n можно представить как числовую константу, то можно пользоваться записью #n.

    Ord (ch: char): byte;

    Функция Ord возвращает код символа ch.

    UpCase (c: char): char;

    Если c — маленькая латинская буква, то функция UpCase возвращает соответствующую большую латинскую букву, в противном случае символ c возвращается без изменения.

    Массив string паскаль

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

    n — максимально возможная длина строки — целое число в диапазоне 1..255. Если этот параметр опущен, то по умолчанию он принимается равным 255.

    Строковые константы записываются как последовательности символов, ограниченные апострофами. Допускается формирование строк с использованием записи символов по десятичному коду (в виде комбинации # и кода символа) и управляющих символов (комбинации ^ и некоторых заглавных латинских букв).

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

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

    Читать еще:  Вывод массива паскаль

    Выражения типа char можно присваивать любым строковым переменным.

    В Турбо Паскаль имеется простой доступ к отдельным символам строковой переменной: i-й символ переменной st записывается как st[i]. Например, если st — это ‘Строка’, то st[1] — это ‘С’, st[2] — это ‘т’, st[3] — ‘р’ и так далее.

    Над строковыми данными определена операция слияния (конкантенации), обозначаемая знаком +. Например:

    В этом примере переменная c приобретет значение ‘TurboPascal’.

    Кроме слияния над строками определены операции сравнения ,=,<>, =. Две строки сравниваются посимвольно, слева направо, по кодам символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются символом с кодом 0.

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

    В системе Turbo Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками. Ниже приводится список этих процедур и функций с краткими пояснениями. Функция возвращает в качестве результата значение текущей длины строки-параметра

    Пример.
    Функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина строки-результата превышает 255 символов, то она усекается до 255 символов. Данная функция эквивалентна операции конкатенации «+» и работает немного менее эффективно, чем эта операция.
    Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index.

    Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.

    Пример.
    Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки.

    Пример.
    Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.

    Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.
    Процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x. x — может быть как целой, так и действительной переменной. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равно 0, то это свидетельствует об успешно произошедшем преобразовании.

    В дополнение приведем некоторые функции, связанные с типом char, но которые тем не менее часто используются при работе со строками.
    Функция возвращает символ по коду, равному значению выражения n. Если n можно представить как числовую константу, то можно также пользоваться записью #n.
    В данном случае функция возвращает код символа ch.
    Если c — строчная латинская буква, то функция возвращает соответствующую прописную латинскую букву, в противном случае символ c возвращается без изменения.

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

    Ввод и вывод одномерных массивов в Паскале

    Ввод и вывод массивов осуществляется поэлементно.

    Введем одномерный массив Х, состоящий из 30 элементов, то есть необходимо ввести некую последовательность элементов Х1, Х2, …, Х30.

    Пусть iиндекс (порядковый номер) элемента в массиве Х. Тогда

    Для ввода массива можно использовать любой цикл.

    Первый вариант: ввод массива с использованием цикла с предусловием (Рисунок 1).

    Program Primer_1;

    Var i: integer;

    X: array [1..30] of Integer;

    Begin

    While i

    Второй вариант: ввод массива с использованием цикла с постусловием (Рисунок 2).

    Program Primer_2;

    Var i: integer;

    X: array [1..30] of Integer;

    Begin

    Repeat

    Read (X[i]); i := i + 1

    Until i > 30;

    End.

    Массив X введен с использованием цикла с постусловием.

    Третий вариант: ввод массива с использованием цикла с параметром (Рисунок 3).

    Program Primer_3;

    Vari: integer;

    X: array [1..30] of Integer;

    Begin

    For i := 1 To 30 Do Read (X[i]);

    End.

    Массив вводится с помощью цикла с параметром, где в качестве параметра используется индекс элемента массива (i).

    Вывод одномерного массива осуществляется аналогично.

    В программе вместо операторов Read или Readln используются операторы Write или Writeln. Но просто заменить одни операторы на другие здесь недостаточно. Для того чтобы выводимые значения не сливались между собой, надо явным образом вставлять между ними разделитель – пробел или перевод строки. Приведем два возможных способа вывода массива:

    • For i := 1 To n Do Write (X[i],’ ‘);
    • For i := 1 To n Do Writeln (x[i]).

    На первый взгляд второй способ может показаться более простым и удобным, но это далеко не всегда так. Результат работы такой программы зачастую неудобно, а то и просто невозможно анализировать. Ведь каждый элемент массива будет располагаться в отдельной строке, следовательно, мы не сможем увидеть более 25 элементов одновременно. Кроме того, очень часто массив требуется распечатать дважды, чтобы сравнить состояние массива до обработки и результат его обработки. В этом случае сравнение состояний массива гораздо удобнее проводить, если они распечатаны в двух соседних строках, а элементы выровнены по столбцам, то есть к варианту 1 должна быть добавлена еще и форматная печать (указано количество позиций, которое должно отводиться на печать одного элемента).

    Например, выведем одномерный массив Х1, Х2, …, Хn, состоящий из элементов вещественного типа, используя цикл с параметром (Рисунок 4):

    Program Primer_4;

    Const n = 30;

    Var i: Integer;

    X: Array [1..n] Of Real;

    Begin

    For i:= 1 To n Do Write (X[i] : 6 : 2, ‘ ‘);

  • Ссылка на основную публикацию
    ВсеИнструменты
    Adblock
    detector
    ×
    ×