Тurbo Pascal часть 3. Управляющие кнопки Пример Продолжение Переход на следующий слайд Переход на предыдущий слайд или к содержанию Просмотр примера Продолжение.

Презентация:



Advertisements
Похожие презентации
Множества значений или переменных с одним общим именем называются структурированными типами. По способу организации и типу компонентов выделяют: 1. Массивы.
Advertisements

Файловый тип данных Turbo Pascal Операции для работы с файлами 11 класс.
Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. В языке Паскаль файл представляет собой последовательность.
Файловая переменная. Файл – совокупность данных, записанная во внешней памяти под определенным именем. Любой файл имеет три характерные особенности: уникальное.
Нетипизированный файл рассматривается в Паскале как совокупность символов или байтов. Выбор char или byte не играет никакой роли, важен лишь объем занимаемых.
Работа с файлами.. Процедура Assign(var f; name : String); Связывает внешний файл с именем name и переменную файлового типа f. Все дальнейшие операции.
Файлы - именованная область внешней памяти ЭВМ, хранящая совокупность данных. Файл.
1 Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. Файл – это набор данных, хранящихся во внешней.
Структурные типы данных 1.Массивы 2.Строки 3.Записи 4.Множества 5.Файлы.
Программирование типовых алгоритмов вычислений Информатика.
Глава 9. ВВОД-ВЫВОД ДАННЫХ И ФАЙЛОВАЯ СТРУКТУРА Логический и физический файлы Типы файловой переменной Общие процедуры работы с файлами Текстовые файлы.
Символы и строки. Процедуры и функции работы со строками.
Тема урока Переменная. Тип данных. Ввод и вывод данных.
Файловый ввод- вывод данных в Pascalе Средства обработки файлов 11 класс Дугина Ирина Радиковна, учитель информатики и ИКТ, МБОУ СОШ с.Камышки Александрово-Гайского.
СТРОКИ Строковой называется последовательность символов определённой длины. Идентификатор типа – слово String Примеры описания: Var Str1 : String[10];
Познакомиться с основными понятиями языка Pascal 2.
Составные типы данных Лекция 8-9. Ломаско Павел Сергеевич9 августа 2012 г.
Работа с файлами PASCAL. Понятие файл Физический файл – это именованная область внешней памяти, содержащая информацию. Логический файл – это структура.
СТРОКИ Строковой называется последовательность символов определённой длины. Идентификатор типа – слово String Примеры описания: Var Str1 : String[10];
Файловый ввод- вывод данных в Pascalе Средства обработки файлов 11 класс.
Транксрипт:

Тurbo Pascal часть 3

Управляющие кнопки Пример Продолжение Переход на следующий слайд Переход на предыдущий слайд или к содержанию Просмотр примера Продолжение текста на следующем слайде Выход

Содержание: Процедуры ФункцииФайлы СтрокиВыход

Процедуры Процедуры Любая процедура может содержать несколько операторов и несколько результатов ее выполнения. Структура процедуры имеет следующий вид: Procedure имя (формальные параметры); раздел описаний Begin раздел операторов End; В заголовке указывается служебное слово procedure, за которым следует имя процедуры и формальные параметры, заключенные в круглые скобки. Раздел описаний процедуры подобен программе и состоит из разделов меток, констант, типов, переменных и, в свою очередь, процедур и функций. Раздел операторов заключается в операторные скобки begin и end, причем после end в отличие от основной программы вместо точки ставится точка с запятой. Продолжение

Процедура вызывается по имени: имя(фактические параметры) С помощью формальных и фактических параметров данные передаются из программы в процедуру, наоборот, из процедуры в программу. Каждый формальный параметр указывается вместе со своим типом. Соответствующий ему фактический параметр указывается без типа. Между формальными и фактическими параметрами должно быть соответствие по количеству параметров, по их типу и порядку следования. Если несколько формальных параметров имеют одинаковый тип, тогда их можно объединить в список, т. е. Перечислить параметры через запятую, а затем указать тип. Пусть имеется заголовок процедуры: procedure summa(a, b, c:integer); где a, b, c- формальные параметры. Вызвать процедуру следующим образом: summa(5, m, 7); Где 5, m, 7 -фактические параметры.

