Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika_Lektsii_Shaykhutdinov.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.11 Mб
Скачать

Системы программирования

Средства создания программ

Для создания программы на выбранном языке программирования необходимы:

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

  2. Программа-компилятор переводит текст в машинный код или промежуточный объектный код.

3. Редактор связей или сборщик, который формирует на выходе работоспособное приложение — исполнимый код для конкретной платформы.

4. Исполнимый код — это законченная программа, которую можно запустить на любом компьютере, где установлена операционная система, для которой эта программа создавалась.

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

Основные системы программирования

· Basic: Microsoft Visual Basic

· Pascal: Borland Delphi

· C++: Borland C++Bulider

· Java: Symantec Cafe

Кроме того: Microsoft Visual Studio(C++ и др.)

Алгоритмическое (модульное) программирование

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

Реальные данные, с которыми работает программа, — это числа, строки и логические величины (аналоги 1 и 0, «да» и «нет», «истина» и «ложь»). Эти типы данных называют базовыми.

Каждая единица информации хранится в ячейках памяти компьютера, имеющих свои адреса. На практике заранее неизвестно, в каких конкретно ячейках памяти во время работы программы будут записаны ее данные, поэтому в языках программирования введено понятие переменной, позволяющее отвлечься от конкретных адресов и обращаться к содержимому памяти с помощью идентификатора или имени. Например:

Hello

_SumOfReal

xl

H8_G7_F6

Переменная обычно имеет тип, определяющий, какая информация хранится в данной переменной (число, строка и т. д.). Переменные с указанием их типа можно вводить в программу с помощью специальных команд описания {объявления, декларации). Значения переменных разных типов допускается преобразовывать друг в друга в соответствии с соглашениями языка программирования. Переменные могут существовать на всем протяжении работы программы — тогда они называются статическими, а могут создаваться и уничтожаться на разных этапах ее функционирования — такие переменные называются динамическими.

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

123

2.87

"это строка"

или для удобства обозначать их идентификаторами.

Числовые данные

Числа обычно бывают двух видов: целые и дробные. Если число отрицательное, перед ним ставится знак «-», если положительное, то знак «+» можно ставить, а можно и опускать. Вычисления над целыми числами выполняются точно, вычисления над дробными числами — приближенно. При записи дробных чисел в качестве десятичного разделителя используется точка:

1.28

3.333321

Очень большие или очень маленькие числа записываются специальным образом. Для них дополнительно указывается мантисса — число со знаком, являющееся степенью числа 10. Мантисса записывается справа от числа через букву е (или Е). Пробелы в такой записи не допускаются.

Например, число 100 (единица, умноженная на 10 во второй степени) запишется так:

1е+2

число 0,003 (тройка, умноженная на 10 в минус третьей степени) так:

Зе-3

число со 120 нулями — так:

1Е+120

Тип числа

Бейсик

Паскаль

Си++

целое

INTEGER

integer

int

дробное

DOUBLE

real

float

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

К основным арифметическим операциям относятся:

+ (сложение)

- (вычитание)

* (умножение) / (деление)

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

С помощью арифметических операций формируются арифметические выражения.

Логические выражения отличаются тем, что результат их вычислений может принимать только одно из двух допустимых значений — true (истина, да, включено) и false (ложь, нет, выключено). Чаще всего значение false ассоциируется с нулем, а значение true — с числом 1 или просто ненулевым значением.

При записи логических выражений используются операции сравнения и логические операции.

Операция

Варианты написания

Бейсик, Паскаль

Си++

Равно

=

==

Не равно

<>

!=

Меньше

<

<

Меньше или равно

<=

<=

Больше

>

>

Больше или равно

>=

>=

Приоритеты всех логических операций ниже, чем приоритеты операций сравнения

Логический тип

Бейсик

Паскаль

Си++

Базового типа нет. Используется числовой тип INTEGER

boolean

bool

Строчные выражения

Строки в языках программирования всегда заключаются в кавычки. В Си++ и Бейсике для этого используются двойные кавычки, в Паскале — одинарные.

"это строка Бейсика или Си++"

'это строка Паскаля'

Строка может быть пустой. Часто допускается также операция сцепления строк, записываемая с помощью символа «+». Например:

"123" + "4567" -получится "1234567"

"абв " + "abc " + " эюя" —получится "абв abc эюя"

Тип «строка»

Бейсик

Паскаль

Си++

STRING

string

Базового типа «строка» нет

Указатели

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

Сложные данные

Структуры состоят из полей разного типа.

Синтаксис описания структуры

Бейсик

Паскаль

Си++

TYPE имя-структуры поле AS тип

END TYPE

record поле: тип;

end;

struct имя

{

тип поле;

};

Вот примеры описания структур.

Бейсик:

TYPE Student

Name AS STRING

Sex AS INTEGER

BirthYear AS INTEGER

END TYPE

Паскаль:

record

Name: string;

Sex: boolean;

BirthYear: integer;

end;

Си++:

struct Student {

bool Sex; int BirthYear; };

Доступ к содержимому структуры: Student.BirthYear = 1980;

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

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

Синтаксис описания массива

Бейсик

DIM имя (число элементов) AS тип

Паскаль

аггау[ нижняя_граница .. верхняя_граница ] of тип;

Си++

тип имя[ число-элементов ];

В Бейсике нижней границей считается 1, в Си++ — 0, в Паскале она указывается явно.

Вот примеры описания массивов.

Бейсик:

DIM IntArray(lOOO) AS INTEGER

Паскаль:

array[1..1000] of integer

Си++:

int IntArray[1000];

Доступ к элементу массива осуществляется по его номеру. Этот номер указывается в круглых (Бейсик) или квадратных (Паскаль, Си++) скобках сразу за именем массива (такое действие называется индексированием):

IntArray( 12 ) IntArray[ i+1 ]

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

В развитых языках программирования допускаются массивы, состоящие из структур, и структуры, состоящие из массивов. Например:

а[0].Items.Strings[4].value

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

Описание переменных

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

Синтаксис команд описания данных

Бейсик

Паскаль

Си++

DIM имя AS тип

var имя: тип;

тип имя;

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

Бейсик:

DIM X AS DOUBLE

Паскаль:

var x: real; var Str: record

PI: integer;

S: string;

end;

Си++:

float x; int a[20] ;

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

Паскаль:

var xx, z2: integer; Си++:

int xx, yy[10], z2;

Новые типы данных

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

Синтаксис описания нового типа

Бейсик

Паскаль

Си++

Аналогичен описанию структуры, которое уже является описанием нового типа

type имя = описание;

typedef struct имя-структуры

{

поля-структуры;

} имя;

Имя структуры надо указывать только из-за требований синтаксиса. Реально оно

нигде не применяется

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

Паскаль:

type TMyArray = array[0..99] of integer;

type TMyRecord = record

Iteml: integer;

Item2: string;

end;

var MyArray: TMyArray;

var R: TMyRecord;

Си++:

typedef struct namel

{

int i;

float x;

} TNewStruct;

TNewStruct NewStruct

Разделение операторов

Операторы в Паскале и Си++ отделяются друг от друга точкой с запятой «;» (каждый оператор в этих языках должен заканчиваться таким символом), а в Бейсике — двоеточием : или переходом на новую строку.

Блок операторов

Часто в программе возникает необходимость выполнить группу операторов (например, в зависимости от какого-либо условия). Такая группа объединяется в блок с помощью специальных скобок начала и конца блока, называемых логическими скобками.

В Бейсике явного понятия «блок операторов» нет, в Паскале для этого используются ключевые слова begin и end, а в Си++ — фигурные скобки «{» и «}».

Область действия переменных

Текущий блок, в котором описаны переменные. Как только встречается логическая скобка, закрывающая блок (например,«}»), соответствующая переменная перестает существовать, а выделенная для нее память освобождается.

Оператор присваивания

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

Сам оператор присваивания записывается знаком «=» в Бейсике и Си++ и комбинацией двух знаков «:=» в Паскале (пробел между ними не допускается).

Например:

Result = 5

В переменную Result запишется число 5. Знак «=» означает именно присваивание, а не сравнение, которое может использоваться только в логических выражениях.

Другой пример:

X = X + 1

Сначала вычисляется значение выражения Х+1, и затем оно заносится в переменную X. Допустима и такая запись:

X = X = X

Комментарии

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

Синтаксис комментария

Бейсик

Паскаль

Си++

Однострочный комментарий

REM или '

II

//

Многострочный комментарий

нет

{ } или (* *)

/**/

X = 5 'комментарий до конца строки

X : = 5; // комментарий до конца строки

/*

это комментарий

языка Си++

*/

{

это комментарий

языка Паскаль

(* а это вложенный комментарий *)

}

Условный оператор

Операторы цикла

Ввод и вывод

Работа с файлами