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

2. Динамические массивы

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

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

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

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

Статический массив - это когда ты заранее знаешь, сколько переменных туда нужно будет записать, т.е. если ты объявил массив на 10 членов, то уж туда никак не запихнешь одиннадцать. В форме он объявляется так: Dim Chislo(9) As Long  Что здесь важно. Dim - оператор, который точно также, как и при объявлении переменной, объявляет массив и выделяет для нее память. Chislo - ну это просто имя, придумывается также как и для переменной и отвечает тем же требованиям. (9) - количество элементов в массиве - их 10. Почему так. Дело в том, что элементы массива нумеруются с нуля, а не с единицы, поэтому у нас десять элементов массива c номерами 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9. Если для каких-то целей такой порядок тебя не устраивает, то используется оператор Option Base 1, который прописывается в разделе Declarations и привязывает первый элемент ВСЕХ, повторяю ВСЕХ, массивов в программе к единице. As Long - определение типа данных массива так же как тип обычной переменной. Почти всегда все элементы массива имеют один и тот же тип ( в данном случае длинное число Long). На крайняк, если это не так, или если ты не знаешь какого типа будут данные, можно задать тип Variant, но это нежелательно из-за того, что это занимает значительный объем памяти, особенно если массив большой. Размерность - ее так сразу не заметно, но она здесь присутствует и равна единице, потому, что у на одна циферка (девятка), т.е. наш массив является одномерным - по сути список значений.

Private Sub Form_Load() Text1.Text = "" For x = 1 To 10 Chislo(x) = x * 8 Next x End Sub

Билет 26

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

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

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

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

Unit имя;

Interface

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

Implementation

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

Initialization

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

Finalization

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

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

Билет 27

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

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

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

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

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

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:

Билет 28

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

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

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

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

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

2. Алфавит языка Турбо Паскаль включает буквы, цифры, шестнадцатеричные цифры, специальные символы, пробелы и зарезервированные слова.Буквы — это буквы латинского алфавита от а до 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.

Билет 29

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;…

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