Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bilet_1 все.docx
Скачиваний:
1
Добавлен:
19.09.2019
Размер:
142.38 Кб
Скачать

Пример динамического массива на Паскале

byteArray : Array of Byte; // Одномерный массив

multiArray : Array of Array of string; // Многомерный массив

Пример

ArrayList array=new ArrayList();

array.Add(256);

array.Add("Hello World!");

array.Add(true);

Билет 6

  1. Процедура.

Входные параметры Выходные параметры

Процедура – совокупность операторов выполняющих некоторые действия над входными параметрами и возвращающая результат в виде выходных параметров в место вызова.

спользуются в том случае, когда подпрограмма возвращает много значений результата или не возвращает ничего. Формат описания: procedure имяпр.(список формальных параметров);

тело процедуры .В заголовке отсутствует указание типа результата. Процедуры возвращают результаты по другому. Список формальных параметров процедуры состоит как из входных параметров, так из выходных. Все остальное в описании процедуры тоже.

Пример

procedure sum(a,b:integer);

begin

…………………………….

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

Все формальные параметры можно разбить на четыре категории:

  • параметры-значения (эти параметры в основной программе подпрограммой не меняются);

  • параметры-переменные (эти параметры подпрограмма может изменить в основной программе);

  • параметры-константы (используются только в версии 7.0);

  • параметры-процедуры и параметры-функции (т. е. процедурного типа).

Для каждого формального параметра следует указать имя и, как правило, тип, а в случае параметра-переменной или параметра-константы - его категорию. Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недоступным для непосредственного использования подпрограммой. Тип формального параметра может быть практически любым, однако в заголовке подпрограммы нельзя вводить новый тип. Например, нельзя писать

function Max(A: arrayt1..100] of Real): Real;

type tArr = arrayt1..100] of Real; function Max(A: tArr): Real;

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

  1. Задание файловой переменной Файловый тип или переменную можно задать одним из трех способов: <Имя> = ПОЭТ <тип> <Имя> - имя файлового типа (правильный идентификатор); ПОЭТ - зарезервированные слова; <Тип> - любой тип кроме файлов Turbo Pascal. В зависимости от способа объявления можно выделить три вида файлов:

  • типизированные файлы (задаются предложением ПОЭТ);

  • текстовые файлы (определяются типом TEXT);

  • нетипизированные файлы (определяются типом поэта).

Доступ к файлам Файлы и логические устройства становятся доступны программе только после выполнения особой процедуры открытия файла (логического устройства). Эта процедура заключается в связывании ранее объявленной файловой переменной с именем существующего или вновь создаваемого файла, а также в указании направления обмена информацией: чтение из файла или запись в него Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре Назначьте: ASSIGN (<ф П..>, <Имя файла или л У..>); Здесь <ф. п> - файловая переменная. <Имя файла или л. у> -. текстовое выражение, содержащее имя файла или логическое устройство. Если имя файла задается в виде пустой строки, например, назначение (F,''), то в зависимости от направления обмена данными файловая переменная связывается со стандартным файлом или ввода-вывода.

Билет 7

1)Область видимости переменной — понятие в некоторых языках программирования. Оно определяет места в исходном коде программы, в которых может использоваться данная переменная.По области видимости переменные делятся на: локальные (которые «видны» внутри данной структуры — файла, подпрограммы или оператора) и глобальные (которые «видны» во всей программе). В некоторых языках появились ещё и общие переменные.Область видимости переменной может задаваться с помощью классов памяти или пространства имён.В C++ область доступа поля класса можно задавать с помощью ключевых слов public, private и protected.

Область действия переменной - это тот участок программы, где имени переменной ставится в соответствие один и тот же машинный адрес. В Паскаль-программе областью действия переменной является весь блок, в котором объявлена данная переменная, за исключением тех внутренних блоков, в которых эта же переменная объявлена повторно. В рассматриваемом примере область действия переменной x, объявленной в основной программе - вся программа, за исключением процедуры P1; переменной k - вся программа, в том числе и процедуры P1PP1P2; переменной q - процедура P1, в том числе и ее внутренняя процедура PP1; переменной t - только процедура PP1 и т.д. Переменные, объявленные в основной программе, действуют во всей этой программе. Такие переменные называют глобальными (в программе SubRout - это переменные xyzkmn ). Переменные, объявленные в процедуре, действуют лишь в пределах этой процедуры. Это локальные переменные. Более общее определение: - локальными называют переменные, которые объявлены в разделах Var процедур и функций; - глобальными называют переменные, которые объявлены в разделах Var вне процедур и функций.

Program SubRout;

Var  x,y,z : real;

     k,m,n : integer;

  Procedure P1;

  Var  x,y,q : word;

       m,u : real;

     Procedure PP1;

     Var  y,t : byte;

          n : longint;

     Begin

     End { PP1 };

  Begin

  PP1;

  End { P1 };

  Procedure P2;

  Var  z,v : char;

       n,r : longint;

  Begin

  End { P2 };

Begin

  P1;

  P2;

End.

Пространство имён (англ. namespace) — некоторое множество, под которым подразумевается модель, абстрактное хранилище или окружение, созданное длялогической группировки уникальных идентификаторов (то есть имён). Идентификатор, определенный в пространстве имён, ассоциируется с этим пространством. Один и тот же идентификатор может быть независимо определён в нескольких пространствах. Таким образом, значение, связанное с идентификатором, определённым в одном пространстве имён, может иметь (или не иметь) такое же значение, как и такой же идентификатор, определённый в другом пространстве. Языки с поддержкой пространств имён определяют правила, указывающие, к какому пространству имён принадлежит идентификатор (то есть его определение). В больших базах данных могут существовать сотни и тысячи идентификаторов. Пространства имён (или схожие структуры) реализуют механизм для сокрытия локальных идентификаторов. Их смысл заключается в группировке логически связанных идентификаторов в соответствующих пространствах имён, таким образом делая системумодульной.

2) Оператор ветвления (условная инструкция, условный оператор) — оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.

Условный оператор реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие) принимает значение «истина» true. В большинстве языков программирования условный оператор начинается с ключевого словаif.

if условие then команды end

Условный оператор с двумя ветвями

if условие1

then команды1

else if условие2 then команды2

else if условие3 then команды3

else if условиеN-1 then командыN-1

else командыN end;

Условный оператор с несколькими условиями

if условие1 then команды1

elsif условие2 then команды2

elsif условие3 then команды3

else командыN end;

Переключатель

switch (i)

{

case 0:

case 1: // последовательность операторов

break;

case 2: // последовательность операторов

break;

default:

;

Билет 8

  1. Функция.

Входные параметры Выходные параметры

Функция возвращает один результат, что позволяет использовать ее в выражениях.

Функции

Формат описания:

Описание функции начинается с заголовка:

Function имя функции(список формальных параметров): тип;

тело функции;

Имя функции – то имя, которое программист решил дать своей функции.

Список формальных параметров – список переменных с указанием их типов, использующихся для передачи функции входных данных;

Тип – тип возвращаемого результата (тип значения которое вычисляет функция). Это простые типы, указатели и строки.

Тело функции – по структуре ничем не отличается от программы (кроме раздела uses), но заканчивается не точкой, а точкой с запятой.

Пример:

Описание и использование функции выбора большего из двух чисел.

// y=(a+b)2+a

function fy (a,b:real):real;

2.Сортировка Сортировкой называют процесс упорядочивания элементов по некоторому признаку. В дальнейшем будем рассматривать только сортировку массивов. Массив может быть отсортирован по возрастанию – каждый следующий элемент массива больше предыдущего или по убыванию - каждый следующий элемент массива меньше предыдущего. Рассмотрим следующие простые методы:Выбора.

  1. Обмена.

  2. Включения.

Метод прямого выбора

Основан на следующих принципах:

  1. Выбирается наименьший элемент.

  2. Он меняется с первым элементом а[1].

  3. Затем этот процесс повторяется с оставшимися n-1 элементами, n-2 элементами и т.д. до тех пор пока не останется один, самый большой элемент.

for i:=1 to n-1 do begin

Присвоить к индекс наименьшему из a[i]…a[n];

Поменять местами a[i] и a[k];

end

Const n=100;

Var i,j,k:integer;

a:array[1..n] of real;

x:real

…..

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

Билет 9

1. Модуль – это отдельно компилируемая программная единица. Модуль содержит различные описания, а именно: типы, константы, переменные, процедуры и функции и даже возможно некоторую операторную часть. Каждый модуль имеет имя и находится в отдельном файле. Если программа состоит из модулей, то при компиляции каждый модуль компилируется отдельно. Откомпилированные модули объединяются в выполняемую программу. Этот процесс называется сборкой. Однажды написанный и откомпилированный модуль можно многократно использовать в различных программах, что экономит силы программиста, сокращает время компиляции и предохраняет от искажений исходный текст модуля. Иногда это даже помогает сохранить авторские права на программный модуль.

Uses имя1, имя2,имя3;

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

Файл модуля имеет следующую структуру:

Unit имя;

Interface

Интерфейсный раздел

Implementation

Раздел реализации

Initialization

Раздел инициализации

Finalization

Завершающий раздел

End. //заканчивается точкой

  1. Понятие исключительной ситуации, ее обработка средствами Delphi Под исключительной ситуацией мы будем понимать некое непредвиденное событие, способное повлиять на дальнейшее выполнение программы. При обработке такой ситуации Delphi, как обычно, работает с объектами. С точки зрения компилятора Delphi исключительная ситуация - это объект. Для работы с этим специфичным объектом в Delphi (точнее, в Object Pascal) были введены следующие языковые конструкции: try .. except и try .. finally. Рассмотрим эти языковые конструкции более подробно. Итак, конструкция try .. except имеет следующий синтаксис (листинг 1.6):

try {исполняемый код}; except on Exceptionl do {код, исполняемый в случае возникновения ошибки 1}; on Exception2 do {код, исполняемый в случае возникновения ошибки 2}; else {код, обработчик всех не перехваченных ранее ошибок}; end; Если при выполнении кода, размещенного в разделе try, генерируется исключение, то выполнение этого раздела прекращается и управление передается коду, размещенному в разделе except. Раздел except может использоваться двумя способами. Во-первых, в нем могут располагаться любые операторы, кроме обработчиков исключений, начинающихся с приставки on. Это и операторы сообщения об ошибке, и команды, позволяющие освобождать системные ресурсы, а также другие операторы и команды. Во-вторых, раздел except используется для обработки исключений. В этом случае в него могут включаться только операторы обработки исключений. Если среди обработчиков встретился обработчик, соответствующий сгенерированному исключению, то выполняется оператор этого обработчика, исключение разрушается и управление передается коду, расположенному после оператора on Exception do. Раздел, расположенный после ключевого слова else, служит для обработки любых исключений, не описанных в разделе except. Этот раздел не является обязательным. Если при обработке исключительной ситуации не будет найден подходящий обработчик, то произойдет обработка системным обработчиком исключений. Рассмотрим простой пример обработки исключительной ситуации деления на ноль (листинг 1.7).

Билет 10

1.Отладка – процесс поиска ошибок в исходном тексте программы. Устраняются ошибки с помощью текстового редактора. Синтаксические ошибки исправляются наиболее просто – их характер и место возникновения указывает компилятор. Логические ошибки помогает найти специальная программа – отладчик.

Цель отладки — найти оператор программы, при исполнении которого правильные аргументы приводят к неправильным результатам

Методы отладки

-Выполнение по шагам и трассировка Команды выполнения по шагам Step Over и трассировки Trace Into меню выполнения Run дают вам возможность построчного выполнения программы. -Остановка выполнения Существует два способа сообщить IDE, что программу нужно выполнить до определенной точки, а затем остановить. Первый и простейший способ состоит в том, чтобы найти позицию в программе, где вы хотите остановиться, затем выбрать в меню Run команду Go to Cursor (Выполнение до позиции курсора). Ваша программа выполняется как обычно, пока не достигнет оператора, где она должна остановиться. -Отслеживание и модификация

При выполнении программы по шагам вы можете наблюдать ее вывод несколькими способами. Первый состоит в переключении в случае необходимости экранов. При втором способе используется второй монитор. В-третьих, для вывода программы вы можете открыть окно в IDE для DOS.

2. Поток - объект внутри процесса, отвечающий за выполнение кода и получающий для этого процессорное время.

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

Каждый поток может создать другой поток и т.д. Потоки не могут существовать отдельно от процесса, т.е. каждый поток принадлежит какому-то процессу и этот поток выполняет код, только в адресном пространстве этого процесса. Иными словами, поток не может выполнить код чужого процесса, хотя в nt-системах есть лазейка, но это уже тема отдельной статьи.

Многопоточность обеспечивает псевдопараллельную работу множества программ. В некоторых случаях без создания потоков нельзя обойтись, например, при работе с сокетами в блокирующем режиме.

В delphi существует специальный класс, реализующий потоки - tthread. Это базовый класс, от которого надо наследовать свой класс и переопределять метод execute.

Билет 11

1.Алфавит языка Турбо Паскаль включает буквы, цифры, шестнадцатеричные цифры, специальные символы, пробелы и зарезервированные слова.Буквы — это буквы латинского алфавита от а до z и от А до Z, а также знак подчеркивания _ (код ASCII 95). В Турбо Паскале нет различия между прописными и строчными буквами алфавита, если только они не входят в символьные и строковые выражения. Цифры — арабские цифры от 0 до 9. Каждая шестнадцатеричная цифра имеет значение от 0 до 15. Первые 10 значений обозначаются арабскими цифрами 0—9, остальные шесть — латинскими буквами A—F или a—f. Специальные символы Турбо Паскаля:+   -   *   /   =   ,   '   .   :   ;   <   >   [ ]   { }   ^   @   $   # К специальным символам относятся также следующие пары символов:

<>   <=   >=   :=   ( * * )   (. .)

{Заголовок програмы}

program name_of_program;

{Импорт внешних модулей}

uses

  список модулей

{Раздел описаний}

var

  описания переменных

const

  описания констант

type

  описания пользовательских типов

{Описания процедур и функций}

procedure test;

begin

end;

.......

{Основная программа}

begin

  Код основной программы

end.

2. Это процедура ShowMessage, функции MessageDlgPos и MessageDlg, они показывают панель (окно) вывода сообщений.

howMessage(const Msg: String) - эта процедура выводит окно с сообщением и кнопкой Ok. В заголовке содержится название исполняемого файла, если в опциях приложения не задан параметр Title, если задан то выводиться будет он. Строка Msg - будет выводиться как текст сообщения.

MessageDlg(const Msg: String; AType: TMsgDlgType; Abuttons: TMsgButtons; HelpCtx: Longint): Word - функция показывающая диалоговое окно сообщения в центре экрана и дает возможность пользователю ответить на сообщение. Msg - параметр отвечающий за выводимый текст сообщения.

Тип выводимого окна сообщения зависит от параметра AType, список возможных значений которого следующий:

  • mtErrore - на фоне красного круга расположен белый косой крест и заголовок окна -    Error;

  • mtWarning - на фоне желтого треугольника расположен черный восклицательный знак -"!"   и заголовок окна - Warning;

  • mtConfirmation на фоне белого круга расположен синий знак "?"  и заголовок окна - Confimation;

  • mtInformation - на фоне белого круга расположена синия буква "i"  и заголовок окна - Information;

  • mtCustom - диалоговое окно не содержит рисунка, в заголовке выводиться имя исполняемого файла приложения или Title свойства Application приложения.

AButtons - параметр, который задает набор кнопок на диалоговой форме и может принимать произвольные комбинации из значений:

  • кнопка Yes - mbYes,

  • кнопка Ok - mbOk, 

  • кнопка No - mbNo,

  • кнопка Cancel - mbCancel,

  • кнопка  Abort - mbAbort,

  • кнопка Retry - mbRetry,

  • кнопка Ignore - mbIgnore,

  • кнопка All - mbAll,

  • кнопка Help - mbHelp.

Список из необходимых, перечисленных кнопок должен  быть заключен в квадратные скобки.

MessageDlg('Большое значение', mtConfirmation, [mbYes,mbNo],0 );

Кроме перечисления отдельных кнопок, есть возможность задать часто используемым сочетаниям кнопок значениями специальных констант:

  • кнопки OK и Cancel - mbOkCancel,

  • кнопки Yes, No и Cancel - mbYesNoCancel, 

  • кнопки Abort, Retry и Ignore - mbAbortRetryIgnore.

Билет 12

1. Оператор whiledo

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

Формат:

while условие do оператор

пока делать

Пока условие выполняется повторять оператор.

Пример

Протабулировать функцию sinx в интервале от х1 до х2, с шагом dx.

var x1,x, x2, dx,y: real;

begin

readln(x1, x2, dx);

x:=x1;

While x<x2 do

Begin

Y:=sin(x);

Writeln(x,’->’,y);

X:=x+dx;

End;

End.

Оператор repeatuntil

Данный оператор реализует цикл с постусловием

Формат:

Repeat

Оператор1;

Оператор2;

операторN;

until условие;

Повторять операторы до выполнения условия.

Пример

То же

x:=x1; repeat y:=sin(x); writeln(x,’->’,y); x:=x+dx; until x>x2;…

2.Оператор ветвления case Оператор ветвления case является удобной альтернативой оператору if, если необходимо сделать выбор из конечного числа имеющихся вариантов. Он состоит из выражения, называемого переключателем, и альтернативных операторов, каждому из которых предшествует свой список допустимых значений переключателя:

case <переключатель> of <список ?1 значений переключателя>: <оператор 1>; <список ?2 значений переключателя>: <оператор 2>; ... <список ?N значений переключателя>: <оператор N>; else <оператор N+1> end;

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

Переключатель должен принадлежать порядковому типу данных. Использовать вещественные и строковые типы в качестве переключателя не допускается.

Список значений переключателя может состоять из произвольного количества констант и диапазонов, отделенных друг от друга запятыми. Границы диапазонов записываются двумя константами через разграничитель в виде двух точек (..). Все значения переключателя должны быть уникальными, а диапазоны не должны пересекаться, иначе компилятор сообщит об ошибке. Тип значений должен быть совместим с типом переключателя. Например:

program Console;

{$APPTYPE CONSOLE}

uses SysUtils;

var Day: 1..31;

begin Readln(Day); case Day of 20..31: Writeln('День попадает в диапазон 20 - 31.'); 1, 5..10: Writeln('День попадает в диапазон 1, 5 - 10.'); else Writeln('День не попадает в заданные диапазоны.'); end; Writeln('Press Enter to exit...'); Readln; end. Если значения переключателя записаны в возрастающем порядке, то поиск требуемого оператора выполняется значительно быстрее, так как в этом случае компилятор строит оптимизированный код.

Билет 13

  1. Линейный поиск

Var a:array[1..10] of real;

x:real;

I: integer;

begin

//ввод массива

//ввод х

i:=1;

while i<=10 do

if a[i]=x

then break

else i:=i+1;

If i<=10

then ….

Линейный поиск с барьером

Var a:array[1..11] of real;

x:real;

i: integer;

Begin

//ввод массива

//ввод х

i:=1;

a[11]:=x;

while a[i]<>x do inc(i);

if i<>11

then ….

Бинарный поиск (поиск делением пополам)

Var a:array[1..10] of real;

l,r,i: integer;

x: real;

Begin

// ввод массива

// ввод х

l:=1; r:=10;

Repeat

i:=(l+r)div 2;

if a[i]=x

then break

else if a[i]<x

then l:=i+1

else r:=i-1

Until l>r;

If l<=r

then ….

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