Каждый формальный параметр принимает значение соответствующего фактического параметра. Таким образом, в процедуре будем иметь следующие значения: a=5, b=m, c=7. Среди параметров процедуры выделяют параметры-значения и параметры-переменные. Параметры-значения выполняют роль входных параметров процедуры. Они могут получать значения фактических параметров, но не могут передавать свои значения фактическим параметрам. Параметры-переменные выполняют роль как входных, так и выходных параметров процедуры. Они могут получать значения фактических параметров, изменять их в процедуре и возвращать новые значения фактическим параметрам. Для выделения параметров-переменных перед ними ставится слово var в формальных параметрах. Пример процедуры: procedure expres (a, b, c: :real; var x, y: real); var z: real; begin z:= a+b+c; x:= sqr(z); y:=sqr(z); end;

Эту процедуру можно вызвать таким образом: expres(25.4, 44.6, 30, x1, y1) Формальные входные параметры a, b, c принимают значения соответствующих фактических параметров a=25.4, b=44.6, c=30. При этих значениях выполняется процедура. Результатом выполнения процедуры являются x, y, которые передают свои значения соответствующим фактическим параметрам x1, y1. Таким образом, в основной программе будем иметь x1=10000, y1=10. Допускается одинаковое обозначение соответствующих формальных и фактических параметров. Например, вызов процедуры может иметь вид: expres(25.4, 44.6, 30, x, y) В качестве фактических параметров могут быть константы, переменные, выражения. Их тип должен соответствовать типу формального параметра. Например, вызов процедуры может быть таким: a:25.4; c:=30; expres (a, 44.6, c, x1, y1) или d:=44.6; r:=10; expres(25.4, d, r+20, z, t) В любом случае формальные параметры получат значения a=25.4, b=44.6, c=30.

В качестве фактических параметров, которым соответствуют параметры- переменные, могут быть переменные и массивы; формальные параметры представлены только именами (константы и выражения недопустимы). Если в процедуре нужно передать в качестве параметра не просто одно значение, а массив, то фактическим параметром должно быть имя массива.. При этом формальный параметр указывается после слова var вместе с типом массива. Само же описание массива делается в разделе type основной программы. Пусть, например, в основной программе имеется следующее описание массива A: const n=10; type mas =array[1..n]of real; var A :mas; Тогда формальные параметры процедуры prim могут иметь вид: procedure prim (k: integer; var x: mas); при следующих фактических параметрах: prim (n, A); Формальный параметр k принимает значение фактического параметра n, а формальный параметр x- значение массива A. В процедуре значения массива x могут измениться, и новые значения получит массив A. Допускается использование процедур без параметров. В этом случае формальные и фактические параметры отсутствуют. В процедуре, как и в основной программе, может отсутствовать раздел описаний.

Функции Функции Другой вид подпрограммы – функция – оформляется аналогично процедуре. Отличительные особенности функции: она имеет только один результат выполнения (но может иметь несколько входных параметров); результат обозначается именем функции и передается в основную программу. Функция оформляется в следующем виде: function имя (формальные параметры) : тип; раздел описаний begin раздел операторов end; Вызывается функция по ее имени с указанием фактических параметров. Вызов функции можно делать непосредственно внутри выражения. При вызове функции тип не указывается. Пример: Пусть требуется найти разность факториалов F=m! – k!. Напомним, что факториал n! Представляет собой произведение n чисел натурального ряда: 1*2*3*...*n. Вычисление факториала оформим в виде функции:

