Структура программы операторы языка

Содержание

Системные библиотеки могут быть разделены на
следующие две группы:
• стандартные библиотеки;
• нестандартные библиотеки.
Стандартные библиотеки:
stdio.h stdlib.h math.h string.h
Нестандартные библиотеки:
conio.h io.h malloc.h memory.h

5. Библиотеки языка С

Подключение библиотек осуществляется с
помощью директивы препроцессора:
#include
Например:
#include

6. Пример

#include
int main(int argc, char *argv[])
printf(“Привет мир!n”);
return 0;
>

7. Содержание функции main

Тело функции main состоит из операторов, которые
записываются в императивной (процедурной) форме.
Каждый оператор завершается знаком ‘;’ и состоит из
одной или нескольких лексем (англ., token).
Лексемы могут разделяться любым количеством пробелов,
табуляций или переводов строк. Сама лексема должна
писаться слитно. Лексемами могут быть:

Структура программы. Операторы ввода/вывода


• ключевые (зарезервированные) слова языка С,
• идентификаторы языка C;
• константы;
• строковые литералы;
• знаки пунктуации.

8. Ключевые слова языка С

auto
enum
restrict
unsigned
break
extern
return
void
case
float
short
volatile
char
for
signed
while
const
goto
sizeof
_Bool
continue
if
static
_Complex
default
inline
struct
_Imaginary
do
switch
switch
double
long
typedef
else
register
union
__asm
__finally
__try
_forceinline
__cdecl
__forceinline
_asm
_inline
__declspec
__inline
_cdecl
_stdcall
__except
__leave
_declspec
__fastcall
__stdcall
_fastcall

9. Идентификаторы и константы

Идентификатор

это
сочетание букв латинского
алфавита,
цифр
и
знака
подчеркивания
«_»,
начинающееся или с буквы, или со знака подчеркивания.
Длина идентификатора не ограничена. Заглавные и
строчные
буквы
различаются.
Идентификаторы
используются для обозначения имен переменных,
константных переменных, функций, типов.
Константы – это числа, символы или строки, которые
могут использоваться как значения в программе, но не
могут быть модифицированы в ней.

10. Строковые литералы и знаки пунктуации

Строковые литералы
– это последовательности символов
заключенных
в
двойные
кавычки,
которые
могут
рассматриваться как строковые константы.
Знаки пунктуации – символы, используемые для разделения и
группировки лексем, обозначения операций. В языке С используются
следующие знаки пунктуации:
[ ] ( ) < >. ->
++ — < >= == != ^ | ||
? : ; .
= *= /= %= += -= <>=
• операторы присвоений, математических и логических
операций;
• операторы вызова функций;
• операторы управления.

12. Система базовых типов

Тип – это описание диапазона значений, которые
может принимать переменная, указанного типа.
Каждый тип данных характеризуется:
• размером (количество байт занимаемых
значением данного типа в памяти
компьютера)
• диапазоном (множеством) принимаемых
значений.

13. Система базовых типов

Все типы данных можно разделить на следующие
виды:
• простые (скалярные) и сложные (векторные) типы;
• базовые (системные) и пользовательские типы.

14. Система базовых типов

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

15. Символьный тип

char
Размер: 1 байт (8 бит)
Диапазон значений: -128 . 127

16. Целочисленный тип

int
Размер: 4 байта (32 бита)
Диапазон значений:
‑2147483648 . 2147483647

17. Вещественный тип одинарной точности

float
Размер: 4 байта (32 бита)
23 бита – мантисса;
8 бит – порядок;
1 бит – знак.
Диапазон значений: ±3.4Е±38
Точность до 7 знаков после запятой

18. Вещественный тип двойной точности

double
Размер: 8 байт (64 бита)
52 бита – мантисса;
11 бит – порядок;
1 бит – знак.
Диапазон значений: ±1.7Е±308
Точность до 17 знаков после запятой

19. Система базовых типов

В языке С предусмотрены две группы модификаторов
типа:
• модификаторы знака: signed и unsigned;
• модификаторы размера: short и long.

20. Модификатор signed

