Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety2.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
252 Кб
Скачать

Вопрос №9. Общая структура цикла и получение из нее структур циклов на языке Турбо Паскаль

Цикл – это повторяющиеся части вычислений действия с индивидуальными данными.

Существует три структуры цикла:

1) цикл с предусловием

2) с постусловием

3) с параметром.

Начнем рассматривать с первого пункта, с цикла с предусловием:

1

На языке Паскаль эта структура имеет вид

While <условие правдиво> do <>

2. Цикл с постусловием

На языке Паскаль:

Repeat

<>

Until <условие ложно>

Выполняется в отличие от цикла while как минимум один раз. Выполняется до тех пор, пока условие не станет истинно, в отличие от while, где выполняется ПОКА истинно

3. Цикл с параметром.

На языке Паскаль:

For i:=<начальное значение> to <конечное значение> do <>

ВБлок-схема: узел 57 опрос №10. Пример. ГСА преобразования символьной записи целого числа без знака в целый тип данных.

Блок-схема: данные 59

Блок-схема: процесс 61

Блок-схема: процесс 62

Блок-схема: подготовка 68

Блок-схема: процесс 70

Блок-схема: данные 79

Вопрос №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)Простые:

  1. Ординальные

Целые(ShortInt(1byte),Integer(2byte),LongInt(4b),Byte(1b),word(2b))

Символьный (char(1b))

Булевский (Boolean)

Перечисленный(one, two, three), могут быть ограениченными типами – 1..10, ‘d’..’f’

  1. Вещественный

Real(6b),

Single(4b),Double(8b), Extended (10b), comp(8b) – для подклучения данных типов необходимо прописать {$N+}

2) сложные

  1. Ссылочный тип(указательный тип) ^тип|Pointer -1byte

  2. Строки (string)(255 символов)

  3. Регулярный тип(массив) array

  4. Комбинированный тип (записи record)

  5. Множества (set of)

  6. Файлы file text

  7. Объекты (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.

Функции для преобразования типов данных:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]