function fact (n: integer): integer; var p, i:integer; begin p:=1; for i:=2 to n do p:=p*i; fact:=p; end; Здесь fact – имя функции. Результат вычисления факториала обозначается ее именем. Тип функции – действительный. Формальным параметром является переменная целого типа n. Вызывается функция по своему имени fact с указанием фактических параметров m и k: f=fact (m) – fact (k) Область действия имен. Имена, объявленные в разделе описания основной программы, действуют в разделе операторов основной программы и в любой подпрограмме (процедуре и функции). Эти имена называются глобальными. Имена, объявленные в подпрограмме, действуют только в этой подпрограмме и в любой объявленной в ней процедуре и функции. Такие имена называются локальными. Они недопустимы для операторов основной программы

Пример программы с использованием глобальных и локальных имен : оформление функции program pt11 (input, output); var f, m, k: integer; функция fact function fact (n: integer) : integer; begin p:=1; for i:=2 to n do p:=p* i; fact:= p; end; основная программа begin write ( введите значение m, k : ); read (m, k); f:= fact (m) – fact (k); writeln ( f= f: 5); end.

Так, в рассмотренной программе с функцией fact переменные f, m, k в разделе описания основной программы являются глобальными. Переменные p, i в разделе описания функции и параметр n являются локальными: их действия ограничены рамками функции.

Файлы Файлом называется совокупность данных, записанная во внешней памяти под определенным именем. Целесообразность применения файлов диктуется следующими причинами: Ввод больших объемов данных, подлежащих обработке, утомителен и требует большого времени. Гораздо удобнее создать отдельный файл данных, который может быть подготовлен заранее и, самое главное, применяться неоднократно Файл данных может быть подготовлен другой программой, становясь, таким образом, связующим звеном между двумя разными задачами, а также средством связи программы с внешней средой Программа, использующая данные из файла, не требует присутствия пользователя в момент фактического исполнения. Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного типа. В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.

Файлы делятся на три вида: Текстовые Типизированные Нетипизированные. Обработка файлов. 1. Связь переменной файлового типа с файлом на диске. Assign (имя файловой переменной, имя файла ) Assign (f, A\ int. dat ) Файловая переменная осуществляет связь. Все операции над данным файлом. 2. Чтение из файла. Reset (имя файловой переменной) Данный оператор осуществляет открытие существующего файла. Read (имя файловой переменной, константа или переменная) Reset (f); Read (f, n); 3. Признак конца файла. EOF (имя файловой переменной) 3. Признак конца файла. EOF (имя файловой переменной) EOF (имя файловой переменной) Принимает значение истина, если достигнут конец файла, в противном случае принимает значение ложь

Принимает значение истина, если достигнут конец файла, в противном случае принимает значение ложь. 4. Закрытие файла. Close ( имя файловой переменной) Пример: Дан файл, прочитать числа из файла и вывести на экран. begin assign (f, A:\ int. dat); reset (f); while not EOF (f) do begin read (f, n); write (n, ); end; close (f); end. 5. Запись в файле. Rewrite (имя файловой переменной) Открывает новый пустой файл и присваивает ему имя заданное процедурой Assign. Если файл с таким именем уже существует, то он удаляется. Rename (var f; NewName : string переименование физического файла на диске, связанный с логическим файлом f после закрытия файла) Процедура Erase (var f) уничтожает физический файл на диске, который

был связан с файловой переменной f. Файл должен быть закрыт. Текстовые файлы Функция EOLn (var T: Text ) : Boolean, t – имя текстового файла. Функция принимает значение true, если достигнут конец строки и значение false, если конец строки не достигнут Readln (t) – пропускает строку до начала следующей Writeln (t) – завершает строку файла в котором производится запись признаком конца строки и переход к началу следующей. Процедура SetTextBuf (var f : Text, var Buf; Buf Size : word) служит для увеличения или уменьшения буфера ввода\вывода текстового файла f (значение). Процедура Append (var f : Text ) применяется к открытым выходным файлам. Она принудительно записывает данные из буфера в файл независимо от степени его заполнения Функция Seek EOLn (var f : Text): boolean возвращает значение true, если до конца строки остались только пробелы Функция Seek EOF (var f : Text): boolean возвращает значение true, если до конца файла остались строки, заполнение пробелами.

