- •Вопрос №1.Цель, предмет и задачи изучения дисциплины.
- •Вопрос №3. Технология выполнения программ на языке тр в ide
- •Вопрос №4. Принципы алгоритмизации и программирования.
- •Вопрос №5. Этапы решения задач на эвм.
- •Вопрос №6. Алгоритм. Сущность, свойства.
- •Вопрос №7. Методы преобразования алгоритмов.
- •Вопрос №8. Основные приемы разработки алгоритмов.
- •Вопрос №9. Общая структура цикла и получение из нее структур циклов на языке Турбо Паскаль
- •Вопрос №14.
- •Int(X) – значением функции является целая часть вещественного числа X.
- •Вопрос №15. Структура программ и подпрограмм.
- •Вопрос№18. Обработка массивов.
- •Вопрос №19. Пример обработки текстов.
- •Вопрос №20. Порядок обработки текстовых файлов.
- •Вопрос №21. Стандартные файлы ввода-вывода.
- •Вопрос №22. Процедуры и функции ввода-вывода. Типы данных и форматы вывода.
- •Вопрос №23. Организация и использование процедур в языке Паскаль.
Вопрос №9. Общая структура цикла и получение из нее структур циклов на языке Турбо Паскаль
Цикл – это повторяющиеся части вычислений действия с индивидуальными данными.
Существует три структуры цикла:
1) цикл с предусловием
2) с постусловием
3) с параметром.
Начнем рассматривать с первого пункта, с цикла с предусловием:
1
На языке Паскаль эта структура имеет вид
While <условие правдиво> do <>
2. Цикл с постусловием
На языке Паскаль:
Repeat
<>
Until <условие ложно>
Выполняется в отличие от цикла while как минимум один раз. Выполняется до тех пор, пока условие не станет истинно, в отличие от while, где выполняется ПОКА истинно
3. Цикл с параметром.
На языке Паскаль:
For i:=<начальное значение> to <конечное значение> do <>
В
опрос
№10. Пример. ГСА преобразования символьной
записи целого числа без знака в целый
тип данных.
Вопрос №11. Основной цикл работы ПЭВМ: алгоритм и интерпритация на языке Турбо Паскаль.
Вопрос №12. Основные понятия и обозначения языка Паскаль
Алфавит: A..Z(a..z) A≡a, 0..9, знаки +,-,;,…
Ключевые слова: begin, end,…
Лексика:
Комментарии {..} (*..*)
Слова (идентификатор), буква+буква/цифра. Может быть любой длины, но различается лишь первые 63 символа в слове.
Слова:
1) ключевые (зарезервированные)
2) стандартные (предопределенные)
3) пользовательские (слова или имена)
Числа записываются в десятичной системе счисления. Но можно и в 16ной.
Вопрос №13. Классификация языков программирования. Трансляторы. Компоненты языка программирования.
Язык – набор символов и правил, устанавливающих спсооб комбинации символов в осмыслении слова и предложения. Языки бывают естественные и искуственные.
Языки программирования:
1. Низкий уровень
Машинозависимые. Нужно знать структуры ЭВМ, для каждой машины свой язык, языки символьного кодирования (язык Ассемблера)
2. Высокий (машинонезависимый)
Процедурноориентированные языки (алгоритмичные языки), проблемноориентированные языки, естественные языки.
Трансляторы(переводят с языка программирования в машинный язык *.exe)
1) Ассемблер (.ASM->.exe)
2) Макроассеблер (asm->exe)
3) компилятор (.pas->.exe)
4) генератор
Весь исходящий модуль преобразовывается в .exe. (транслятор компиляторного типа). Тратит меньше времени
Исходящий модуль выполняется по строкам выполняет исходящий текст. Транслятор-интепритатор (тратит больше времени)
Вопрос №14.
Тип данных определяет:
1. структуры данных
2. диапазон изменения данных этого типа
3. операции, которые можно делать
4. функции над данными этого типа
Основные типы(классификация типов)
1.целый
2.вещественный
3.символьный
4.перечисленный
Типы Данных:
1)Простые:
Ординальные
Целые(ShortInt(1byte),Integer(2byte),LongInt(4b),Byte(1b),word(2b))
Символьный (char(1b))
Булевский (Boolean)
Перечисленный(one, two, three), могут быть ограениченными типами – 1..10, ‘d’..’f’
Вещественный
Real(6b),
Single(4b),Double(8b), Extended (10b), comp(8b) – для подклучения данных типов необходимо прописать {$N+}
2) сложные
Ссылочный тип(указательный тип) ^тип|Pointer -1byte
Строки (string)(255 символов)
Регулярный тип(массив) array
Комбинированный тип (записи record)
Множества (set of)
Файлы file text
Объекты (object)
Boolean
Структура данных: Занимает ½ байта
Значения: True/False
Операции: логические: NOT,OR,AND,XOR
>,<,<=,<>,>=,,=
Функции:
Function odd(N:целые):Boolean
True, если N – четное, else FALSE
Function Eoln (var text):Boolean;
If конец строки then true else false
Целый тип данных
1) ShortInt -1byte (-128..+127)
2)Integer 2byte
3) LongInt
MaxInt,MaxLongInt (константы, благодаря которым можно узнать максимальное значения Integer и LongInt)
4)byte 1byte (0.255)
5) word 2byte (0..65тыс)
3) операции +,-,*,div, mod (н-р: 20 div 7 ->2)
Операции отношения - >,<,>=,<=,<>,= :Boolean
Операции сдвига SHL (<-), SHR(->)
Н-р: N SHL 2 = N*2^2
Логические операции над целыми: NOT,OR,AND,XOR – над битами, для проверки одного бита
4)Функции ABS(n)- модуль n
SQR(n)- n^2
Round(x:вещественное)-округлить х
Trunc(х:вещественное)Жотбрасивыание дробной части
Вещественный тип
Real(6byte)
Расширенный вещественный тип (необходимо для его работы включить {$N+})
Single 4b
Double 8b
Extended 10b
Comp 8b
Real +-y.<10 цифр>E+-pp
+-y.<14 цифр>E+-pppp – расширенные типы
3) +,-,*,/
Операции отношения - >,<,>=,<=,<>,= :Boolean
На равенство проверяется не очень точно
4) функции
Арифметические ABS(x),SQR(x),SQRT(x)
Тригонометрические sin(x), cos(x), pi, arctg(x), ln(x), exp(x)=e^x
Int(x) – выделение целой части
Frac(x)- выделение дробной части
Символьный тип (char)
Занчения: символы с кодом от 0..255
Операции отношения(сравниваются коды символов)
Фукнции: ord(ch:char):byte – код ch
Chr(код:byte):char – возращает символ с кодом
Chr(0)..chr(255)- диапозон char
Перечисленный и огранниченный тип
Перечисленный тип задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками, например:
type
colors = (red, white, blue);
Для переменной скалярного типа можно указать некоторое подмножество значений, которые может принимать данная переменная.
Общий вид:
a: min..max;
здесь a – переменная, min – левая граница, max – правая граница подмножества (диапазона). Границы диапазона разделяются двумя точками.
Регулярный тип (массив)
Объявляется:
Имя массива:array[тип Index] of <тип компонента>
Index – любой ординальный, кроме LONGINT
Заполняется циклом, обычно циклом с параметром, выводится аналогично
Комбинированный тип(запись)
Объединяет разные типы в одну запись
Пример: запись для хранения даты и способы хранения дат в программе, если необходимо сравнения дат.
Type Tdate=record
Day:1..31;
Month:1..12;
Year:Integer;
Var Date:array[1..N] of TDate
Комбинированный тип с вариантами
некоторого лекарства. Если проверки не производится, то единственные данные, которые нас интересуют, - это применял ли данный пациент ранее данное лекарство. Если же производится проверка, то необходимо собрать сведения по большому числу данных относительно головной боли, лихорадки и тошноты.
type Effect=Record
Nomer: Integer;
Case Proverka: Boolean of
FALSE: (PrinimalRanee: Boolean);
TRUE : (GolovBol,Lihoradka,Toshnota: Boolean)
end;
var Nekto: Effect;
Множественный тип данных
Множественный тип данных Паскаля напоминает перечислимый тип данных. Вместе с тем множественный тип данных – набор элементов не организованных в порядке следования.
В Паскале под множественным типом понимается конечная совокупность элементов, принадлежащих некоторому базовому типу данных.
В качестве базовых типов могут использоваться:
перечислимые типы;
символьный;
байтовый;
диапазонные на основе вышеперечисленных.
Такие ограничения связаны с формой представления множественного типа данных в Паскале и могут быть сведены к тому, чтобы функция ord() для используемого базового типа лежала в пределах от 0 до 255.
Type <имя_типа>= set of <базовый_тип>
С множественными типами Паскаля можно выполнять действия объединения(+), исключения(-) и пересечения(*).
Файловый тип данных
Файлы – последовательность компонентов одного типа. В TP мб 3 типа файлов:
1.file – нетипированный файл
2.file of <тип компонента>(любой но не файл)
3.text (текстовые файлы – символы, организованные в строки)
Работа с файлами
1. var F:file of <тип компонента>
2. assign(f:file;filename:string)
3.открыть на чтение или на запись
Reset(var f:file)-открыть на чтение
Rewrite(var f:file) – открыть на запись
По умолчанию контроль ввода вывода {$I+}
IORESULT – выводит код ошибки ввода-вывода.
Запись в файл или чтение из него.
Чтение read(f:file,<переменная типа компонента>)
Запись write(f,exp:<тип компонента>)
Запись всегда идет в конец файла
Существуют функциия проверяющая закрыт файл или нет EOF(F)-boolean
Закрытие файла:
Процедура CLOSE(f).
Файлы закрываются по отдельности. Сразу в одной close несколько файлов писать нельзя.
Текстовые файлы.
Необходима использовать процедуру для проверки конца строки: EOLN(var F:text)
Чтение read, запись write
При использовании writeln или readln курсор чтение или запись автоматически переводится на следующую строчку.
Текстовые файлы для взаимодействия с диском имеют буфер 128 байт.
Для уменьшения времени работы программы существует процедура: settextbuf(имя файла, буфер). Она пишется после assign, но до reset. Задает объем буфера.
Строковый тип данных.
Строки в Паскале – это данные типа string. Они используются для хранения последовательностей символов. В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа. Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки.
Средства языка ТР для преобразования значений простых типов данных в друг друга.
В турбо паскале имя типа можно использовать как функцию преобразования значения к этому типу.
Как уже говорилось, тип переменной позволяет не только устанавливать длину ее внутреннего представления, но и контролировать те действия, которые выполняются над ней в программе. Контроль за использованием переменных еще на этапе компиляции программы - важное преимущество Турбо Паскаля перед другими языками программирования, в которых допускается автоматическое преобразование типов. В Турбо Паскале почти невозможны неявные (автоматические) преобразования типов. Исключение сделано только в отношении констант и переменных типа INTEGER (целые), которые разрешается использовать в выражениях типа REAL (вещественные). Если, например, переменные X и Y описаны следующим образом:
var
х: Integer;
у: Real;
то оператор
у := х + 2;
будет синтаксически правильным: хотя справа от знака присваивания стоит целочисленное выражение, а слева - вещественная переменная, компилятор сделает необходимые преобразования автоматически. В то же время оператор
х := 2.0;
будет неверным, так как автоматическое преобразование типа REAL (константа 2.0 содержит десятичную точку и, следовательно, принадлежит к типу REAL) в тип INTEGER в Турбо Паскале запрещено.
Разумеется, запрет на автоматическое преобразование типов еще не означает, что в Турбо Паскале нет средств преобразования данных. Они, конечно же, есть, но их нужно использовать явно (подробнее об этом см. гл.4). Для преобразования данных в языке существуют встроенные функции, которые получают в качестве параметра значение одного типа, а возвращают результат в виде значения другого типа. В частности, для преобразования REAL в INTEGER имеются даже две встроенные функции такого рода: ROUND округляет REAL до ближайшего целого, a TRUNC усекает REAL путем отбрасывания дробной части.
Например, ошибочным будет оператор
х := у/х;
но правильным
х := round(у/х);
(объявления переменных см. выше).
Понятие функции в Турбо Паскале близко к понятию процедуры. Как и процедура, функция вызывается своим именем и может содержать произвольное число операторов Турбо Паскаля и даже внутренних процедур и функций. Существенным отличием функции от процедуры является то обстоятельство, что функция имеет собственное значение и, следовательно, может использоваться наравне с переменными в выражениях соответствующего типа.
Для преобразования данных типа CHAR (символ) в целое число предназначена функция ORD, обратное преобразование INTEGER в CHAR осуществляет функция CHR.
Функции для преобразования типов данных:
