Invest-currency.ru

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

Символьный массив паскаль

Массив символов.

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

Инициализация массива символов.

  • Массив можно объявить и присвоить ему начальное значение непосредственно в разделе констант. При этом требуется соблюдение условия — длина текстовой константы должна равняться количеству элементов массива. CONST В: ARRAY[1 .. 50] OF CHAR = ‘Я учусь программировать’;
  • Массив символов можно ввести с клавиатуры как последовательность символов конечной длины N, не превышающей количество элементов массива — N ? HIGH(B) – LOW(B) + 1.

VAR ARRAY[1.. 500] OF CHAR; I, N: WORD;
BEGIN .
WRITELN(‘Введите длину строки текста не более 500 символов, N’);
READLN(N);
WRITELN(‘Введите строку текста В’);
FOR I :=1 ТО N DO READ(B[I]); .
Существенным недостатком этого способа ввода текста является необходимость знать точное количество символов N во вводимой строке.

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

VAR ARRAY[1..23] OF CHAR;
BEGIN .
В:= ‘Я учусь программировать’;

Вывод массива символов.

Массив символов можно вывести на экран монитора двумя способами.

  • Процедуры WRITELN и WRITE поддерживают вывод массива символов. Допускается запись — WRITELN(B), где В — идентификатор одномерного массива символов.
  • Содержимое массива символов можно выводить в цикле, используя оператор WRITE(B[I]). Ниже приведен фрагмент программы, обеспечивающей посимвольный вывод элементов массива B в строку.

WRITELN(‘Массив В содержит текст:’);
FOR I := LOW(B) ТО HIGH(B) DO WRITE(B[I]); WRITELN;
Пример 9. Ввести натуральное число N. Вывести строку S, представляющую запись этого числа в двоичной системе счисления. Для пояснения алгоритма преобразования десятичного числа в двоичную систему счисления используем пример на рис. 2.1.

PROGRAM PR9;
CONST B:ARRAY[1..10] OF CHAR = «;
VAR I, К, N: BYTE; S: STRING[1];
BEGIN
WRITELN(‘Введите число N’);
READLN(N);
К:= 0;
WHILE N> 1
DO BEGIN
К:= К + 1;
STR(N mod 2:1, S);
В[К] := S[1];
N := N div 2
END;
IF(N= 1) or (K = 0)
THEN BEGIN
К := К + 1;
STR(N mod 2:1, S);
B[K] := S[1]
END;
WRITELN(‘B двоичном коде число будет равно:’);
FOR I:= К DOWNTO 1 DO WR1TE(B[I]); <Вывод массива символов>
WRITELN
END.

Из этой программы видно, что строковая процедура STR, преобразующая число в строку, не принимает в качестве аргумента переменные типа CHAR. Именно по этой причине пришлось ввести строку S единичной длины.

Операции с массивами символов.

Массивы символов можно использовать в сцепках. Например, в операторе WRITELN в списке вывода допускается строковое выражение:
WRITELN(‘Результирующая строка:’ + B + ‘,’);
где i массив символов. Знак + означает операцию сцепки строк. Недостатком такого выражения является то, что пустые разряды массива B займут на экране свои позиции, и поэтому запятая может оказаться на значительном удалении от текста, хранимого в массиве B.
Массивы символов A и B в отличие от массивов всех других типов можно сравнивать между собой с помощью операций отношения =, <>; допускается использование также , =.
Сравнение массивов производится путем последовательного сравнения литер (элементов массивов) от наименьшего индекса до наибольшего индекса. Сравнение завершается при первом несовпадении или достижении верхнего индекса одного из массивов. Если Вам потребуется заправить картридж для принтера обращайтесь в надежный сервисный центр. Качественная заправка цветных картриджей HP по оптимальным ценам возможна как в офисе, так и на дому. Для достижения высокого качества печати оформляйте заявку, и опытные специалисты проведут все необходимые работы. Массивы A и B могут иметь разную размерность. В строковых выражениях сцепок массивы символов ничем не отличаются от строк. Так допустима следующая конструкция:
IF A+B>=’X = ‘ + B + ‘.’
THEN S := А + ‘за вычетом’ + В;
где A и B массивы символов, a S строка String.

Pascal-Паскаль

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

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

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

Понятие структуры

До сих пор мы работали с простыми типами данных – логический ( boolean ), целый ( integer , word , byte , longint ), вещественный ( real ), символьный ( char ). Любой алгоритм можно запрограммировать с помощью этих четырех базовых типов. Но для обработки информации о многообразном реальном мире требуются данные, имеющие более сложное строение. Такие сложные конструкции, основанные на простейших скалярных типах, называются структурами. Структура – некоторый составной тип данных, составленный из базовых скалярных. Если структура не изменяет своего строения на протяжении всего выполнения программы, в которой она описана, то такую структуру называют статической.

