- •1. Данные программ хранятся в переменных.
- •Данные программ хранятся в переменных.
- •Пример динамического массива на Паскале
- •2. Данные программ хранятся в переменных.
- •1) Динамические массивы
- •2. . Данные программ хранятся в переменных.
- •2. Данные программ хранятся в переменных.
- •1. Данные программ хранятся в переменных.
- •1. Данные программ хранятся в переменных.
- •2. Динамические массивы
- •2. Данные программ хранятся в переменных.
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 - вся программа, в том числе и процедуры P1, PP1, P2; переменной q - процедура P1, в том числе и ее внутренняя процедура PP1; переменной t - только процедура PP1 и т.д. Переменные, объявленные в основной программе, действуют во всей этой программе. Такие переменные называют глобальными (в программе SubRout - это переменные x, y, z, k, m, n ). Переменные, объявленные в процедуре, действуют лишь в пределах этой процедуры. Это локальные переменные. Более общее определение: - локальными называют переменные, которые объявлены в разделах 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. Оператор while … do
Данный оператор реализует цикл с предусловием.
Формат:
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.
Оператор repeat … until
Данный оператор реализует цикл с постусловием
Формат:
Repeat
Оператор1;
Оператор2;
…
операторN;
until условие;
Повторять операторы до выполнения условия.
Пример
То же
…
x:=x1; repeat y:=sin(x); writeln(x,’->’,y); x:=x+dx; until x>x2;…