Модификатор
signed
осуществляет
преобразование целочисленных значений к
знаковым числам. Используется совместно с
типами char и int.
используется по умолчанию

21. Модификатор unsigned

Модификатор
unsigned осуществляет
преобразование целочисленных значений к
незнаковым
числам.
Используется
совместно с типами char и int.
unsigned char
Диапазон: 0 . 255
unsigned int
Диапазон: 0 . 4294967295

22. Модификатор short

Модификатор short уменьшает
размер
целочисленного типа в два раза. Используется только с
типом int.
short int
Размер: два байта
Диапазон: -32768 . 32767
unsigned short int
Размер: два байта
Диапазон: 0 . 65535

23. Модификатор long

Модификатор long увеличивает размер типа данных.
Используется совместно с типами int и double.
long double – тоже, что и double
Но в стандарте IEEE:
80 бит:
1 бит – знак
64 бита – мантисса
15 бит — порядок

24. Модификатор long

long int – то же, что и int
long long int
Размер: 8 байт (64 бита)
Диапазон значений: -2^63 . 2^63-1
unsigned long long int
Размер: 8 байт (64 бита)
Диапазон значений: 0 . 2^64-1

25. Комплексные числа

Комплексные числа введены в стандарте C99.
float _Complex
double _Complex
long double _Complex
Библиотека complex.h
float complex
double complex
long double complex

26. Система базовых типов

Минимальные и максимальные значения всех
базовых типов данных языка С описаны в
библиотеках:
• limits.h – содержит диапазоны целочисленных
значений,
• float.h – содержит диапазоны вещественных
значений.

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

Стандарт С89:
Логический тип – int
0 – ложь (false);
не 0 – истина (true).
Стандарт С99:
Логический тип — _Bool
Ключевые слова: bool true false
Библиотека stdbool.h

Читайте также:
Как закачать карты в программу Яндекс карты

28. Операторы объявлений

Переменная – именованная область памяти
вычислительной машины, предназначенная для хранения
значений определенного типа, с произвольным
методом доступа: чтение и запись.
Имя переменой – разрешенный идентификатор языка
С не использовавшийся ранее для обозначения
других переменных, типов, элементов перечислений или
имен функций.

29. Операторы объявлений

Оператор объявления переменных имеет
следующий синтаксис:
>* ‘;’
Примеры:
int a, b, c;
double x, y;
char ch;

30. Операторы объявлений

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

31. Операторы объявлений

Оператор объявления переменных с инициализацией имеет
следующий синтаксис:
[‘=‘] [‘=‘ ]>* ‘;’
Примеры:
int a=26, b=032, c=0x1A;
double x=2.5e2, y=0x1.ffe-3;
char ch=’Z’;

32. Константы

В языке С присутствует три вида констант:
• целочисленные,
• вещественные,
• символьные.

33. Целочисленные константы

• Десятичная константа указывается десятичным
числом в обычной форме.
• Восьмеричная константа указывается числом,
начинающимся с цифры ноль и содержащим
цифры 0. 7.
• Шестнадцатеричная константа указывается целым
числом с префиксом 0x или 0X, содержащим
цифры 0. 9 и буквы латинского алфавита
a. f, A. F.

34. Суффиксы целочисленных констант

Суффикс
Десятичные константы
Восьмеричные и шестнадцатеричные
константы
нет
int
long int
long long int
int
unsigned int
long int
unsigned long int
long long int
unsigned long long int
U или u
unsigned int
unsigned long int
unsigned long long int
unsigned int
unsigned long int
unsigned long long int
L или l
long int
long long int
long int
unsigned long int
long long int
unsigned long long int
Оба u или U и l или L
unsigned long int
unsigned long long int
unsigned long int
unsigned long long int
LL или ll
long long int
long long int
unsigned long long int
Оба u или U и ll или LL
unsigned long long int
unsigned long long int

35. Вещественные константы

Вещественные
константы
записываются
в
десятичной
или
шестнадцатеричной
системе
исчисления. Позиция запятой указывается точкой,
экспонента указывается после латинской буквы e
(или E).
Суффиксы вещественных констант:
• f или F – тип float,
• l или L – тип long double.

36. Символьные константы

Символьные константы записываются в одинарных кавычках. В языке С
присутствуют специальные символы:
‘’’ – одинарная кавычка,
‘”’ – двойная кавычка,
‘\’ – обратный слеш,
‘?’ – знак вопроса,
‘a’ – звуковой сигнал,
‘b’ – забой символа,
‘f’ – прокрутка страницы,
‘n’ – перевод строки,
‘r’ – возврат каретки,
‘t’ – горизонтальная табуляция,
‘v’ – вертикальная табуляция.

37. Константные переменные

В языке С можно также создавать переменные, имеющие
константное значение (их значение нельзя
изменить).
Объявление таких «переменных» имеет следующий
синтаксис:
‘const’ ’=‘[‘,’ ’=‘ ]*;
Примеры
const unsigned int x=80, y=25;
const double pi=3.1415;

38. Оператор создания типов

К операторам объявлений следует также отнести и
оператор создания пользовательских типов данных.
Синтаксис оператора имеет следующий вид:
‘typedef’ ’;’
Пример:
typedef unsigned int word;

39. Операторы объявлений

Согласно стандарту С99 операторы объявления
переменных могут располагаться в любом месте
программы, если это не противоречит синтаксису
языка С.
Оператор объявления пользовательских типов
также может располагаться в любом месте
программы, но рекомендуется располагать его
сразу после подключения библиотек (до описания
функции main).

40. Операторы объявлений

В языке С присутствует оператор определения
размера значения определенного типа sizeof,
который возвращает значение целого типа равное
числу байт занимаемых значением в памяти.
Пример:
sizeof(int)
//4
sizeof(char)
//1
sizeof(double) //8

Источник: ppt-online.org

Структура программы операторы языка

webkonspect.com — сайт, с элементами социальной сети, создан в помощь студентам в их непростой учебной жизни.

Здесь вы сможете создать свой конспект который поможет вам в учёбе.

Чем может быть полезен webkonspect.com:

  • простота создания и редактирования конспекта (200 вопросов в 3 клика).
  • просмотр конспекта без выхода в интернет.
  • удобный текстовый редактор позволит Вам форматировать текст, рисовать таблицы, вставлять математические формулы и фотографии.
  • конструирование одного конспекта совместно с другом, одногрупником.
  • webkonspect.com — надёжное место для хранения небольших файлов.

Обзор сайта:

Источник: webkonspect.com

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

Информатика, информационные технологии

Цель работы – изучить структуру программы на языке C++, операторы присваивания, ввода и вывода данных, используемые при составлении программ линейной структуры.

Порядок выполнения работы:

— ознакомиться с описанием лабораторной работы;

— получить задание у преподавателя, согласно своему варианту;

— написать программу, отладить и решить ее на ЭВМ;

2.1 Структура программы на языке C++

Выполнение всех программ, написанных на языке C++, начинается с функции, именуемой main. При запуске программы прежде всего выполняется первое выражение функции main.

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

Структура программы выглядит следующим образом:

У функции есть имя (main), после которого в круглых скобках перечисляются аргументы или параметры функции (в данном случае у функции main аргументов нет). У функции может быть результат или возвращаемое значение. Если функция не возвращает никакого значения, то это обозначается ключевым словом void. В фигурных скобках записывается тело функции – действия, которые она выполняет. Оператор return 0; означает, что функция возвращает результат – целое число 0.

Вслед за заголовком функции main в фигурных скобках размещается тело функции, которое представляет последовательность определений, описаний и исполняемых операторов. Как правило, определения и описания размещаются до исполняемых операторов. Каждое определение, описание и оператор завершается «;».

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

Читайте также:
Как пользоваться программой абрис

Например, можно присвоить переменной Имя значение «Вася», а потом другим выражением присвоить этой же переменной значение «Степан». Но само по себе значение переменной никогда не меняется – в любом случае вы должны написать какое-нибудь выражение, меняющее одно значение на другое.

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

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

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

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

Таблица 1 – Символы, используемые для образования ключевых слов и идентификаторов

Прописные буквы латинского алфавита A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Строчные буквы латинского алфавита a b c d e f g h i j k l m n o p q r s t u v w x y z
Символ подчеркивания _

2. Группа прописных и строчных букв русского алфавита и арабские цифры.

Таблица 2 – Символы прописных и строчных букв русского алфавита и арабские цифры

Прописные буквы русского алфавита А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Ь Э Ю Я
Строчные буквы русского алфавита а б в г д е ж з и к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я
Арабские цифры 0 1 2 3 4 5 6 7 8 9

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

Таблица 3 – Знаки нумерации и специальные символы

Символ Наименование Символ Наименование
, запятая ) круглая скобка правая
. точка ( круглая скобка левая
; точка с запятой > фигурная скобка правая
: двоеточие фигурная скобка левая
? вопросительный знак меньше
апостроф больше
! восклицательный знак [ квадратная скобка
| вертикальная черта ] квадратная скобка
/ дробная черта # номер
обратная черта % процент
~ тильда амперсанд
* звездочка ^ логическое не
+ плюс = равно
минус кавычки

4. Управляющие и разделительные символы. К той группе символов относятся: пробел, символы табуляции, перевода строки, возврата каретки, новая страница и новая строка. Эти символы отделяют друг от друга объекты, определяемые пользователем, к которым относятся константы и идентификаторы. Последовательность разделительных символов рассматривается компилятором как один символ (последовательность пробелов).

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

Таблица 4 – Управляющие последовательности

Управляющая последовательность Наименование Шестнадцатеричная замена
a Звонок
b Возврат на шаг
t Горизонтальная табуляция
n Переход на новую строку 00A
v Вертикальная табуляция 00B
r Возврат каретки 00C
f Перевод формата 00D
Кавычки
Апостроф
Ноль-символ
\ Обратная дробная черта 05C
ddd Символ набора кодов ПЭВМ в восьмеричном представлении
xddd Символ набора кодов ПЭВМ в шестнадцатеричном представлении

Последовательности вида ddd и xddd (здесь d обозначает цифру) позволяет представить символ из набора кодов ПЭВМ как последовательность восьмеричных или шестнадцатеричных цифр соответственно. Например, символ возврата каретки может быть представлен различными способами:

r — общая управляющая последовательность,

15 — восьмеричная управляющая последовательность,

x00D — шестнадцатеричная управляющая последовательность.

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

ABCDEx009FGH данная строковая команда будет напечатана с использованием определенных функций языка C++, как два слова ABCDE FGH, разделенные символом табуляции (по умолчанию 8-ю пробелами), в этом случае если указать неполную управляющую строку ABCDEx09FGH, то на печати появится ABCDE=|=GH, так как компилятор воспримет последовательность x09F как символ =+=.

Отметим тот факт, что, если обратная дробная черта предшествует символу не являющемуся управляющей последовательностью (т.е. не включенному в таблицу 4) и не являющемуся цифрой, то эта черта игнорируется, а сам символ представляется как литеральный. Например, символ h представляется символом h в строковой или символьной константе.

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

Переменные и константы

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

Идентификаторы в языке C++ – это последовательность знаков, начинающаяся с буквы или знака подчеркивания. В идентификаторах можно использовать заглавные и строчные латинские буквы, цифры и знак подчеркивания. Длина идентификаторов произвольная. Примеры правильных идентификаторов:

abc A12 NameOfPerson BITES_PER_WORD

abc и Abc – два разных идентификатора, т.е. заглавные и строчные буквы различаются. Примеры неправильных идентификаторов:

Ряд слов в языке C++ имеет особое значение и не может использоваться в качестве идентификаторов. Такие зарезервированные слова называются ключевыми.

Читайте также:
Какие программы нужны для сенсорного телефона

Список ключевых слов:

asm auto bad_cast

bad_typeid bool break

case catch char

class const const_cast

continue default delete

do double dynamic_cast

else enum extern

float for friend

int long mutable

namespace new operator

private protected public

register reinterpret_cast return

short signed sizeof

static static_cast struct

switch template then

type_info typedef typeid

union unsigned using

virtual void volatile

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

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

В языке C++ прежде чем использовать переменную, ее необходимо объявить. Объявить переменную с именем x можно так: int x;

В объявлении первым стоит название типа переменной int (целое число), а затем идентификатор x – имя переменной. У переменной x есть тип – в данном случае целое число. Тип переменной определяет, какие возможные значения эта переменная может принимать и какие операции можно выполнять над данной переменной. Тип переменной изменить нельзя, т.е. пока переменная x существует, она всегда будет целого типа.

Язык C++ строго типизированный язык. Любая величина, используемая в программе, принадлежит к какому-либо типу. При любом использовании переменных в программе проверяется, применимо ли выражение или операция к типу переменной. Довольно часто смысл выражения зависит от типа участвующих в нем переменных.

Например, если записать x+y, где x – переменная, то переменная y должна быть одного из числовых типов.

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

Основные типы данных

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

char short int long float double

Первые четыре типа используются для представления целых, последние два – для представления чисел с плавающей точкой. Переменная типа char имеет размер, естественный для хранения символа на данной машине (обычно, байт), а переменная типа int имеет размер, соответствующий целой арифметике на данной машине (обычно, слово). Диапазон целых чисел, которые могут быть представлены типом, зависит от его размера. В C++ размеры измеряются в единицах размера данных типа char, поэтому char по определению имеет размер единица.

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

Тип Размер памяти в байтах Диапазон значений

char 1 от -128 до 127

int 2 от -32768 до 32767

short 2 от -32768 до 32767

long 4 от -2 147 483 648 до 2 147 483 647

unsigned char 1 oт 0 до 255

unsigned int 2 от 0 до 65535

unsigned short 2 от 0 до 65535

unsigned long 4 от 0 до 4 294 967 295

Для переменных, представляющих число с плавающей точкой используются следующие модификаторы-типа: float, double, long double.

Величина с модификатором-типа float занимает 4 байта. Из них 1 байт отводится для знака, 8 бит для избыточной экспоненты и 23 бита для мантиссы. Отметим, что старший бит мантиссы всегда равен 1, поэтому он не заполняется, в связи с этим диапазон значений переменной с плавающей точкой приблизительно равен от 3.14E-38 до 3.14E+38.

Величина типа double занимает 8 бит в памяти. Ее формат аналогичен формату float. Биты памяти распределяются следующим образом: 1 бит для знака, 11 бит для экспоненты и 52 бита для мантиссы. С учетом опущенного старшего бита мантиссы диапазон значений равен от 1.7E-308 до 1.7E+308.

В программе можно явно записать величину – число, символ и т.п. Например, выражение x + 4 – сложить текущее значение переменной x и число 4. В зависимости от того, при каких условиях будет выполняться программа, значение переменной x может быть различным. Однако целое число четыре всегда останется прежним. Таким образом, явная запись значения в программе – это константа и в данном случае она задаётся своим изображением.

Гораздо чаще используются символические константы. Для определения символической константы используется ключевое слово const. Например, если записать

const int BITS_IN_WORD = 32;

то затем имя BITS_IN_WORD можно будет использовать вместо целого числа 32.

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

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

— простые (не содержат в себе других операторов);

— составные (включают в себя один или несколько дополнительных операторов).

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

int x; // объявить целую переменную x

int y; // объявить целую переменную y

x = 0; // присвоить x значение 0

y = x + 1; // присвоить y значение x + 1, т.е. 1

x = 1; // присвоить x значение 1

y = x + 1; // присвоить y значение x + 1, теперь уже 2

Статьи к прочтению:

  • Описание алгоритма решения задачи
  • Описание алгоритмов на естественном языке.

Программирование.Язык Си.Условные операторы. Операторы сравнения. Урок 3.0

Похожие статьи:

  • Паскаль как язык структурно-ориентированного программирования ВВЕДЕНИЕ Язык Паскаль, начиная с момента своего создания Н.Виртом в 1971 г., играет особую роль и в практическом программировании, и в его изучении. С…
  • Язык программирования паскаль Язык Паскаль является языком программирования высокого уровня. Начиная с момента своего создания Н.Виртом в 1970 г., играет особую роль и в практическом…

Источник: csaa.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru