Нетипизированные константы

Нетипизированные константы

#define <имя константы> <значение> /* директива описания константы, применялась в C */

#define PI 3.14159

Директива препроцессора – указание компилятору. Начинается с символа # и не заканчивается точкой с запятой (;).

Типизированные константы.
const <имя константы> : <тип> = <значение>; [<имя константы> : <тип константы> = <значение>;]

const n: integer = -10;

Нетипизированные константы

const <имя переменной> = <значение>; [<имя переменной> = <значение>;]

const n = -10;

Типизированные константы
[Private|Public] Const <имя константы> As <тип> = <значение>

Const PI As Single = 3.14159

 

Нетипизированные константы

[Private|Public] Const <имя константы> = <значение>

Const PI=3.14159


 

Комментарии являются важной частью любой программы. Они помогают разобраться в действиях программы как разработчику, так и любому другому человеку, читающему код. Компилятор игнорирует все, что помечено в программе как комментарий, поэтому комментарии не включаются в содержимое исполняемого файла и никак не влияют на ход исполнения программы.
// однострочный комментарий   /* устаревший вид комментариев (многострочный) */ { многострочный комментарий (характерный для классического Pascal) }   (* многостр. комментарий (Object Pascal он же Delphi) *)   // одностр. комментарий (Object Pascal) ‘ однострочный комментарий
Операции – стандартные действия, разрешенные для переменных того или иного базового типа данных. Сначала вычисляются значения операций с более высоким приоритетом, затем – с менее высоким. Несколько подряд идущих операций одного приоритета вычисляются в последовательности «слева направо».
Приоритет операций C++
Тип операторов Операторы Приоритет
Контекст :: Высший
Разное [ ], ( ), . (точка), ->, постфиксы ++ и --
Унарные Префиксы ++ и --, &, *, +, -, !
Арифметические *, /, %, +, -  
Поразрядный сдвиг <<, >>  
Относительные (сравнение) <, >, <=, >=, ==, !=  
Поразрядные логические &, ^, |  
Логические &&, ||  
Условные ?: Низший
Присваивания =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=
Последовательность , (запятая)

 

Приоритет операций Pascal
Тип операторов Операторы Приоритет
Разное ( ) Высший
Унарные +, -, not, @, ^, #
Эквиваленты умножения *, /, div, mod, and, shl, shr, as
Эквиваленты сложения +, -, or, xor Низший
Относительные (сравнение) =, <>, >, <, <=, >=, in, is

 

Приоритет операций Basic
Тип операторов Операторы Приоритет
Разное ( ) Высший
Унарные +, -, ^
Эквиваленты умножения *, /, \, mod
Эквиваленты сложения +, - Низший
Относительные (сравнение) =, <>, >, <, <=, >=
Логические (в порядке записи) Not, And, Or, Xor

 

Инструкцияилиоператор(англ. statement) – наименьшая автономная часть языка программирования; команда. Программа обычно представляет собой последовательность инструкций.
Символ конца оператора – «;» Символ конца оператора – «;» Символ конца оператора – конец строки
Операторные скобки – скобки или команды, определяющие в языке программирования блок команд, воспринимаемый как единое целое, как одна команда.
Операторные скобки в C++
{ // начало блока <оператор>; <оператор>; } // конец блока
Операторные скобки в Pascal
begin // начало блока <оператор>; <оператор> end // конец блока
Операторные скобки в Basic В языках семейства Basic операторные скобки не предусмотрены. Использование блоков в данных языках обеспечивается за счет специальных разновидностей конструкций.
Оператор присваивания – оператор применяется для присваивания значения переменной или выражения другой переменной. В блок-схемах обычно изображается следующим образом – .
<имя переменной> = <выражение>|<значение>;

var1 = 20;

var2 = var1+10;

<имя переменной> := <выражение>|<значение>;

var1 := 20;

var2 := var1+10;

<имя переменной> = <выражение>|<значение>

var1 = 20

var2 = var1+10

Преобразования типов В выражениях и в операторах присваивания могут фигурировать переменные и константы разных типов. В этом случае осуществляется приведение типов, что обозначает преобразование одного типа в другой. Приведение типов может быть неявным и явным. Неявное приведение совместимых типов автоматически осуществляет компилятор. При этом всегда более младший тип, занимающий меньший объем памяти, приводится к типу, занимающему больший объем. Явное приведение типов – использование специальных функций, преобразующих значения одного типа в другой тип.
Иерархия типов данных
Тип данных Старшинство
long double Высший
double  
float  
long  
int  
short  
char Низший

 

Иерархия типов данных
Тип данных Старшинство
extended Высший
double  
real  
longint  
integer  
smallint  
shortint Низший

 

Иерархия типов данных
Тип данных Старшинство
double Высший
single  
long  
integer  
byte Низший

 


 

Оператор ветвления – оператор, позволяющий из нескольких возможных вариантов выполнения программы (ветвей) выбрать только один. В блок-схемах обычно изображается следующим образом – .
Условный оператор if
if (<условие>) <оператор>; [else <оператор>;]   if (<условие>) { <оператор>; <оператор>; } [else { <оператор>; <оператор>; }]   Конструкцию else…if рассмотреть самостоятельно

if (a>10) a=1;

if (a<10) a=11; else a=1;

if (a==10) {a=1; b=2;}

if (a<>10) {a=2; b=1;}else{a=1; b=2;}

Условный оператор if
if <условие> then <оператор> [else <оператор>];   if <условие> then begin <оператор>; <оператор> end [else begin <оператор>; <оператор> end];  

if a>10 then a:=1;

if a<10 then a:=11 else a:=1;

if a=10 thenbegina:=1; b:=2 end;

if a<>10 thenbegina:=2; b:=1 end else begina:=1; b:=2 end;

Условный оператор if
If <условие> Then <оператор> [Else <оператор>]   If <условие> Then <оператор> <оператор> [Else <оператор> <оператор>] End If     Конструкцию else…if рассмотреть самостоятельно

If a>10 Then a=1

If a<10 Then a=11 Else a=1

If a=10 Then

a=1

b=2

End If

If a<>10 Then

a=2

b=1

Else

a=1

b=2

End If


 

Условный оператор switch
switch (<порядковое значение>) { case <значение_1>: <операторы>; [break;] ... case <значение_n>: <операторы>; [break;] [default: <оператор>;] }

 

switch (2*2)

{

case 1: n=1;

case 2: n=2;

case 3: n=3;

default: n=4;

}

 

 

В частях case значение всегда должно быть константой, вычисленной на этапе компиляции. Операции сравнения в частях case запрещены. Break позволяет завершить ветвление преждевременно.

Условный оператор case
case <порядковое значение> of <значение_1>: <оператор>; ... <значение_n>: <оператор>; [else <операторы>;] end;    

 

Case (2*2) of

1: n:=1;

2: n:=2;

3: n:=3;

else: n:=4;

end;

 

В частях Case могут содержаться списки значений.

Условный оператор select
Select Case <порядковое значение> Case <значение_1>: <операторы> ... Case <значение_n>: <операторы> [Case Else <операторы>] End Select  

 

Select Case 2*2

Case 1:

n=1

Case 2:

n=2

Case 3:

n=3

Case Else:

n=4

End Select

 

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


 

Цикл – некоторая последовательность действий, которая может повторяться неоднократно. Последовательность действий, предназначенная для многократного исполнения, называется телом цикла. Однократное выполнение тела цикла называется итерацией. Выражение определяющее, будет в очередной раз выполняться итерация, или цикл завершится, называется условием выхода или условием окончания цикла (либо условием продолжения в зависимости от того, как интерпретируется его истинность – как признак необходимости завершения или продолжения цикла). Переменная, хранящая текущий номер итерации, называется счётчиком итераций цикла или просто счётчиком цикла. Цикл не обязательно содержит счётчик, счётчик не обязан быть один – условие выхода из цикла может зависеть от нескольких изменяемых в цикле переменных, а может определяться внешними условиями (например, наступлением определённого времени), в последнем случае счётчик может вообще не понадобиться. Параметр цикла – управляет работой цикла. В качестве параметра цикла может выступать переменная или выражение, отвечающее следующим условиям: 1 параметр цикла задан до входа в цикл, 2 параметр цикла должен изменяться в теле цикла, 3 параметр цикла должен участвовать в условии окончания цикла. Параметр цикла всегда только ОДИН. Основные виды циклов: 1. Цикл со счётчиком (с фиксированным числом повторений) – организует выполнение набора команд фиксированное число раз. В блок-схемах обычно изображается следующим образом – . 2. Цикл с предусловием – цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В блок-схемах обычно изображается комбинацией условия и действий. 3. Цикл с постусловием – цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. В блок-схемах обычно изображается комбинацией условия и действий.
Цикл со счётчиком C++ (свободная форма)
for (<инициализирующее выражение>[,<инициализирующее выражение>];<условие выполнения>;<инкрементирующее выражение>[,<инкрементирующее выражение>]) <оператор>;   for (<инициализирующее выражение>[,<инициализирующее выражение>];<условие выполнения>;<инкрементирующее выражение>[,<инкрементирующее выражение>]) { <оператор>; <оператор>; }

for (j=0; j<15; j++) n++;

for (j=0; j<15; j++) {n++; k--;}

for (j=0, i=1; j<15; j++, i--) n++;

Цикл со счётчиком Pascal (строгого вида)
for <счётчик>:=<нач. значение> to|downto <кон. значение> do <оператор>;     Exit позволяет завершить цикл досрочно.   Счетчик цикла увеличивается с каждой итерацией на 1 в случае использования to, в случае downto – уменьшается на единицу.

for j:=0 to 15 do n:=n+1;

for j:=15 downto 0 do n:=n+1;

for j:=0 to 15 do begin n:=n+1 end;

Цикл со счётчиком Basic
For <счётчик>=<нач. значение> To <кон. значение> [Step <шаг>] <операторы> [Exit For] <операторы> Next [<счётчик>]     Счетчик цикла с каждой итерацией изменяется на указанный шаг (по умолчанию на +1). Exit For позволяет завершить цикл не дожидаясь выполнения условия.

For j=0 To 15

n=n+1

Nextj


 

Цикл с предусловием C++
while (<условие выполнения>) <оператор>;   while (<условие выполнения>) { <оператор>; <оператор>; } Работает на истине

while (j<15) j++;

Цикл с предусловием Pascal
while <условие выполнения> do <оператор>;     Exit позволяет завершить цикл досрочно. Работает на истине

whilei<=100 do
begin s:=s+i; i:=i+1 end;

Цикл с предусловием Basic
Do While <условие выполнения> <операторы> [Exit Do] <операторы> Loop   Exit Do позволяет завершить цикл не дожидаясь выполнения условия. Работает на истине

Do While i<10

s=s+i

i=i+1

Loop

Цикл с постусловием C++
do <оператор>; while (<условие выполнения>);   do { <оператор>; <оператор>; } while (<условие выполнения>);   Питается ото лжи

do {s=s+i; i--;} while (i>10)

Цикл с постусловием Pascal
repeat <операторы>; until <условие выполнения>;     Exit позволяет завершить цикл досрочно. В данном цикле не требуется использовать операторные скобки (ключевые слова являются скобками). Питается ото лжи

repeats:=s+i; i:=i-1 untili>10;

Цикл с постусловием Basic
Do <операторы> [Exit Do] <операторы> Loop Until<условие выполнения>     Exit Do позволяет завершить цикл не дожидаясь выполнения условия.     Питается ото лжи

Do

s=s+i

i=i-1

Loop Untili>10

Существует возможность организовать цикл внутри тела другого цикла. Такой цикл будет называться вложенным циклом. Вложенный цикл по отношению к циклу в тело которого он вложен будет именоваться внутренним циклом, и наоборот цикл в теле которого существует вложенный цикл будет именоваться внешнимпо отношению к вложенному. Внутри вложенного цикла в свою очередь может быть вложен еще один цикл, образуя следующий уровень вложенности и так далее. Количество уровней вложенности как правило не ограничивается. Полное число исполнений тела внутреннего цикла не превышает произведения числа итераций внутреннего и всех внешних циклов. Например взяв три вложенных друг в друга цикла, каждый по 10 итераций, получим 10 исполнений тела для внешнего цикла, 100 для цикла второго уровня и 1000 в самом внутреннем цикле. Правило «цикла в цикле»: 1 любой внутренний цикл должен заканчиваться раньше внешнего, 2 параметр внешнего цикла не должен изменяться во внутренних циклах, но любой параметр внутреннего цикла может быть использован как угодно во внешних циклах.

 

Операторы перехода C++ break;/* оператором выполняемым после break, будет первый оператор, находящийся вне данного цикла (применим и к switch) */ continue;/* данный оператор завершает текущую итерацию цикла и производит переход к следующей */ goto<метка>;/* оператор безусловного перехода */ Операторы перехода Pascal break;{ оператором выполняемым после break, будет первый оператор, находящийся вне данного цикла } continue;{ данный оператор завершает текущую итерацию цикла и производит переход к следующей } goto<метка>;{ оператор безусловного перехода } Операторы перехода Basic Exit For/Do‘ оператором выполняемым ‘после Exit For/Do, будет ‘ первый оператор, ‘ находящийся вне данного ‘ цикла     GoTo<метка> ‘ оператор безусловного ‘ перехода
Операторы ввода/вывода – команды служащие для передачи в программу исходных данных и получения из нее некоторого результата. В блок-схемах обычно изображается следующим образом – . Консоль – особое понятие, обозначающее в программировании клавиатуру при вводе и монитор при выводе.
Операторы ввода в C++
Операция извлечения>> cin – стандартный поток ввода   #include <iostream> using namespace std;   cin >> <имя переменной> [>> <имя переменной>];   Операция извлечения каскадируема, т.е. возможно ее неоднократное последовательное использование.  

#include <iostream>

using namespace std;

void main()

{

int ftemp;

cin>> ftemp

}

Операторы ввода в Pascal
Read(<имя переменной> [,<список переменных>]); ReadLn(<имя переменной> [,<список переменных>]);   Read считывает все предложенные ей данные, оставляя курсор в конце последней строки ввода, а ReadLn - сразу после окончания ввода переводит курсор на начало следующей строки. В остальном же их действия полностью совпадают. Вводимые значения необходимо разделять пробелами, а завершать ввод - нажатием клавиши Enter. Ввод данных заканчивается в тот момент, когда последняя переменная из списка ввода получила свое значение.

Read(i);

ReadLn(i,j);

Операторы ввода в Basic
<имя переменной> = InputBox (<сообщение>[, <заголовок>, <значение по умолчанию>..])   Выводит окно с запросом на ввод значения. Введенное значение возвращает в указанную переменную.    

I=InputBox(“введи число”, “ввод”, “10”)


 

Операторы вывода в C++
Операция вставки<< cout – стандартный поток вывода   #include <iostream> using namespace std;   cout << <имя переменной>|<значение> [<< <имя переменной>|<значение>] [<< endl];   Операция вставки каскадируема.   endl – манипулятор, указывающий на завершение строки (аналог ‘\n’).

#include <iostream>

using namespace std;

void main()

{

cout << “Хороший пример.” << endl;

}

Операторы вывода в Pascal
Write(<имя переменной>|<значение> [,<список переменных>|<значение>]); WriteLn(<имя переменной>|<значение> [,<список переменных>|<значение>]);   Write напечатав на экране все, о чем ее просили, оставит курсор в конце выведенной строки, а WriteLn переведет его в начало следующей строчки.    

Write(‘a=’); ReadLn(a);

WriteLn(‘Введено число ’, a);

Операторы вывода в Basic
MsgBox (<сообщение>[, ..])   Выводит окно с сообщением.  

MsgBox(“Введено число ” & a)


 

Форматированный вывод в C++ Способы форматирования вывода: 1. Использование управляющих последовательностей (УП)
УП Символ
\a Сигнал
\b Пробел
\f Перевод страницы
\n Перевод в начало след. строки
\r Возврат каретки
\t Табуляция
\\ Обратная косая черта
\’ Одинарные кавычки
\” Двойные кавычки
\xdd 16-ричный код символа

cout << A << ‘\t’ << B;

 

2. Использование манипуляторов

#include <iomanip>

Манипулятор Значение
endl Перевод в начало след. строки
setw(n) Печатает следующее значение из потока в поле фиксированной длины n

cout << setw(9) << “Мама” << endl;

 

3. Использование функций printf, sprintf

Форматированный вывод в Pascal Write(‘A=’,<форматированное выражение>);  
<числовое выражение> : <кол-во позиций на число> : <кол-во позиций после запятой>

 

Write(‘A=’,A:9:5);

Форматированный вывод в Basic MsgBox(Format(<значение>|<выражение>[, <шаблон форматирования>])   MyStr = Format(23) ' Возвратит "23".   MyStr = Format(5459.4, "##,##0.00") ' Возвратит "5,459.40".   MyStr = Format(334.9, "###0.00") ' Возвратит "334.90".   MyStr = Format(5, "0.00%") ' Возвратит "500.00%".   MyStr = Format("HELLO", "<") ' Возвратит "hello".   MyStr = Format("This is it", ">") ' Возвратит "THIS IS IT".     Функция Format возвращает исходное значение в виде отформатированной строки. Если шаблон форматирования не указан, то возвращается строковый аналог исходного значения.

 

Структура программы C++
[#include <директива>] /* директивы препроцессора */ [using namespace <имя пространства имен>] /* прочие директивы, в данном случае – директива определения пространства имен */ <тип возвращаемого значения> main() { <операторы>; [return [<возвращаемое значение>];] }    

 

 

#include <iostream>

using namespace std;

intmain()

{

int s=0,i=1;

while (i<=100)

{

s+=i;

i++;

}

cout << s;

return s;

}

Структура программы Pascal
Program <имя программы>; [Uses <имена подключаемых модулей>;] [Label <список меток>;] [Const <имя константы> = <значение константы>;] [Type <имя типа> = <определение типа>;] [Var <имя переменной> : <тип переменной>;] [Procedure <имя процедуры> <описание процедуры>;] [Function <имя функции> <описание функции>;] begin {начало основного тела программы} <операторы> end. {конец основного тела программы}

Сразу же необходимо сделать важную оговорку: поздние версии компиляторов языка Pascal уже не требуют указывать название программы, то есть строку

program <имя программы>;

вообще говоря, можно опустить.

 

Uses, Label, Const, Type, Var, Procedure, Function – образуют одноименные блоки, а потому приведенные ключевые слова указываются только в начале блока, завершается же блок знаком “;”.

 

Program XXX;

Var s,i : integer;

Begin

s:=0;

i:=1;

while i<=100 do

begin

s:=s+i;

i:=i+1

end;

writeln(‘s=’;s:5)

End.

Структура программы Basic
Sub <имя программы> <операторы> [Exit Sub] <операторы> End Sub    

Exit Sub позволяет завершить программу не дожидаясь выполнения всех ее операторов.

 

 

Sub XXX

Dim s As integer

Dim i As integer

s=0

i=1

Do While i<=100

s=s+i

i=i+1

Loop

MsgBox(“s=” & s)

End Sub


 

Контроль вводимых данных в C++ В библиотеке <cstdlib> существует несколько функций для приведения строки в числовой вид: atoll, atoi, atof. Синтаксис функций: yourDouble=atof(’23dfg’); yourInt=atoi(‘fd234’); yourLong=atol(‘fdgb33d’); Класс <sstream> позволяет преобразовывать строки через поток stringstream. Синтаксис функций: #include <iostream> #include <sstream> #include <string> using namespace std; int main(){ string s=“100”; int a; stringstream conv; conv << s; conv >> a; conv.clear(); } Контроль вводимых данных в Pascal Процедура Val позволяет преобразовать строку в число и уведомить о встретившихся ошибках. Синтаксис процедуры: Val(<строка>,<числовая переменная>,<целочисленная переменная для кода ошибки>); Процедура пытается преобразовать переданную ей строку в число, полученное число помещается в переданную числовую переменную. В случае возникновения ошибки в переменную кода ошибки будет записан номер ошибочного символа в строке. Допустимые символы: 0-9, +, -, ., E Val(‘23 sdf’,A,cod) {A=0, Cod=4} Контроль вводимых данных в Basic Функция Val позволяет преобразовать строку в число. Синтаксис функции: <числовая переменная> = Val(<строка>) Процедура пытается преобразовать переданную ей строку в число. Если в строке содержатся недопустимые символы, то они игнорируются. Допустимые символы: 0-9, +, -, ., E   A=Val(“23 sdf sdf”) ‘ результат 23
Подпрограмма– самостоятельная программа, которая может быть вызвана другими программами. В блок-схемах обычно изображается следующим образом – . Подпрограммы делятся на два вида: 1. подпрограммы-функции – подпрограмма, которая обязательно возвращает значение через своё имя; 2. подпрограммы-процедуры – подпрограмма, которая может не возвращать значений. Существуют два варианта обмена данными с подпрограммами: 1. используя локальные и глобальные переменные; 2. используя формальные и фактические параметры. Область видимости определяет, из каких частей программы возможен доступ к переменным. Область видимости локальных переменных - текущий программный блок, а глобальных переменных – все блоки, входящие в данный блок. Аргумент/параметр подпрограммы – это единица данных, передаваемая в подпрограмму. Фактический параметр – переменная/выражение, значение которого передаётся в подпрограмму и соответствуют типу формального параметра. Формальный параметр – переменная, принимающая значение фактического параметра, переданного в подпрограмму. Таким образом формальный параметр получает значение фактического. Существует два способа передачи параметров: 1. по значению – когда для формального параметра выделяется место в памяти и значение фактического параметра дублируется в данную область, 2. по ссылке – когда формальный параметр получает не значение фактического параметра, а его адрес в памяти, что позволяет использовать один единственный блок памяти. Рекурсия – обращение подпрограммы самой к себе.

 

Структура подпрограммы-функции в C++
[#include <директива>] /* директивы препроцессора */ [using namespace <имя пространства имен>] /* прочие директивы, в данном случае – директива определения пространства имен */   <тип возвращаемого значения> <имя функции>([<список формальных параметров>]); /* объявление функции (прототип) */   <тип возвращаемого значения> main(){ <операторы>;   <имя функции>([<список фактических параметров>]); /* вызов функции */   [return [<возвращаемое значение>];] }   /* определение функции */ <тип возвращаемого значения> <имя функции>([<список формальных параметров>]) { <операторы>; [return [<возвращаемое значение>];] }

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

Вызов функции – указывает компилятору на необходимость выполнения функции.

Определение функции – собственно сама функция.

Объявление функции не обязательно при условии определения функции ДО ЕЁ ПЕРВОГО ВЫЗОВА!

 

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

 

Вариант с объявлением функции

#include <iostream>

using namespace std;

void starline();

intmain(){

starline();return s; }

void starline() {

for(int j=0; j<45; j++) cout << ‘*’;

cout << endl; }

 

Вариант без объявления функции

#include <iostream>

using namespace std;

void starline() {

for(int j=0; j<45; j++) cout << ‘*’;

cout << endl; }

intmain(){

starline();

return s; }

Структура подпрограммы-функции в Pascal
Function <имя функции>[(<список формальных параметров>)] : <тип возвращаемого значения>; [Uses <имена подключаемых модулей>;] [Label <список меток>;] [Const <имя константы> = <значение константы>;] [Type <имя типа> = <определение типа>;] [Var <имя переменной> : <тип переменной>;] [Procedure <имя процедуры> <описание процедуры>;] [Function <имя функции> <описание функции>;] begin {начало основного тела программы} <операторы> <имя функции>:=<возвращаемое значение> end; {конец основного тела программы}      

Определение функции обязательно ДО ЕЁ ПЕРВОГО ВЫЗОВА!

 

 

Program Pr;

Var a,b : integer;

Function summ(a,b : integer) : integer;

Begin

summ:=a+b;

end;

Begin

Read(a,b);

Write(summ(a,b));

End.

Структура подпрограммы-функции в Basic
Function <имя функции>(<список формальных параметров>) [As <тип возвращаемого значения>] <операторы> [Exit Function] <операторы> <имя функции>=<возвращаемое значение> End Function