Типизированные файлы Типизированный (компонентный) файл рассматривается как последовательность записей (компонент) одного типа. Задание файловой Переменной для него имеет вид: Var имя: File of базовый тип; Типизированный файл открытый процедурой Reset доступен для чтения и записи. Процедуры Read и Write здесь используются по другому. Отличие в том, что каждый из параметров в рассматриваемом случае должен быть переменной типа базовый тип, а выражения и константы недопустимы. Процедуры Readln и Writeln принимаются только к текстовым файлам. Типизированные файлы используются для хранения однородной (по типу) информации. Если речь идет о хранении числовых данных, следует использовать типизированные файлы. Типизированный файл имеет строгую внутреннюю структуру. При записи в него записывается машинное представление компоненты, будь то число, символ, строка, запись, массив или другая структура данных (кроме файлов).Файл заполняется последовательно от начала. Его структура линейна: запись следует за записью (в случае типизированных файлов запись в файле это компонента, а в случае нетипизированных - блок) и компоненты ничем не отделяются друг от друга.

Число компонент файла может изменятся, т. е. заранее не фиксируется как число элементов массива. Добавляются записи лишь в конец, а замещаются любые существующие в файле записи. Такого понятия как конец строки в типизированном файле не существует, поэтому ввод и вывод данных осуществляется только процедурами Read и Write. Для типизированного файла обе процедуры Read и Write устанавливают режим чтения и запись, т. е. допускается чередование этих операций независимо от выбора процедуры открытия. Так как компоненты одного типа, а значит и одного размера, то становится возможным произвольный или прямой доступ к ним по номерам компонент. Прямой доступ означает возможность позиционировать внутри файла текущий указатель на заданную запись. Понятие текущий указатель связывается с каждым файлом. Это неявно описанная переменная, которая указывает на условную границу между элементами файла. Нумеруются позиции текущего указателя целыми числами, начиная с нуля. После каждого акта чтения или записи указатель смещается на следующую позицию. Следовательно в операции будет участвовать тот элемент, на который переместится указатель. Основное преимущество текстовых файлов – это возможность хранить в них разнотипные данные; Типизированных файлов – прямой доступ и возможность чередования операций чтения и записи независимо от выбора процедуры открытия.

Эти операции осуществляются без преобразования данных, что ускоряет их работу. Но обмен данными возможен только между дисками и рабочей памятью программы. Вывести, например, данные на прямую нельзя. Нетипизированные файлы Для более эффективного выполнения операций ввода/вывода из внешних файлов в Паскале имеются нетипизированные файлы. При работе с ними можно использовать быстрые дисковые операции низкого уровня. Нетипизированные файлы дают возможность прямого доступа к любому файлу на диске независимо от его типа и структуры. Нетипизированный файл рассматривают как совокупность символов или байтов. Задание файловой переменной для него имеет вид: Var имя: File. Нетипизированный файл можно считать обобщенным файловым типом. Представление char или bite важно лишь с точки зрения объема данных. Любой файл, подготовленный как текстовый или типизированный, можно открыть и начать работу с ним, как с нетипизированным набором данных.Внутренняя поддержка такого файла выглядит наиболее близкой к аппаратной поддержке работы с внешними носителями. За счет этого достигается максимально возможная скорость доступа к наборам данных. Бестиповый (нетипизированный) файл – это файл прямого доступа, что говорит о возможности одновременного использования операций чтения и записи.

Самый важный параметр для такого файла – это длина записи в байтах. По умолчанию она составляет 128 байт, но в каждом случае можно выбрать наиболее подходящий размер. С этой целью расширяется синтаксис процедур ввода/вывода: Reset (var f: File; RecSize: Word) и Rewrite (var f: File; RecSize: Word), второй параметр в которых RecSize задает длину записи в байтах. Чтобы гарантировано обеспечить полное чтение и верную запись всего файла, величину RecSize часто выбирают равную 1. Для организации доступа к записям бестипового файла допустимо использование процедур Seek, FilePos, File Size. Пример

Строки Строка – это последовательность символов кодовой таблицы персонального компьютера. При использовании в выражениях строка заключается в апострофы. Количество символов в строке (длина строки) может динамически изменяться от 0 до 255. Для определения данных строкового типа используется идентификатор string, за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если это значение не указывается, то по умолчанию длина строки равна 255 байт. Переменную строкового типа можно определить через описание типа в разделе определения типов или непосредственно в разделе описания переменных. Строковые данные могут использоваться в программе в качестве констант. Недопустимо применение строковых переменных в качестве селектора в операторе case. Определение строкового типа устанавливает максимальное количество символов, которое может содержать строка. Выражения, в которых операндами служат строковые данные, называются строковыми. Они состоят из строковых констант, переменных, указателей функций и знаков операций. Пример

Строковые процедуры и функции concat (s1[, s2, …, sn]) – функция типа string ; возвращает строку, представляющую собой сцепление строк – параметров s1, s2, …, sn. copy (st, index, count) – функция типа string ; копирует из строки st count символов, начиная с номера index. delete (st, index, count) - процедура удаляет count символов из строки st начиная с символа с номером index. insert (subst, st, index) - процедура вставляет подстроку subst в строку st начиная с номера index. length (st) – функция типа integer, возвращает длину строки st. pos (subst, st) – функция типа integer, отыскивает в строке st первое вхождение подстроки subst и возвращает номер позиции с которого она начинается, если подстрока не найдена, то возвращается ноль. str (x [:width [:decimals]], st) – процедура преобразует число x любого вещественного или целого типа в строку символов st так, как это делает процедура writeln перед выводом; параметры width и decimals, если они присутствуют, задают формат преобразования: width определяет общую ширину поля,

Выделенного под соответствующее символьное представление вещественного или целого числа x, а decimals – количество символов в дробной части, если x – вещественного типа. val (st, x, code) – процедура, преобразует строки символов st во внутреннее представление целой или вещественной переменной x, которая определяется типом этой переменной ; параметр code содержит ноль. upcase (ch) - функция типа char; возвращает для символьного выражения ch, которое должно представлять собой строчную латинскую букву, соответствующую заглавную букву, если введен другой символ функция возвращает его без изменения.

Пример: Определить наименьшую длину слова в строке. Считать, что все слова отделены друг от друга пробелами. var s: string; I, l, min: integer; begin write(введите строку -> ); readln (s); l:=0; min:= length(s); s:=s+ ; for i:=1 to length(s) do if s [i]<> then inc(l) else if (l 0) then begin min:=l; l:=0; end; writeln(наименьшая длина слова =, min); end.

Пример: Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Посчитать, сколько слов содержит данная строка [6]. var str: string; k, i: integer; f: boolean; begin write(введите текст до точки -> ); readln(str); f:= false; i:= l; k:=0; repeat if (str[i]<> ) and (not f) then f:= true; if (str[i]= ) and (f) then

begin f:= false; inc(k); end; inc(i); until (str[i]= ) or (i= length(str)); If str[i-1]<> then inc(k); writeln(количество слов в строке –, k); end.

Пример: Дан символьный файл f. Записать в файл g компоненты файла f в обратном порядке[13]. var f, g: file of char; ch: char; n: word; begin assign (f, ch1. txt); reset (f); assign (g, ch2. txt); rewrite (g); n:= filesize (f); repeat dec (n); seek (f, n); read (f, ch); write (g, ch); until n=0; close (f); close (g); end.