Первый слайд презентации: Лекция 7. Строковый тип данных
Луковкин С.Б. МГТУ. 1 Лекция 7. Строковый тип данных В Паскале существует три типа строк: стандартные ( string ); определяемые программистом на основе string ; строки в динамической памяти. Строка типа string может содержать до 255 символов. Под каждый символ отводится по 1 байту, в котором хранится код символа. Еще один байт отводится под фактическую длину строки – это байт под номером 0. Т.е. для хранения данных типа s tring отводится 256 байт.
Слайд 2: Как описываются строки в ТР?
Луковкин С.Б. МГТУ. 2 Как описываются строки в ТР? type str 7= string [7]; const n = 10; var sa : string ; { строка стандартого типа } sb, sc : str7 ; { строка типа str7 } sn : string [ n ];
Слайд 3: Операции со строками
Луковкин С.Б. МГТУ. 3 Операции со строками Присваивание sa := sb; Конкатенация sb := ’ кара ’ + ’ пуз ’; Сравнение ‘aa’ < ‘ab’ Write(‘ Мышка ’ < ‘ Шишка ’); Write(‘Big’ < ‘ Биг ’); Ввод-вывод строк : 1) целиком Write(sb) 2) посимвольно Write(sn[1],sn[2], ….. sn[10])
Слайд 4: Процедуры и функции ТР, используемые для работы с данными строкового типа
Луковкин С.Б. МГТУ. 4 Процедуры и функции ТР, используемые для работы с данными строкового типа. Concat(s1, s2, …, sn) Функция Конкатенация строк s 1, s2, … sn Copy(S, m, k) Функция Из строки S копирует k символов, начиная с m Delete(S, m, k) Процедура Удаляет k символов из строки S начиная с m Insert ( subs, s, m ) Процедура Вставляет subs в строку S начиная с номера m
Луковкин С.Б. МГТУ. 5 Length ( S ) Фун Возвращает длину строки S. Length(S) = Ord(S[0]) Pos ( subs, S ) Фун Отыскивает в строке S первое вхождение строки subs и возвращает номер позиции, с которой она начинается. Str ( x, S ) Проц Преобразует число X в строку символов S. Val(S, X, error) Проц Преобразует строку S в целую или вещественную переменную X. Значение error = 0 при нормальном завершении. Процедуры и функции ТР, используемые для работы с данными строкового типа ( продолжение).
Слайд 6: Примеры
Луковкин С.Б. МГТУ. 6 Примеры Действия со строками Результат S:=concat( ‘ Сивка ’,’-’,‘ Бурка ’); S = ‘ Сивка - Бурка ’ S1:= copy( S, 2, 4); S1 = ‘ ивка ’ s2:= ‘7 раз ’; m:= pos(‘7’,s2); Delete(s2,m,1) Insert(‘ семь ‘, s2, m); S2=‘ семь раз ’ K:=Pos(‘a’,s2) K=7 K:=Length(s1)+K K=11 Str(Pi:6:2, s1); S1 = ‘ 3.14’ Val(‘5.782’,x,code) X=5.782; code = 0;
Луковкин С.Б. МГТУ. 7 Определить, что будет выведено на экран в результате работы программы Program wrt_k; Const a: array[1..8] of char =‘abcrcaab’; Var i: integer; k: string; Begin k:= ‘‘; For i:=8 downto 2 do if a[i] < ‘c’ then k:=k+a[i]; write(k) end. Ответ: « baab »
Слайд 8: Лекция 8. Записи и множества
Луковкин С.Б. МГТУ. 8 Лекция 8. Записи и множества.
Слайд 9: Записи ( records)
Луковкин С.Б. МГТУ. 9 Записи ( records) Запись – структура данных, состоящая из конечного числа компонентов, называемых полями. Поля записи могут быть различных типов. Каждое поле имеет имя. Запись, как единое целое, занимает непрерывную область памяти. type имя_типа_записи = record описание 1- го поля записи; описание 2-го поля записи; ... описание n -го поля записи; end ; описание поля записи : имя_поля : тип_поля;
Слайд 10: Данные типа «запись» (примеры)
Луковкин С.Б. МГТУ. 10 Данные типа «запись» (примеры). type cars = record name : string [25]; price : real; number : integer ; end ; var g1, g2 : cars; tabl : array [1.. 100] of cars; student : record name : string [30]; group : byte; marks : array [1.. 5] of byte; end;
Слайд 11: Примеры действий с записями
Луковкин С.Б. МГТУ. 11 Примеры действий с записями. g 1 := g 2; g 2 := tabl [3]; g1.price := 200; With g1 do begin price := 200; number := 1 2; end ; Инициализация записей : const g : cars = ( name : ’opel’; price : 25000 ; number : 10 );
Слайд 12: Примеры записей
Луковкин С.Б. МГТУ. 12 Примеры записей Type Anketa = RECORD name : string[20]; soname : string[20]; gend : char; b_day : 1..31; b_Month : 1..12; b_year : word; kurs : 1..5; group : word; END; Var stud : anketa; All_Stud:array[1..200] of stud; или Var All_Stud: array [1..200] of Anketa;
Слайд 13: Как обратиться к полям записи?
Луковкин С.Б. МГТУ. 13 Как обратиться к полям записи? < Имя_переменной >. < имя поля > := < выражение > Stud.name:=‘ Олег ’; Stud.gend:=‘M’; Stud.kurs:=3; … и т.д. или With Stud do Begin name:=‘ Олег ’; gend:=‘M’; kurs:=3; End;
Слайд 14: Множества
Луковкин С.Б. МГТУ. 14 Множества Type имя _ типа_множества = set of базовый _ тип ; type Caps = set of 'A'..'Z'; Colors = set of (RED, GREEN, BLUE); Numbers = set of byte ; Пример: Var An, Bn : Numbers Количество элементов множества может меняться от 0 до 256.
Слайд 15: Примеры множеств
Луковкин С.Б. МГТУ. 15 Примеры множеств Var A, B : Set of byte; s1, s2,s3: set of ‘a’.. ‘z’; Const D3=[1,3,6,9,12]; …. A:=[25,50,55,60]; B:=[ ]; { пустое множество } S1:= [‘x’, ‘y’, ‘z’]; S2:= [ ‘a’, ‘b’, ‘y’]; B:=A;
Слайд 16: Операции над множествами:
Луковкин С.Б. МГТУ. 16 Операции над множествами: Операция Название A := B Присваивание A + B Объединение A и B A * B Пересечение A и B A – B Вычитание B из A
Слайд 17: Сравнение множеств ( результат – логическое значение)
Луковкин С.Б. МГТУ. 17 Сравнение множеств ( результат – логическое значение) Операция Название A=B Проверка множеств на эквивалентность ; True если A и B совпадают. A <> B Проверка множеств на неэквивалентность ; True если A и B несовпадают. A <= B Проверка на вхождение A в B. True, если A подмножество B. A = >B Проверка на вхождение B в A. True, если B подмножество A. e in A True, если e является элементом A
Слайд 18: Лекция 9. Файлы в ТР
Луковкин С.Б. МГТУ. 18 Лекция 9. Файлы в ТР. Общие приёмы для работы с файлами; Текстовые файлы; Типизированные файлы;
Слайд 19: Файлы ТР
Луковкин С.Б. МГТУ. 19 Файлы ТР. В ТР используются три типа файлов: Текстовые файлы Типизированные файлы Нетипизированные Примеры : VAR < имя_ФП 1> : File of < тип >; - типизированный файл ; < имя_ФП 2> : File; - нетипизирован. файл < имя_ФП 3> : TEXT; - текстовый файл Файл – именованная область внешней памяти компьютера либо это логическое устройство – возможный приёмник или источник данных ( CON, PRN, AUX,NUL).
Слайд 20: Преобразование данных при работе с файлами
Луковкин С.Б. МГТУ. 20 Преобразование данных при работе с файлами. 1. Преобразования данных при чтении – записи типизированных и нетипизированных файлов не происходит. Данные имеют одинаковое представление как в памяти компьютера, так и при хранении в файле ; 2. При чтении из текстового файла данные преобразуются из символьного представления во внутреннее представление в памяти компьютера; при записи в текстовый файл – данные из внутреннего представления преобразуются в символьный формат.
Слайд 21: Доступ к содержимому файлов
Луковкин С.Б. МГТУ. 21 Доступ к содержимому файлов Последовательный доступ – для текстовых файлов ; Прямой доступ – для типизированных и нетипизированных файлов ; Все элементы, из которых состоит файл с прямым доступом нумеруются от 0 до N; в конце файла Находится специальный код = маркер конца файла. Для файлов с прямым доступом вводится понятие текущей длины – количество элементов файла. Указатель файла – адрес текущего элемента файла, предназначенного для обработки.
Слайд 22: Порядок действий при работе с файлами в ТР
Луковкин С.Б. МГТУ. 22 Порядок действий при работе с файлами в ТР Задать файловую переменную ; Связать файловую переменную с файлом на диске или логическим устройством ; Указать направление обмена данными ; Осуществить чтение данных из файла или запись данных в файл ; Закрыть файл.
Слайд 23: Как связать файловую переменную с файлом на диске?
Луковкин С.Б. МГТУ. 23 Как связать файловую переменную с файлом на диске? После описания файловой переменной её надо связать с файлом на диске: ASSIGN( ИФП, ИмяФайла_или_ЛогУстр) ; пример: Var F1: File of string[60]; F2: Text; Begin … Assign ( F1, ‘c:\works\F001.txt’); Assign ( F2, ‘a:\mwk\My_abc.001’);
Слайд 24: fp – имя файловой переменной
Луковкин С.Б. МГТУ. 24 fp – имя файловой переменной Направление обмена Текстовый файл Типизир. файл Нетипизир. файл ReSet(fp) чтение из файла Read или ReadLn Read или Write Read ReWrite ( fp) запись в файл Write или WriteLn Write Write Append(fp) дописать в конец файла Write или WriteLn Х Х
Слайд 25: Пример :
Луковкин С.Б. МГТУ. 25 Пример : Program ExmpFile; Var Fa : Text; Tx : String[50]; Const S=‘C:\MyDoc\abc001.txt’; Begin Assign(Fa, S); Reset(Fa); While Not( EOF(fa)) do begin ReadLn(Fa, Tx); WriteLn(Tx); end; Close(Fa); End. Логическая функция EOF(fa) принимает значение TRUE, Если встретился конец файла, иначе – FALSE.
Слайд 26: Основные функции для работы с файлами
Луковкин С.Б. МГТУ. 26 Основные функции для работы с файлами fp- файловая переменная Close(fp) – закрыть файл; Rename(fp,< Новое_имя >) – переименовать файл; Erase(fp) – удаляет файл (сначала его надо закрыть); Flush(fp) – запись всех изменений в файл на диске ; EOF(fp) – логическая функция = True, если достигнут конец файла, иначе EOF = False; IOResalt – признак последней операции ввода-вывода. При успешном завершении IOResalt = 0.
Слайд 27: Текстовые файлы
Луковкин С.Б. МГТУ. 27 Текстовые файлы. совокупность строк переменной длины. Последовательный доступ. Var fp : text; В конце каждой строки Е OLN = #13#10 В конце Файла EOF = #26 Чтение: Read(fp, List) или ReadLn(fp, List) List содержит Char, String, < целые >, < вещественные > Запись: Write(fp,List) или WriteLn(fp,List) List содержит Char, String, BOOLEAN; < целые >, < вещественные >
Слайд 28: Специальные функции для текстовых файлов
Луковкин С.Б. МГТУ. 28 Специальные функции для текстовых файлов EOLN(fp) – возвращает True, если в текстовом файле, из которого осуществляется ввод данных, достигнут маркер конца строки. SeekEOLN(fp) – ищет маркер конца строки и возвращает True, если до конца строки остались только пробелы. SeekEOF(fp) – ищет маркер конца файла и возвращает True, если до конца файла остались строки заполненные пробелами.
Слайд 29: Типизированные файлы
Луковкин С.Б. МГТУ. 29 Типизированные файлы. Предназначены для хранения однотипных элементов во внутренней форме представления. Тип элементов задаётся после ключевых слов FILE OF. Var fp : file of < тип_элементов >; Основные процедуры для работы с типизированными файлами Seek(fp,N) – делает текущим компонент N; FileSize(fp) – возвращает количество компонентов файла ; FilePose(fp) – возвращает номер компонента, который будет обрабатываться при следующей операции; Чтение-запись Read(fp, < список >); Write(fp,< список >).
Слайд 30: Типизированные файлы. Пример
Луковкин С.Б. МГТУ. 30 Типизированные файлы. Пример. Program TPZ_f; Const n=10; Type student = record name : string [30]; group : word; marks : array [1.. 5] of byte; end; s_mas = array[1..n] of student; Var s1: student; sall : s_mas; f1: file of s_mas; i:word; Begin assign(f1,’stdata.tpz’); rewrite(f1); for i:=1 to n do begin with s1 do begin write(‘name = ‘); readln(name); write(‘group=‘); readln(group); write(‘ marks=‘); readln(marks[1], marks[2], marks[3], marks[4], marks[5]); end; sall [ i ]:=s1; end; write(f1, sall); Close(f1); end.
Слайд 31: Лекция 10. Примеры: некоторые алгоритмы и их программная реализация
Луковкин С.Б. МГТУ. 31 Лекция 10. Примеры: некоторые алгоритмы и их программная реализация. Алгоритмы сортировки; Суммирование рядов;
Слайд 32: Сортировка простым выбором
Луковкин С.Б. МГТУ. 32 Сортировка простым выбором. Задача: Упорядочить числовой массив в порядке возрастания элементов. Заданы элементы массива и их количество. Алгоритм: выберем наименьший элемент среди всех, начиная с первого, и поменяем его местами с первым элементом. Повторим эту процедуру начиная со второго элемента массива, и т.д.
Слайд 33: Блок-схема сортировки простым выбором ( по возрастанию )
Луковкин С.Б. МГТУ. 33 Блок-схема сортировки простым выбором ( по возрастанию ). Сортировка закончена i= 1 a[ j ] < X j=j+1 да нет k= i X=a[ i ] j=i+1 k = j X=a[ j ] j <= N да a[ k ] = a[ i ] a[ i ] = X i=i+1 i <= N-1 нет да нет
Слайд 34: Сортировка простым выбором
Луковкин С.Б. МГТУ. 34 Сортировка простым выбором. Program Simpl_Sort; const n = 10; var a : array [1.. n] of integer; i, j, k, x : integer; begin writeln ('Введите ', n, ' элементов массива'); for i := 1 to n do read(a[i]); for i := 1 to n - 1 do begin k := i; x:=a[i]; for j := i + 1 to n do if a[j] < x then begin k := j; x:=a[k]; end; a[k] := a[i]; a[i] := x; end; writeln ('Упорядоченный массив:'); for i := 1 to n do write(a[i]:5) end.
Слайд 35: Сортировка простым включением
Луковкин С.Б. МГТУ. 35 Сортировка простым включением. Задача: Упорядочить по возрастанию элементы массива. Алгоритм решения задачи: Пусть на некотором этапе работы алгоритма левая часть Мас c ива с 1-ого по ( i-1) элементы уже отсортирована, а правая часть с i – ого по N- ый осталась в прежнем виде. Берём первый элемент правой (неотсортированной) части и вставляем в левую часть так, чтобы упорядоченность левой части c охранилась. В начале алгоритма левая часть состоит из одного элемента А [1].
Слайд 36: Блок-схема сортировки простым включением (по возрастанию)
Луковкин С.Б. МГТУ. 36 Блок-схема сортировки простым включением (по возрастанию) i= 2 j > 0 да нет X=a[ i ] j=i-1 a[ j+1]=X X < a[ j ] да a[ j+1] = a[ j ] j = j -1 i=i+1 i <= N нет да нет Сортировка закончена
Слайд 37: Сортировка простым включением
Луковкин С.Б. МГТУ. 37 Сортировка простым включением. Program Simpl_Ins_Sort; const n = 10; a : array [1.. n] of integer=(2, -3, 5, 9, …) var i, j, x : integer; begin for i := 2 to n do begin x:=a[ i ]; j:= i -1; while (x < a[ j ]) and ( j > 0) do Begin a [ j+1] := a[ j ]; j := j-1; end; a[ j+1]:=x end; writeln ('Упорядоченный массив:'); for i := 1 to n do write(a[ i ]:5) end.
Слайд 38: Суммирование рядов с заданным числом слагаемых
Луковкин С.Б. МГТУ. 38 Суммирование рядов с заданным числом слагаемых. Задана формула для вычисления суммы заданного количества слагаемых. Program SUM_N; Var S,x : real; k,n : word; Begin write(‘ Введите кол-во слагаемых n и X=‘); readln(n, x); S:=1; C:= 1 ; For k := 1 to n do begin C:=(-1)*x*x*C/k; S:=S+C; end; Writeln(‘ для заданного x сумма S(x) = ‘, S:10:5); End.
Слайд 39: Суммирование рядов с заданной точностью
Луковкин С.Б. МГТУ. 39 Суммирование рядов с заданной точностью. Признак Лейбница сходимости знакочередующихся рядов. Задан знакочередующийся ряд: S = U1 – U2 + U3 – U4 + U5 …. (1) Если члены знакочередующегося ряда монотонно убывают: U1 > U2 > U3 … Lim Un = 0 при n -> , то ряд сходится и его сумма S отличается от n- ой частичной суммы не более чем на величину модуля первого отбрасываемого члена ряда. Если в формуле (1) слагаемые U1, U2 … Un зависят от x, то ряд называется функциональным: S ( x) = U1(x) – U2(x) + U3(x) – U4(x) + U5(x) ….
Слайд 40: Алгоритм суммирования знакочередующихся рядов с заданной точностью
Луковкин С.Б. МГТУ. 40 Алгоритм суммирования знакочередующихся рядов с заданной точностью. Попытаться выразить (n+1) слагаемое через ( n ) – ое: C(n+1) = M(x,n)*C(n) Вводим значение x, при котором требуется вычислить сумму ряда, и точность eps, с которой надо вычислить сумму. «Накапливаем» слагаемые ряда в переменной S до тех пор, пока очередное слагаемое по модулю не будет меньше или равно eps. Выводим на экран найденное значение суммы и количество слагаемых, к o торое потребовалось для достижения заданной точности.
Слайд 41: Пример
Луковкин С.Б. МГТУ. 41 Пример. Вычислить с точностью eps сумму ряда:
Последний слайд презентации: Лекция 7. Строковый тип данных
Луковкин С.Б. МГТУ. 42 Program row1; var S,A,x,eps,m:real; k: byte; begin S:=0; A:=-1; m:=1.0; k:=1; write(' x ='); readln(x); If(x<=0) or (x>2) then begin writeln(' bad value of x'); Halt(111) end; write(' eps = '); readln(eps); while abs(a)>=eps do begin A:=(-1)*A*(x-1)*m; s:=s+a; writeln(' k = ', k:3, ' S = ',s:8:5); m:=k/(k+1); inc(k); end; writeln(' exact value Ln(x) = ', ln(x):8:5); readln; end.