- •1) Принципы фон Неймана
- •2) Общая схема устройства компьютера
- •5) Структура программы на Паскале. Используемые в языке символы. Идентификаторы, ключевые слова, комментарии.
- •12) Массивы
- •15) Назначение параметров
- •16. Локальные, глобальные переменные. Время жизни и область видимости переменных;
- •18 Cтруктуры в си
- •19. Основные директивы препроцессора. Компиляция, линковка;
- •4.2.2. Директива define
- •20. Стандартная библиотека с:
1) Принципы фон Неймана
Любая ЭВМ работает под управлением программы – совокупности команд. Каждая команда осуществляет единичный такт преобразования данных.Все разновидности команд заложенные в ЭВМ называются системой команд ЭВМ данного типа.
Принципы фон Неймана
• Использование двоичной системы счисления в вычислительных машинах. Преимущество перед десятичной системой счисления заключается в том, что устройства можно делать достаточно простыми, арифметические и логические операции в двоичной системе счисления также выполняются достаточно просто.
• Программное управление ЭВМ. Работа ЭВМ контролируется программой, состоящей из набора команд. Команды выполняются последовательно друг за другом. Созданием машины с хранимой в памяти программой было положено начало тому, что мы сегодня называем программированием.
• Память компьютера используется не только для хранения данных, но и программ. При этом и команды программы и данные кодируются в двоичной системе счисления, т.е. их способ записи одинаков. Поэтому в определенных ситуациях над командами можно выполнять те же действия, что и над данными.
• Ячейки памяти ЭВМ имеют адреса, которые последовательно пронумерованы. В любой момент можно обратиться к любой ячейке памяти по ее адресу. Этот принцип открыл возможность использовать переменные в программировании.
• Возможность условного перехода в процессе выполнения программы. Не смотря на то, что команды выполняются последовательно, в программах можно реализовать возможность перехода к любому участку кода.
2) Общая схема устройства компьютера
Функции памяти:
• приём информации из других устройств;
• запоминание информации;
• выдача информации по запросу в другие устройства машины.
Функции процессора:
• обработка данных по заданной программе путем выполнения арифметических и логических операций;
• программное управление работой устройств компьютера.
5) Структура программы на Паскале. Используемые в языке символы. Идентификаторы, ключевые слова, комментарии.
• Структура программы на Паскале
Programm <имя>;
<…> параметр команды
{раздел описаний}
Uses <имя библиотеки>;
Label <список меток>;
Const <список консант>;
Type описание пользовательских типов данных
Var описание переменных программ
Описание подпрограммы
Procedure – заголовок подпрограммы
Label - для локальной метки
Const –локальные константы
Type - …
Var - …
Begin { тело подпрограммы перечень исполн. Операторов }
…
…
End;
Begin { тело программы т. е. перечень исполняемых операторов }
…
…
End.
Паскаль не чувствителен в верхнему регистру
{…} комментарий
Операторы разделяются знаком ;
КЛЮЧЕВЫЕ СЛОВА ЯЗЫКА ПАСКАЛЬ.
and (энд) - И
Логическая операция И (конъюнкция). if (A>B) and (B<="" td="">
array (эрей) - массив
Тип данных - массив. Bi : array [1..78] of integer;
begin (бегин) - начало
Составные операторы заключаются в операторные скобки begin....end.
case (кейс) - вариант
Оператор выбора. case X of 1 : ch:='один'; 2 : ch:='два'; 3 : ch:='три'; end;
const (конст) - константа
Определение констант: const PI=3.14159; KLmin=1; KLmax=18; LINE='0123456789abcdef';
div (див) - разделить
Деление целых чисел. R := A div B; S := R div 3;
do (ду) - выполнить
Служебное слово в операторах for, while, with. for I:=1 to 12 do writeln(I);
downto (даунту)- уменьшая до
Служебное слово в операторе for. for I:=11 downto 1 do read(A[i]);
else (элс) - иначе
Служебное слово в опереторе if. if A>0 then X:=1 else X:=-1;
end (энд) - конец
Конец действия группы операторов.
file (файл) - файл
Описание данных файлового типа. type KOI7 = file of char;
for (фo) - для
Оператор цикла. for J:=N to M do writeln (J);
function (фанкшн)- функция
Заголовок функции. function INTERVAL(A,B:real):real;
go to (гоу ту)- переход на
Оператор перехода к метке. goto 22;
if (иф) - если
Условный оператор. if TIME>23 then write('good-bye') else write('good-day');
in (ин) - в
Операция определения принадлежности элемента некоторому множеству. if (K in [1..7]) or (C in ['&','*']) then A:=1;
label (лейбл) - метка
Описание метки (целое от 0 до 9999) Label 1,2,3,0027,34;
mod (мод) - модуль
Остаток от деления целых чисел. A:=B mod 2;
nil (нил) - нуль
Kонстанта-указатель для пометки концацепи. top:=NIL;
not (нот) - не
Логическое отрицание. if not(A>B) then FL:=1;
of (оф) - из
Служебное слово в описаниях данных: W: array of real; TV: set of 0..6;
or (ор) - или
Логическая функция дизъюнкции. if A<6 or B=1 then FL:=2;
packed (пэкт) - упаковать
Указатель упаковки данных.SM: packed array [1..200] of char;
procedure() - процедура
Заголовок процедуры: procedure Code(C:char,var N:real);
program (програм) - программа
Заголовок программы: program MaxSum;
readln (pид-э-лайн) - ввод
Пpоцедуpа чтения данных с клавиатуpы. readln(A,B,I,J);
record (рикод) - запись
Запись: DATE=record day : 1..31; month : array [1..3] of char; year : 1990..2000; end;
repeat (рипит) - повторять
Оператор цикла с послеусловием. repeat read(Ch); write(Ch) until Ch=chr(32);
set (сет) - множество
Описание данных множественного типа: VOWEL : set of 'A','E','I','U','Y'; NUMBER : set of 0..9;
then (зен) - то
Служебное слово в операторах 'for' и 'if'.
to (ту) - увеличивая до
Служебное слово в операторе 'for'.
type (тайп) - тип
Обозначение типа данных: type COLOR=(red,blue,green); type NAME = array[1..15] of char;
until (антил) - до
Служебное слово в операторе 'repeat'.
var (вар) - переменная
Заголовок описания переменных: var SUMMA : integer; RU,RT : real; REMARK : array [1..20] of char;
while (вайл) - пока
Оператор цикла с предусловием: while A<16 do A:=A+1;
with (вис) - с
Оператор присоединения для переменных типа 'record' - 'запись'. with DATA do DAY:=15;
writeln (pайт-э-лайн) - вывод
Пpоцедуpа вывода данных на зкpан. writeln('Gamma = ',RU:6:2,'N = ',N); writeln('Data = ',24*T-12*M);
Требования к идентификаторам:
• Идентификатор состоит из латинских букв и цифр (заглавные и строчные буквы не различаются).
• Идентификатора должен начинаться обязательно с буквы {"а1", а не "1а"}.
• Идентификатор может состоять из любого количества символов, но распознаются только первые 63 .
• Служебные слова запрещается использовать в качестве идентификаторов.
• При написании идентификатора нельзя использовать пробелы.
6 Структура программы на С. Используемые в языке символы. Идентификаторы, ключевые слова, комментарии.
#include <имя библиотеки>;
#define <имя><значение>;
Main ()
{
…
…
Return 0;
}
11) Операторы ветвления. Оператор ветвления применяется в случаях, когда выполнение или невыполнение некоторого набора команд должно зависеть от выполнения или невыполнения некоторого условия. Ветвление — одна из трёх (наряду с последовательным исполнением команд и циклом) базовых конструкций структурного программирования.
Условный оператор реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие) принимает значение «истина» true. В большинстве языков программирования условный оператор начинается с ключевого слова if.
Pascal
Паскаль унаследовал от Алгола-60 синтаксис, согласно которому в ветвях условного оператора может быть помещена только одна команда. Поэтому для размещения там большего количества команд они группируются в составной оператор с помощью пары ключевых слов begin и end. Ветвь else необязательна. begin и end необходимы, только если операторов несколько (например, из соображений единообразия оформления кода). В примере — оператор выбора в Паскале:
If условие
then
begin
операторы;
end
else
begin
операторы;
end;
C, C++ и их потомки
C и C++ (а вслед за ними и Java, C#, PHP и множество других языков) имеют условный оператор, структурно аналогичный Паскалю. Отличие состоит в том, что условие должно быть записано в круглых скобках, а вместо ключевых слов begin и end используются фигурные скобки {} :
if (<условие>)
{
<операторы>
}
else
{
<операторы>
}
Переключатель
Конструкция переключателя имеет несколько (две или более) ветвей. Переключатель выполняет одну заданную ветвь в зависимости от значения вычисляемого ключевого выражения. Принципиальным отличием этой инструкции от условного оператора является то, что выражение, определяющее выбор исполняемой ветви, возвращает не логическое, а целое значение, либо значение, тип которого может быть приведён к целому. В некоторых языках допускается использовать в переключателе выражения некоторых типов, не приводимых к целому (например, текстовые строки).
Прототипом современной синтаксической конструкции была используемая в старых языках программирования команда перехода по вычисляемой метке. В этой команде указывалось выражение-селектор, возвращающее целое значение, и набор меток. При выполнении команды вычислялось выражение, а его значение использовалось как номер метки (в списке команды), на которую производился переход. Такие конструкции были, например, в языках программирования Фортран («вычисляемый GOTO») и Бейсик. Привлекательной стороной конструкции является её достаточно высокая эффективность: для определения нужной ветви (метки перехода) не требуется последовательно сравнивать результат выражения-селектора со многими занчениями, достаточно записать в память массив команд безусловного перехода с нужными адресами, чтобы при выполнении команды вычислять нужный элемент непосредственно из значения выражения. При этом скорость выполнения команды не зависит от количества меток. В современных языках реализация оператора-переключателя также часто выполняется в виде таблицы перехода, состоящей из команд безусловного перехода на соответствующие фрагменты кода. Вычисляемое выражение преобразовывается в значение сдвига по таблице перехода, определяющее выполняемую команду. В языках, где выражение-селектор может иметь нецелое значение, напрямую вычислить нужную ветвь конструкции переключателя можно далеко не всегда, поэтому в них используются другие методы оптимизации исполнения.
В современных языках программирования высокого уровня команда-переключатель обычно имеет имя switch либо case. Однако, выбор по вычисляемой метке может сохраняться в современных языках программирования низкого уровня, например, инструкция JL языка программирования STL для программируемых логических контроллеров S7-300 и S7-400, выпускаемых Siemens
Например, в языке Си синтаксис команды следующий:
switch (i)
{
case 0:
case 1: // последовательность операторов
break;
case 2: // последовательность операторов
break;
default:
}