Массив – однородная совокупность элементов

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

Массивы состоят из ограниченного числа компонент, причем все компоненты массива имеют один и тот же тип, называемый базовым. Структура массива всегда однородна. Массив может состоять из элементов типа integer , real или char , либо других однотипных элементов. Из этого, правда, не следует делать вывод, что компоненты массива могут иметь только скалярный тип.

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

Индекс массива

Номер элемента массива называется индексом. Индекс – это значение порядкового типа, определенного, как тип индекса данного массива. Очень часто это целочисленный тип ( integer , word или byte ), но может быть и логический и символьный.

Читать еще:  Как программировать на php

Описание массива в Паскале. В языке Паскаль тип массива задается с использованием специального слова array (англ. – массив), и его объявление в программе выглядит следующим образом:

где I – тип индекса массива, T – тип его элементов.

Можно описывать сразу переменные типа массив, т.е. в разделе описания переменных:

Обычно тип индекса характеризуется некоторым диапазоном значений любого порядкового типа : I 1 .. I n . Например, индексы могут изменяться в диапазоне 1..20 или ‘ a ‘..’ n ‘.

При этом длину массива Паскаля характеризует выражение:

Вот, например, объявление двух типов: vector в виде массива Паскаля из 10 целых чисел и stroka в виде массива из 256 символов:

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

Опишем переменные типа vector и stroka :

далее в программе мы можем обращаться к отдельным элементам массива a или c . Например, a [5]:=23; c [1]:=’ w ‘; a [7]:= a [5]*2; writeln ( c [1], c [3]).

Вычисление индекса массива Паскаля

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

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

Пример программы с ошибкой массива Паскаля

Хотя данная программа полностью соответствует синтаксису языка, и транслятор «пропустит» ее, на стадии выполнения произойдет ошибка выхода за пределы массива Паскаля. При n =45 выражение n *2=90, компьютер сделает попытку обратиться к элементу массива a [90], но такого элемента нет, поскольку описан массив размерностью 80.

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

Из всего этого следует сделать вывод: программисту надо быть очень аккуратным при работе с индексами массива.

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

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

то можно переменной a присвоить значение переменной b ( a := b ). При этом каждому элементу массива a будет присвоено соответствующее значение из массива b. Все остальные действия над массивами Паскаля производятся поэлементно (это важно!).

Ввод массива Паскаля

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

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

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

Пример фрагмента программы заполнения массива Паскаля случайными числами

Вывод массива Паскаля

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

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

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

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

На экране мы увидим, к примеру, следующие значения:

Пример решения задачи с использованием массивов Паскаля

Задача: даны два n -мерных вектора. Найти сумму этих векторов.

Решение задачи:

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

Ход решения задачи:

  • определим количество элементов (размерность) массивов, введем значение n ;
  • введем массив a ;
  • введем массив b ;
  • в цикле, перебирая значения индекса i от 1 до n , вычислим последовательно значения элементов массива c по формуле:

Текст программы :

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

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

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

Справочник

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

Методическое пособие по теме «символьные массивы в Паскаль»

Как организовать дистанционное обучение во время карантина?

Помогает проект «Инфоурок»

var s: string [n]; var s: string ;

Например, если st — это ‘Строка’, то st[1] — это ‘С’, st[2] — это ‘т’, st[3] — ‘р’ и т.д

Например: a := ‘ Turbo ‘; b := ‘ Pascal ‘; c := a + b ; c станет равна ‘ TurboPascal ‘.

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

Length (s:string):integer; Пример :
n := length(‘Pascal’);

Concat (s1,[s2. sn]:string):string;

Copy (s:string; index:integer; count:integer):string;

Пример .
s := ‘ Система Turbo Pascal’;
s2 := copy(s, 1, 7);
s3 := copy(s, 9, 5);
s4 := copy(s, 15, 6);

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

Пример .
s := ‘ Система Turbo Pascal’
delete(s,8,6);

var s: string [n]; var s: string ;

Например, если st — это ‘Строка’, то st[1] — это ‘С’, st[2] — это ‘т’, st[3] — ‘р’ и т.д

Например: a := ‘ Turbo ‘; b := ‘ Pascal ‘; c := a + b ; c станет равна ‘ TurboPascal ‘.

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

Length (s:string):integer; Пример :
n := length(‘Pascal’);

Concat (s1,[s2. sn]:string):string;

Copy (s:string; index:integer; count:integer):string;

Пример .
s := ‘ Система Turbo Pascal’;
s2 := copy(s, 1, 7);
s3 := copy(s, 9, 5);
s4 := copy(s, 15, 6);

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

Пример .
s := ‘ Система Turbo Pascal’
delete(s,8,6);

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

Пример .
s := ‘ Система Pascal’;
insert(‘Turbo ‘,s,9);

Пример .
s := ‘ Система Turbo Pascal’;
x1 := pos(‘Pascal’, s);

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

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

Ord (ch: char): byte;

UpCase (c: char): char;

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

Пример .
s := ‘ Система Pascal’;
insert(‘Turbo ‘,s,9);

Пример .
s := ‘ Система Turbo Pascal’;
x1 := pos(‘Pascal’, s);

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

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

Ord (ch: char): byte;

UpCase (c: char): char;

Выберите книгу со скидкой:

История России. С древнейших времен до XVI века. 6 класс. Контурные карты

350 руб. 55.00 руб.

Контурные карты История России конец XVII-XVIII век. 8 класс. (Новые)

350 руб. 55.00 руб.

История России. 7 класс. Рабочая тетрадь.

350 руб. 137.00 руб.

История России. 6 класс. Рабочая тетрадь.

350 руб. 137.00 руб.

История России XX-начало XXI в. Атлас с контурными картами.

350 руб. 106.00 руб.

История России. XVI-конец XVII века. 7 класс. Контурные карты

350 руб. 55.00 руб.

История России. 8 класс. Рабочая тетрадь. История России. 8 класс. Рабочая тетрадь.

350 руб. 137.00 руб.

История России XIX – начало XX века. 9 класс. Контурные карты (Историко-культурный стандарт)

350 руб. 55.00 руб.

История России. 9 класс. Рабочая тетрадь.

350 руб. 137.00 руб.

ЕГЭ. История России в таблицах и схемах для подготовки к ЕГЭ. 10-11 классы

350 руб. 80.00 руб.

ЕГЭ. История России в таблицах и схемах. 10-11 классы

350 руб. 80.00 руб.

История России в рассказах для детей. ХV — ХVII века

350 руб. 137.00 руб.

БОЛЕЕ 58 000 КНИГ И ШИРОКИЙ ВЫБОР КАНЦТОВАРОВ! ИНФОЛАВКА

Инфолавка — книжный магазин для педагогов и родителей от проекта «Инфоурок»

Бесплатный
Дистанционный конкурс «Стоп коронавирус»

  • Соловых Дарья Геннадьевна
  • Написать
  • 356
  • 18.04.2016

Номер материала: ДБ-040535

Добавляйте авторские материалы и получите призы от Инфоурок

Еженедельный призовой фонд 100 000 Р

  • 18.04.2016
  • 240
  • 18.04.2016
  • 1992
  • 18.04.2016
  • 229
  • 18.04.2016
  • 3261
  • 18.04.2016
  • 300
  • 18.04.2016
  • 1293
  • 18.04.2016
  • 623

Не нашли то что искали?

Вам будут интересны эти курсы:

Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение редакции может не совпадать с точкой зрения авторов.

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

Массивы в Паскале. Одномерные массивы

Предположим, что программа работает с большим количеством однотипных данных. Скажем около ста разных целых чисел нужно обработать, выполнив над ними те или иные вычисления. Как вы себе представляете 100 переменных в программе? И для каждой переменной нужно написать одно и тоже выражение вычисления значения? Это очень неэффективно.

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

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

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

Помним, все элементы определенного массива имеют один и тот же тип . У разных массивов типы данных могут различаться. Например, один массив может состоять из чисел типа integer , а другой – из чисел типа real .

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

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

Массив можно создать несколькими способами.

Обращение к определенному элементу массива осуществляется путем указания имени переменной массива и в квадратных скобках индекса элемента.

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

В примере выделяется область памяти под массив из 11 символов. Их индексы от 1 до 11. В процессе выполнения программы пользователь вводит 11 любых символов (например, ‘q’, ’w’, ’e’, ’2’, ’t’, ’9’, ’u’, ’I’, ’I’, ’o’, ’p’), которые записываются в ячейки массива. Текущее значение переменной i в цикле for используется в качестве индекса массива. Второй цикл for отвечает за вывод элементов массива на экран.

Функция sizeof , примененная к имени массива или имени массивного типа, возвращает количество байтов, отводимое под массив.

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

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

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.

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

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