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




Var

w: nm;

здесь nm – идентификатор типа (произвольный), word1, word2… - конкретные значения, которые может принимать переменная w, принадлежащая типу nm. Значения данного типа считаются упорядоченными, т.е. описание типа одновременно вводит упорядочение word1 < word2 < wordN. Порядковые значения отсчитываются с 0. К переменным типа перечисления можно применять функции ord, pred, succ и процедуры inc и dec. Ко всем переменным одного и того же скалярного типа применимы операции отношения: =, <>, <=, >=, <, >. Особенностью переменных типа перечисления является то, что их значения нельзя вводить с клавиатуры и выводить на экран (но можно использовать при работе с типизированными файлами).

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

Общий вид: a: min..max; здесь a – интервальная переменная, min – левая граница, max – правая граница подмножества (диапазона). Границы диапазона разделяются двумя точками; граница min всегда должна быть меньше max. Константы min и max должны принадлежать одному и тому же типу. Они определяют базовый тип переменной a. Так, если границы являются целыми числами типа integer, то под переменную a будет выделен такой же объем памяти, что и под тип integer. Однако переменная a сможет принимать только те значения, которые определены границами ее диапазона.

9---------------------------------------------------------------------------

Процедуры ввода-вывода в Паскале. В П. ввод осуществляется с помощью процедур read() и readln(), а вывод - благодаря write() и writeln(). Процедуры, которые имеют окончание ln, после своего выполнения переводят указатель на новую строку.

10---------------------------------------------------------------------------

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

11---------------------------------------------------------------------------

усло́вный опера́тор — оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения. if (если), then (то) и else (иначе).

12---------------------------------------------------------------------------

Оператор цикла с параметром For — это цикл, в котором тело выполняется заданное количество раз.

for <счетчик1>:= <значение1> to <конечное_значение> do <оператор1>;

for <счетчик2>:= <значение2> downto <конечное_значение> do <оператор1>;

1. program example_for;

2. var

3. i, N: integer;

4. begin

5. read(N); {предположим, что мы ввели 10}

6. for i:= 1 to N do write(i, ' '); {количество итераций - 10 - 1 + 1 = 10}

7. end.

13---------------------------------------------------------------------------

Оператор цикла с предусловием While — это цикл, в котором условие стоит перед телом. Причем тело цикла выполняется только тогда, когда условие true; как только условие становится false, выполнение цикла прекращается.

while < условие> do <оператор 1>; {Пока … делай ….}

1. program example_while;

2. var

3. i, N: integer; { объявляем переменные }

4. begin

5. i:= 1; { Присваиваем i значение 1 }

6. readln(N); { Считываем последнее число }

7. while i <= N do {Как только i станет больше N, цикл прекратится (можно было бы написать просто <, но пришлось бы добавлять 1 к N)

8. begin {Открываем операторные скобки}

9. write(i, ' '); {Выводим i}

10. Inc(i); {увеличиваем i на один.}

11. end; { закрываем скобки }

12. end.

14---------------------------------------------------------------------------

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

repeat { повторяй … }
<оператор 1>;
< оператор 2>;

until {до…} <условие>

1. program example_repeat;

2. var

3. i, N: integer;{ объявляем переменные }

4. begin

5. i:= 1; { Присваиваем i значение 1 }

6. readln(N); { Считываем последнее число }

7. repeat {после repeat не требуется begin и end }

8. write(i, ' '); {Выводим i}

9. Inc(i); {увеличиваем i на один.}

10. until i = N + 1; {Например,i = 11,а N = 10. Цикл прекратится, так условие стало true.}

11. end.

15---------------------------------------------------------------------------

Оператор варианта Оператор CASE, который является обобщением оператора IF и позволяет сделать выбор из произвольного числа имеющихся вариантов.

CASE <Выражение-селектор> OF
< Список 1>: <Оператор 1 >;
<Список 2>: <Оператор 2 >;

<Список N>: <Оператор N >
[ ELSE <Оператор N+1> ];
END;

16---------------------------------------------------------------------------

Одномерные массивы, описание, обработка, понятие индекса Массив - это упорядоченная последовательность данных, обозначаемая одним именем (идентификатором). Члены этой последовательности называются элементами массива. Каждый элемент определяется именем массива и его положением в массиве. Положение элемента в массиве определяется его индексом (порядковым номером). Упорядоченность последовательности данных заключается в том, что элементы массива располагаются в последовательных ячейках памяти.

var

a: array [1..N] of integer;

//или

type

arr = array[1..N] of integer;

var

a: arr;

Между именем типа и именем переменной ставится знак «двоеточие». Array — служебное; [1..N] — в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива; of — служебное слово; integer — тип элементов массива.

Индексом могут быть не только натуральные числа: мы можем написать так: [0..10], [-29..45], [‘a’..’z’], [false..true] — то есть нам подходят любые символы и числа — главное соблюсти следующее условие: левая часть меньше правой. Для того чтобы ввести или вывести значения элементов такого массива, используем цикл с параметром

for i:= 1 to N do

read(a[i]); //где a[i] -- элемент одномерного массива a с индексом (порядковым номером) i. Отдельные ячейки называются элементами массива. Номер ячейки называется индексом соответствующего элемента массива.

17---------------------------------------------------------------------------

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

Type
Vector = array [1..5] of <тип_элементов>;
Matrix= array [1..10] of vector;
Var m: matrix;

Type
Matrix= array [1..5] of array [1..10] of < тип элементов >;
или еще проще:
type
matrix = array [1..5, 1..10] of <тип элементов>;

Обработка – используются вложенные циклы(внеш и внутр) внешн цикл For i:=1 to m do перебир строки а во внутр цикле For j:=1 to n do перебор массива

18---------------------------------------------------------------------------

Строковый тип данных STRING. Встроенные процедуры и функции для работы со строками. Тип данных, который относится к числу структу-рированных. Это строковый тип данных (строка). Строка — это после-довательность символов. Каждый символ занимает 1 байт памяти (код ASCII). Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255. Строковые величины могут быть константами и переменными. Особенностью строки является то, что с ней можно работать как с массивом символов, с одной стороны, и как с единым объектом, — с другой. За счет этого обработка строк достаточно гибка и удобна. Строковая константа есть последовательность символов, заключенная в апострофы. Например: 'это строковая константа', ‘272’. Строковая переменная описывается в разделе описания переменных следующим образом:

Var <идентификатор>: string[<максимальная длина строки>];

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

Строковая переменная занимает в памяти на 1 байт больше, чем указанная в описании длина. Символы внутри строки индексируются (нумеруются) от единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки. Например: N[5], S[i], slovo[k+l]. Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания. Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операции сцепления и операции отношения. Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные. Пример: 'Мама ' + 'мыла ' + 'раму'. В результате получится строка: 'Мама мыла раму'. Длина результирующей строки не должна превышать 255. Операции отношения: =, <, >, <=, >=, <>. Позволяют произвести сравнение двух строк, в результате чего получается логическое значение (true или false). Операция отношения имеет приоритет более низкий, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы.

Функция Copy(S, Pozition, N) выделяет из строки S подстроку длиной N символов, начиная с позиции Pozition. Здесь N и Pozition — целочисленные выражения.

Функция Concat(S1, S2, …, SN) выполняет сцепление (конкатенацию) строк S1, S2, …, SN в одну строку.

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

Функция Pos(S1, S2) — обнаруживает первое появление в строке S2 подстроки S1. Результат — целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 подстроки S1 не обнаружено, то результат равен 0.

Процедура Delete(S, Poz, N) — удаление N символов из строки S, начиная с позиции Poz.

19---------------------------------------------------------------------------

Назначение подпрограмм. Процедуры, их описание, вызов. Процедуры без параметров. Подпрограмма (subroutine) — поименованная или иным образом идентифицированная часть компьютерной проги, содержащая описание определённого набора действий. Подпрога может быть многократно вызвана из разных частей программы. Подпрограммы изначально появились как средство оптимизации программ по объёму занимаемой памяти. В языках высокого уровня описание подпрограммы обычно состоит по меньшей мере из двух частей: заголовка и тела. Заголовок подпрограммы описывает её имя и, возможно, параметры, то есть содержит информацию, необходимую для вызова подпрограммы. Тело — набор операторов, который будет выполнен всякий раз, когда подпрограмма будет вызвана. Вызов подпрограммы выполняется с помощью команды вызова, включающей в себя имя подпрограммы. В большинстве современных языков программирования команда вызова представляет собой просто имя вызываемой подпрограммы, за которым могут следовать фактические параметры. Описание процедур без параметров. Как вы уже знаете, в структуре Pascal-программы предусмотрен специальный раздел для описания подпрограмм - раздел описания процедур и функций. Именно в этом разделе производится описание подпрограмм. Структура любой подпрограммы почти буквально повторяет структуру всей Pascal-программы, и выглядит следующим образом: Procedure <имя процедуры>;

Uses <имена модулей>; Label <имена меток>; Const <имена констант>; Type <имена типов пользователя>; Var <имена локальных переменных>; <раздел объявления подпрограмм>; Begin <операторы>; End;Вызов процедуры без параметров осуществляется по имени данной процедуры в теле программы. Имя процедуры воспринимается как оператор. При выполнении этого оператора выполняется вся подпрограмма.

20---------------------------------------------------------------------------

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

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

procedure имя процедуры (формальные параметры); раздел описаний процедуры begin исполняемая часть процедуры end;

Формат описания функции:

function имя функции (формальные параметры): тип результата; раздел описаний функции begin исполняемая часть функции end;

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

var имя праметра: имя типа

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

Вызов процедуры производится оператором, имеющим следующий формат:

имя процедуры (список фактических параметров);

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

21---------------------------------------------------------------------------

Правила вызова процедур с параметрами (см. номер 20)

22---------------------------------------------------------------------------

Функции, их описание, глобальные и локальные переменные. Каждый модуль (процедура, функция, программа) состоит из заголовка (procedure…, function…, program…) и блока. Любые идентификаторы, введенные внутри какого-либо блока (процедуры, функции) для описания переменных, констант, типов, процедур, называются локальными для данного блока.

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

procedure t1; var y1, y2: real; procedure sq1; var a, b, c, d: real; begin { Переменные a, b, c, d являются локальными для sq1, область их действия – процедура sq1 } …………………………………… end; begin { Переменные y1, y2 - нелокальные для sq1, область их действия – t1 и sq1 } end;

Константы, переменные, типы, описанные в блоке program, называются глобальными.

23---------------------------------------------------------------------------

Отличие функций от процедур. В языке Паскаль имеется две разновидности подпрограмм - процедуры и функции.Структура любой подпрограммы аналогична структуре всей программы.Все параметры, которые использует подпрограмма, можно разбить на две категории: локальные параметры, объявленные внутри подпрограммы и доступные только ей самой, и глобальные - объявленные в основной программе и доступные как программе, так и всем ее подпрограммам. Обмен информацией между основной программой и подпрограммой может осуществляться только с помощью глобальных параметров.Подпрограмма-процедура предназначена для выполнения какой-то законченной последовательности действий. Любая процедура начинается с заголовка. В отличие от основной программы заголовок в процедуре обязателен. Он состоит из зарезервированного слова procedure, за которым следует идентификатор имени процедуры, а далее в круглых скобках - список формальных параметров: procedure <имя процедуры>(<список формальных параметров>);За заголовком могут идти такие же разделы, что и в основной программе.В отличие от основной программы процедура завершается не точкой, а точкой с запятой.Подпрограмма-функция предназначена для вычисления какого-либо параметра, у этой подпрограммы два основных отличия от процедуры. - Первое отличие функции в ее заголовке. Он состоит из слова function, за которым следует имя функции, далее в круглых скобках - список формальных параметров (о формальных параметрах см. п. 10.3), затем через двоеточие записывается тип функции - тип возвращаемого параметра. Функция может возвращать параметры следующих типов: любого порядкового, любого вещественного, стандартного типа string, любого указателя, в том числе и типа PChar. - Второе отличие заключается в том, что в теле функции хотя бы раз имени функции должно быть присвоено значение.

24---------------------------------------------------------------------------

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

К каждому элементу записи можно обратиться, используя составное имя, которое имеет следующую структуру:

<имя переменной>.<имя поля>

25---------------------------------------------------------------------------

Иерархические записи. Оператор присоединения With. Р азнородная информация описывающая существенные стороны того или иного объекта путем включения в описание нескольких, часто разнотипных, элементов, называют записью (record). В языке Паскаль запись определяется путем указания служебного слова record и перечисления входящих в запись элементов с указанием типов этих элементов. Запись Паскаля – структурированный комбинированный тип данных, состоящий из фиксированного числа компонент (полей) разного типа. Поля записи Паскаля могут иметь любой тип, в частности сами могут быть записями. При каждом обращении к полю записи следует указывать имя этой записи. Если вы работаете с полями одной и той же записи, то этой проблемы можно избежать благодаря оператору присоединения WITH, который имеет следующую синтаксическую структуру. WITH <Переменная типа RECORD> DO <Оператор>;

26---------------------------------------------------------------------------

Множественный тип данных. Операции над множествами. Множество — это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый объект в множестве называется элементом множества. Все элементы множества должны принадлежать одному из порядковых типов, содержащему не более 256 значений. Этот тип называется базовым типом множества. Базовый тип задается диапазоном или перечислением. Область значений типа множество — набор всевозможных подмножеств, составленных из элементов базового типа. В выражениях на языке Паскаль значения элементов множества указываются в квадратных скобках: [1,2,3,4], ['а',‘b','с'], ['a'..'z']. Если множество не имеет элементов, оно называется пустым и обозначается как []. Количество элементов множества называется его мощностью. Множество может принимать все значения базового типа. Базовый тип не должен превышать 256 возможных значений. Поэтому базовым типом множества могут быть byte, char, boolean и производные от них типы. Множество в памяти хранится как массив битов, в котором каждый бит указывает является ли элемент принадлежащим объявленному множеству или нет. Максимальное число элементов множества 256, а данные типа множество могут занимать не более 32 байт. Число байтов, выделяемых для данных типа множество, вычисляется по формуле: ByteSize = (max div 8) - (min div 8) + 1,

где max и min — верхняя и нижняя границы базового типа данного множества.

Номер байта для конкретного элемента Е вычисляется по формуле:

ByteNumber = (E div 8) - (min div 8),

номер бита внутри этого байта по формуле:

BitNumber = E mod 8

Не имеет значения порядок записи элементов множества внутри конструктора. Например, [1, 2, 3] и [3, 2, 1] — это эквивалентные множества. Каждый элемент в множестве учитывается только один раз. Поэтому множество [1, 2, 3, 4, 2, 3, 4, 5] эквивалентно [1..5].

Переменные множественного типа описываются так:
Var <идентификатор>: set of <базовый тип>;

27---------------------------------------------------------------------------

Файловый тип данных, описание. Процедуры и функции для работы с файлами. Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент. Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства. При работе с файлами выполняются операции ввода - вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода - это пересылка данных из основной памяти на внешнее устройство (в выходной файл). Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах на языке Паскаль имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид: 'LAB1.DAT', 'c:\ABC150\pr.txt', 'my_files'

Турбо Паскаль поддерживает три файловых типа:

  • текстовые файлы;
  • типизированные файлы;
  • нетипизированные файлы.

Доступ к файлу в программе происходит с помощью переменных файлового типа. Переменную файлового типа описывают одним из трех способов: file of тип - типизированный файл (указан тип компоненты);

Text-текстовый файл;

file - нетипизированный файл.

---------------------------------------------------------------------------

 

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

Program summastrok;

Var a: array[1..50,1..50] of integer;

i, j, n, m,S: integer;

Begin

Write(‘сколько строк?’); Readln(m);

Write(‘сколько столбцов?’); Readln(n);

For i:=1 to m do

For j:=1 to n do

begin

write(‘a[‘,i,’,’,j,’)=’); readln (a[i,j]);

end;

For i:=1 to m do

begin

S:=0;

For j:=1 to n do

S:=S+a[i,j];

Writeln(‘сумма элементов в ‘,i,’ строке равна ‘,S);

end;

End.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-09-06 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: