Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Преобразование массивов






Заменить все элементы, отвечающие данному условию (> a), на заданную величину (c).

for i: =1 to 10 do

for j: =1 to 10 do

if a[i, j]> a then begin a[I, j]: =c; end;

· Найти сумму каждой строки матрицы и записать в отдельный одномерный массив.

program mas4;

uses crt;

const n=4; m=4;

type t=array[1..n, 1..m] of integer; w=array[1..4] of integer;

var a: t; i, j, b, s, d: integer; c: w;

begin

clrscr;

for i: =1 to n do

begin

writeln ('Введите строку элементов матрицы (4 элемента)');

for j: =1 to m do read(a[i, j]);

writeln;

end;

for i: =1 to n do

begin for j: =1 to m do begin textcolor (14); write(a[i, j]: 3); end;

writeln;

end;

writeln; {Расчёт суммы}

for i: =1 to n do

begin s: =0; for j: =1 to m do

begin s: =s+ a[i, j]; end;

c[i]: =s;

textcolor (10);

write(c[i]: 6);

end;

repeat until keypressed;

end.

· Выполнить транспонирование матрицы. Транспонированная матрица это матрица, получающаяся из данной (прямоугольной или квадратной) матрицы после замены строк соответствующими столбцами.

program mas2;

uses crt;

const n=8; m=8;

type t=array[1..n, 1..m] of integer;

var a: t;

i, j: integer;

begin

clrscr;

textcolor (9);

for i: =1 to n do begin

for j: =1 to m do begin a[i, j]: =random (10); write (a[i, j]: 3); end;

writeln;

end;

writeln;

textcolor (14);

for i: =1 to n do begin

for j: =1 to m do begin write (a[j, i]: 3); end;

writeln;

end;

repeat until keypressed; end.

 

 

Примеры программ:

· Дана матрица b, состоящая из целых. Получить матрицу r, значения которой равны удвоенным значениям матрицы b

program mas5;

uses crt;

const n=4; m=4;

type t=array[1..n, 1..m] of integer;

var r, b: t; i, j: integer;

begin

clrscr;

textcolor (15);

for i: =1 to n do

begin

writeln ('Введите строку матрицы (4 элемента)');

for j: =1 to m do

begin

read (b[i, j]);

end; writeln;

end;

for i: =1 to n do

for j: =1 to m do

r[i, j]: =b[i, j]*2;

writeln;

for i: =1 to n do

begin

for j: =1 to m do

begin

textcolor (10);

write (r[i, j]: 3);

end;

writeln;

end;

repeat until keypressed;

end.

· Одномерный массив из 10 элементов заполнить произвольными числами от 0 до 9 и выдать его на экран.

program pt1;

uses crt;

type t=array[1..10] of integer;

var a: t; i: integer;

begin

clrscr;

randomize;

for i: =1 to 10 do

begin

a[i]: =trunc(random(10));

write(a[i]: 4);

end;

readln;

end._


 

· Двумерный массив размерностью 4 х 5 заполнить целыми двузначными числами и выдать его на экран.

program pt2; uses crt; type t=array[1..4, 1..5] of integer; var a: t; i, j: integer; begin clrscr; randomize; for i: =1 to 4 do   begin for j: =1 to 5 do begin a[i, j]: =trunc(random(90))+10; write(a[i, j]: 4); end; writeln; end; readln; end._

· Двумерный массив размерностью 4 х 5 заполнить целыми числами в интервале от –10 до 20 с шагом 5 и выдать его на экран.

program pt3; uses crt; type t=array[1..4, 1..5] of integer; var a: t; i, j: integer; begin clrscr; randomize; for i: =1 to 4 do   begin for j: =1 to 5 do begin a[i, j]: =trunc((random(7))*5)-10; write(a[i, j]: 4); end; writeln; end; readln; end._

· Двумерный массив размерностью 4 х 5 заполнить целыми числами в интервале от –10 до 20 с шагом 5 и выдать его на экран. Найти максимальный элемент массива и его координаты.

  program pt4; uses crt; type t=array[1..4, 1..5] of integer; var a: t; i, j, j1, i1, ms: integer; begin clrscr; randomize; ms: =-10; for i: =1 to 4 do begin   for j: =1 to 5 do begin a[i, j]: =trunc((random(7))*5)-10; write(a[i, j]: 4); if ms< a[i, j] then begin; ms: =a[i, j]; i1: =i; j1: =j; end; end; writeln; end; writeln('MS=', ms: 4, i1: 4, j1: 4); readln; end._

· Заполнить одномерный массив размерностью М (М ввести с клавиатуры) целыми числами от –30 до 39 и выдать на экран. Все отрицательные элементы массива заменить на 0 и выдать массив на экран. Поменять местами 2-й и предпоследний элемент массива, выдать массив на экран.

program pt5; uses crt; const n=100; type t=array[1..n] of integer; var a: t; i, r, m: integer; begin clrscr; randomize; writeln('vvedite N'); readln(m); for i: =1 to m do begin a[i]: =trunc(random(70))-30; write(a[i]: 4); if a[i]< 0 then a[i]: =0; end; writeln; for i: =1 to m do begin write(a[i]: 4); end; r: =a[2]; a[2]: =a[m-1]; a[m-1]: =r; writeln; for i: =1 to m do write(a[i]: 4); readln; end._

· Заполнить одномерный массив размерностью М (М ввести с клавиатуры) целыми числами от –30 до 39 и выдать на экран. Отсортировать массив по убыванию и выдать на экран.

program pt6; uses crt; const n=100; type t=array[1..n] of integer; var a: t; i, j, k, r, m: integer; begin clrscr; randomize; writeln('vvedite N'); readln(m); for i: =1 to m do begin a[i]: =trunc(random(70))-30; write(a[i]: 4); end; writeln; for i: =1 to m-1 do begin for j: =i to m do begin if a[i]< a[j] then begin r: =a[i]; a[i]: =a[j]; a[j]: =r; end; end; end; writeln; for k: =1 to m do write(a[k]: 4); readln; end._  

 


ТЕМА №8: ДАННЫЕ ТИПА STRING.

ЦЕЛИ И ЗАДАЧИ: приобретение навыков составления программ с использованием данных типа STRING

ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ:

Учащиеся должны знать:

- Что такое данные типа STRING;

- Как описываются строковые данные;

- Для чего используются строковые данные;

- Сколько бай занимают строковые данные;

- Для чего используется нулевой элемент строковой переменной,

- Как обозначается элемент строковой переменной;

- С какой цифры начинается отсчет номера элемента строкой переменной;

- Какой функцией определяется длина строковой переменной;

- Как склеить две строковые переменные;

- Как вырезать часть строковой переменной;

- Как вставить одну строковую переменную в другую;

- Как удалить часть строковой переменной;

- Как можно преобразовать числовую переменную в строковую;

- Как определить входить ли одна строковая переменная в состав другой.

Учащиеся должны уметь:

- Правильно задавать строковые переменные;

- Правильно использовать строковые переменные;

- Правильно использовать процедуры и функции обработки строковых переменных;

- Вводить строковые переменные;

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

 

ПЛАН-СОДЕРЖАНИЕ УРОКА

Основные понятия

Данные типа String или строковые данные (Строка) – это особая форма одномерного массива символов.

Отличие строки от массива в том, что массив имеет фиксированную длину (количество элементов), которая определяется при описании.

Строковые данные описываются следующим образом:

Var S: string[n]; SS: string; где

n – число символов в строковой переменной, изменяется от 1 до 255.

Длина описанной переменной S - n+1 байт.

Максимально возможная длина строковой переменной – 255 символов.

S[i] – общий вид элемента строковой переменной

 

Строка имеет две разновидности длины:

- общую длину строки (n), которая характеризует размер памяти, выделяемый строке при описании.

- Текущую длину строки (p) (p< =n), которая показывает количество смысловых символов в каждый конкретный момент времени. При выдаче на экран значения нулевого символа (Write(ord (s[0]));), получим величину р. Например:

0 1 2 3 4 5 6 7 8 9 10

B O R L A N D      

 

Символ, код которого =7 р=7 n=10 var s: string[10]

 

Когда в описании длина не указывается, то она по умолчанию берется 255 символов.

Заполняются строковые данные с помощью оператора присваивания (: =) или оператора ввода (read).

Примеры: SS: =’Информатика’; read(s);

Сравнение строковых переменных идет слева направо в соответствии с ASCII кодами символов. При сравнении длин строк используются операции =, > =, < =, < >, <, >. Если длина переменных одинакова – больше то, у которого больше код. Если длины разные – более короткая величина меньше. Считается, что отсутствующие символы в более короткой строке имеют код, меньше кода любого действительного символа. Например, ‘AB’ больше, чем ‘A’.

 

Строковые переменные можно склеить (знак +), что равноценно дозаписи символов второй переменной к символам первой. Если длина новой строки превысит допустимую (255) длину, то «лишние» символы отбрасываются. Пример, если а: =’К’; b: =’O’; с: = ‘Т’; х: =а+b+с; d: =a+c+b; – то в х поместится 'КОТ', а в d – ‘КТО’

Для обработки строковых переменных имеется набор специальных процедур и функций.

 

Процедуры обработки строк:

INSERT(S, T, N); Вставка подстроки (S) в строковую переменную (T) с символа N
DELETE(S, M, N); Удаление части (N символов) строковой переменной (S), начиная с символа M
STR(V, S); Преобразование числовой переменной в строковую
VAL(S, V, N); Преобразование строковой переменной в числовую. S - строка, V - числовая переменная, N - значение первого содержащего ошибку символа.

Функции обработки строковых переменных:

LENGTH(S) Определение количества символов строковой переменной S String Integer
POS(S, T); Определение первого одинакового левого символа двух строк (строка S и подстрока T) String, String Integer
CONCAT(S1, S2, …, SN); Склеивание строк String, …, String String
COPY(S, M, N); Вырезка подстроки (N символов) начиная с M-го символа из строковой переменной S String, Integer, Integer String
ORD(X) Определение кода символа. X Char Integer
CHR(X) Определение символа по его коду Integer Char
SUCC(X) Нахождение следующего элемента Integer, Char Integer, Char
PRED(X) Нахождение предыдущего элемента Перечисляемый Перечисляемый

 

 

Примеры программ:

· Перевернуть введенное с клавиатуры слово Uses crt; Var s, s1: string; n, i: integer; Begin Read(s); S1: =’’; N: =length(s); For i: =1 downto 1 do S1: =s1+s[i]; Writeln(s1); Repeat until keypressed; End. · Подсчитать кол-во предложений. Конец предложения -.,!,? User crt; Var s: string; n, i, sum: integer; m: char; Begin Read(s); Sum: =1; N: =lenght(s); M: =’ ‘; For i: =1 to n do Begin If s[i]=m then sum: =sum+1; End; Writeln(sum); Repeat until keypressed; end.
· Разработать функцию удаления символов из строки. Uses crt; Var m, n, l: integer; s, w: string; Function ddd(s: string; m, n: integer): string; Var g1, g2, w: string; l, k: integer; Begin L: =length(s); G1: =’’; For k: =1 to m-1 do g1: =g1+s[k]; Writeln(g1); G2: =’’; For k: =m+n to l do g2: =g2+g2+s[k]; Writeln(g2); W: =g1+g2; Writeln(w); Ddd: =w; End; Begin Readln(s); Writeln(s); Readln(m, n); W: =ddd(s, m, n); Writeln(w); Repeat until keypressed; end. · Зашифровать текст, где каждый символ заменяется на символ, отстоящий по таблице ASCI – кодов дальше на 3 символа Uses crt; Var s, r: string; n, i: integer; Begin R: =’’; Readln(s); For i: =1 to n do Begin N: =ord(s[i]); R: =r+chr(n+3); End; Writeln(s); Writeln®; Repeat until keypressed; end.  

 

 


ТЕМА №9: ФАЙЛЫ. ТИПИЗИРОВАННЫЕ ФАЙЛЫ. ТЕКСТОВЫЕ ФАЙЛЫ.

 

 

ЦЕЛИ И ЗАДАЧИ: Дать представление о файлах и средствах их обработки на языке Pascal. Приобретение навыков составления программ с использованием файлов различного типа

ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ:

Учащиеся должны знать:

- Что такое файл;

- Какие бывают файлы;

- Что такое файловая переменная;

- Как описываются типизированные файлы;

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

- Процедуры и функции работы с типизированными и текстовыми файлами;

- Как описываются текстовые файлы.

Учащиеся должны уметь:

- Правильно описывать типизированные и текстовые файлы;

- Правильно пользоваться файловой переменной;

- Составлять программы с использованием типизированных и текстовых файлов;

- Составлять простейшие программы с использованием процедур и функций работы с типизированными и текстовыми файлами.

 

ПЛАН-СОДЕРЖАНИЕ УРОКА

Основные понятия

Мы все время рассматривали задачи, в которых данные поступают с клавиатуры, а результаты выводятся на экран. Ни исходные данные, ни результаты не сохраняются. А если данных слишком много? Как записать их на диск? Для этого необходимо исходные данные и результаты оформить в виде файлов, которые хранятся на диске.

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

Файл может быть компонентом другой структуры, но не должен входить в другой файл.

Отличие файла от массива: размещение на внешнем носителе, длина файла не задается, место элемента не определяется индексом.

Файлы бывают:

- типизированные

- нетипизированные

- текстовые

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

Например:

Var F1: file of integer; F2: file of char; F3: text; F4: file;

Типизированными файлами называются файлы, в описании которых присутствует указание типа. Типизированные файлы – это файлы с прямым доступом к компонентам (записям).

Нетипизированный файл – это просто последовательность байтов, без конкретизации структуры.

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

Описание файлов:

Тип файла Описание файла
Типизированный Var F1: file of integer; F2: file of char;
Нетипизированный Var F3: file;
Текстовый Var F: text;

 

Файл на техническом носителе определяется полным именем (< путь> \< собственно имя>.< расширение>). Для обозначения файла и работе с ним в программе используется файловая переменная.

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

Особенности файловой переменной:

1. Ей нельзя присваивать какие-либо значения

2. Она не может участвовать в логических операциях

3. Она не может входить в математические выражения

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

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

Процедура Назначение Замечание
Assign(f, ‘name’) Связывает файловую переменную с конкретным файлом (привязывает переменную к имени файла). Ставится перед первым использованием файловой переменной. Можно имя файла ’name’ задавать через строковую перемен­ную (S): Assign(f, S)
Reset(f) Открывает существующий файл и устанав­ливает указатель на начало записи. Для любых файлов
Rewrite(f) Создает новый пустой файл, устанавливает указатель - на начало файла. Если файл су­ществовал, то его содержимое уничтожается. Для любых файлов
Close(f) Закрывает открытый файл Для любых файлов
Erase(f) Стирает предварительно закрытый файл Для любых файлов
Rename(f, f1) Переименовывает файл f в файл f1. Файл f должен быть предварительно закрыт Для любых файлов
EOF(f) Получение сведений о конце файла True, если указатель указывает на метку конца файла, иначе - False Логическая функция.
Read(f, v1, …vn) Считывает записи из файла f в переменные v1, …vn Для типизированных и нетипизированных фай­­лов
Write(f, v1, …vn) Записывает в файл f значения переменных v1, …vn Для типизированных и нетипизированных фай­­лов
Readln(f, v1, …vn) Считывает записи из файла f в переменные v1, …vn в типизированных фай­лах недопус­ти­мо
Writeln(f, v1, …vn) Записывает в файл f значения переменных v1, …vn в типизированных фай­лах недопусти­мо
N: =filesize(F); Определение количества записей в файле Функция
Eoln(f) True, если указатель на метке конца строки, иначе - False Логическая функция. Для текс­товых фай­лов
Append(f) Открывает файл и устанавливает указатель на метку конца файла Применяется для до­­бавления записей
N: =filepos(f) Выдает номер записи, на которую указывает указатель записи. Первая запись имеет номер 0. Функция
seek(f, n) Устанавливает указатель на запись с номером n  
truncate(f) Отсекает все записи, находящиеся после указателя и в этой позиции записывает метку конца файла.  

 

Пимеры программ:

§ Пример записи типизированных файлов:

var f: filt of integer;

assign(f, ‘file’); … rewrite(f); …write(f, v1, v2, …, vn); clos(f);

§ Пример считывания типизированных файлов:

var f: filt of integer;

assign(f, ‘file’); … reset(f); … read(f, v1, v2, …, vn); clos(f);

§ Пример записи в текстовый файл:

uses crt;

var f: text; r, i: integer; rr: string;

begin

clrscr;

rr: ='Dautova';

assign(f, 'dddddd');

rewrite(f);

writeln(f, rr);

for i: =1 to 20 do begin

r: =random(10);

writeln(f, r); end;

close(f);

end._

§ Считывание из текстового файла (см программу выше):

uses crt;

var f: text; r, i: integer; rr: string;

begin

clrscr;

assign(f, 'dddddd');

reset(f);

readln(f, rr);

writeln(rr);

for i: =1 to 20 do begin

readln(f, r);

writeln(r); end;

close(f);

end._

 

· Написать программу, вычисляющую корни квадратного уравнения и вывести результаты в файл.

Uses crt;

Var a, b, c, x1, x2, d: real; f: text;

Begin

Assign(f, ’result.txt);

Rewrite(f);

Readln(a, b, c);

D: =b*b-4*a*c;

If d> =0 then

Begin

X1: =-b+sqrt(d)/(2*a);

X2: =-b-sqrt(d)/(2*a);

End;

Writeln(‘решени квадратного ур-я’);

Writeln(f, 'a=', a: 6: 3, 'b=', b: 6: 3, 'c=', c: 6: 3);

If d< 0 then writeln(f, ’у урав-я нет корней’) else writeln(f, ‘корни: x1=’, x1: 6: 3, ’x2=’, x2: 6: 3);

Close(f);

Writeln(‘рез-ты работы программы в файле result.txt’);

Repeat until keypressed; end.

 

· На диске имеется файл с именем Karl.txt, в котором записана скороговорка:

" Карл у Клары украл кораллы, Клара у Карла украла кларнет."

Требуется подсчитать кол-во букв «К»

Uses crt;

Var f: text; s: integer; a: char;

Begin

Assign(f, ’Karl.txt’); Reset(f);

S: =0;

While not eof(f) do Begin

While not eoln(f) do Begin

Read(f, a); If a=’k’ then s: =s+1;

End;

Readln(f);

End;

Close(f); Writeln(s);

Repeat until keypressed; end.

· Ввести текст в текстовый файл f1. Переписать файл f1 в f2 – первую половину файла в прямом, а вторую – в обратном порядке следования символов.

Uses crt;

Var f1, f2: text; s, s1, sa, sb: string; a: char; n, y, i: integer;

Begin

Clrscr;

Assign(f1, ’file1’); Assign(f2, ’file2’);

Rewrite(f1);

Readln(s); Writeln(f1, s); Close(f1);

Reset(f1); Rewrite(f2); Read(f1, s1);

N: =lenght(s1); Y: =n div 2; Writeln(y);

Sa: =’’; sb: =’’;

For i: =n downto y+1 do Sa: =sa+s1[i];

Writeln(sa);

For i: =1 to y do Sb: =sb+s1[i];

Writeln(sb);

S1: =sb+sa;

Writeln(s1); Write(f2, s1);

Close(f1); Close(f2); Repeat until keypressed; end.



Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.035 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал