Главная страница

ЛК_2_1 Основы. Основные понятия языка программирования C Ветвь языков в с С С#


Скачать 471 Kb.
НазваниеОсновные понятия языка программирования C Ветвь языков в с С С#
Дата10.11.2022
Размер471 Kb.
Формат файлаppt
Имя файлаЛК_2_1 Основы.ppt
ТипДокументы
#781976

Основные понятия языка программирования C++ Ветвь языков: В → С → С++ → С# Знаковые ЯП: Java и Visual Basic.

Язык B


1963 год, основной создатель - К.Томпсон (Технологический институт Массачусетса (Ken Thompson, MIT).
Основная цель разработки языка - реализация операционной системы UNIX.
Существовавший язык PL/I (для мэйнфреймов производства компании IBM) был громоздким и меньше подходил для поставленной задачи, чем новое, оригинальное решение ученых-практиков.

Язык С


изобретен на основе языка B в 1972 году. Авторы - К.Томпсон и Д.Ритчи (исследовательская лаборатория компании AT&T (AT&T Bell Telephone Laboratories).
В варианте C язык B расширился за счет явного использования типов, структур и ряда новых операций.
Дальнейшее развитие языка происходило в той же организации.

Разработчики языка С


Кен Томпсон (Kenneth Thompson)


Деннис Ритчи (Dennis Ritchie)


Известны благодаря двум важнейшим программным разработкам XX века: ОС UNIX и ЯП C.
Оба начали свои карьеры в Bell Labs в 1960-х, навсегда изменив компьютерный мир своими идеями.

Язык С++


В 1984 году, Б. Страуструп
(Bjarne Stroustrup, Bell Labs)
выступил с проектом языка С++
– ООП-расширения языка C, в котором вводится понятие класса как объекта данных.
Название C++ для нового языка предложил Р.Маскитти
(Rics Mascitti, Bell Labs).

Язык С#


В 2000 году корпорация Microsoft выпустила в свет C++ нового поколения под названием C#, основной постулат которого:
"всякая сущность есть объект".
Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода.
C# объединил лучшие черты целого ряда предшественников

Элементы языка СИ


Средства для написания простейших программ

C и C++


C++


C


Объектно-ориентированное программирование


некоторые новые возможности программирования (перегрузка функций, пространства имен, …)


Элементы из других алгоритмических языков (паскаля): замена формального параметра на фактический по ссылке, подход к работе со строками)

Краткая история языка С и его диалекты


1969-1973 годы- Деннис Ритчи создал язык С
1978 г. -  Брайан Керниган и Деннис Ритчи опубликовали первую редакцию книги «Язык программирования Си» (K&R)
1989 – ANSI C (или C89)
1990 – ISO ANSI C (С90)
С99 и С11
Язык Си++ был разработан в начале 1980-х гг. Бьерном Страуструпом из компании AT&T Bell Laboratories. Си++ основан на языке Си.
Два символа "++" в названии – это игра слов (символы "++" в языке Си обозначают операцию инкремента).
Си++ был задуман как язык Си с расширенными возможностями. Большая часть языка Си вошла в Си++ как подмножество, поэтому многие программы на Си можно скомпилировать с помощью компилятора Си++.

Язык С++


1983 г. – Бьёрн (Бьерне) Страуструп создал С++
1985 г. -  вышло первое издание «Языка программирования C++»
Последний стандарт ISO C++ - C++11 (2011 г.)

Литература


Б. Керниган, Д. Ритчи. Язык программирования Си (The C programming language). – M.: Вильямс. 2007. – 304 с.
Б. Страуструп. Язык программирования С++ (The C++ programming language). – M.: Бином-Пресс. 2007. – 1104 с.


ВАЖНО НЕ НА КАКОМ ЯЗЫКЕ ПРОГРАММИРОВАТЬ, А КАКИЕ ЗАДАЧИ РЕШАТЬ!


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


Сведения, необходимые для написания простейшей программы:

Структура простейшей программы на любом алгоритмическом языке


Заголовок ограничитель
описания - неисполняемые инструкции языка
операторы - исполняемые инструкции языка
ограничитель

Структура простейшей СИ-программы

ТИПЫ ДАННЫХ В СИ


БАЗОВЫЕ ТИПЫ: int - целый float - вещественный одинарной точности double - вещественный двойной точности char - символьный


КВАЛИФИКАТОРЫ: short - короткий long - длинный signed - со знаком unsigned - без знака


ТИПЫ ДАННЫХ В СИ


ТИПЫ ДАННЫХ В СИ


ТИПЫ ДАННЫХ В СИ

Описания в Си


тип список_имен_переменных;
тип имя1, имя2,…,имяi,…, имяN;


имя=значение/*инициализация*/


Пример описания:
float a, b=1.5, _b=0.5, b1; int n=10,i=0, j, ik=1;


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

КОНСТАНТЫ В СИ


Обозначенные (именованные) const тип имя_конст=значение конст;


Явные


Целые


Десятичные 9076 -561 +1111


Восьмеричные 03457 -0651 +023


Шестнадцатеричные 0х2АА -0х111 0ХF4 +0X4D -0XF


Вещественные 0.0013 2.7E-9


Символьные ‘a’ ‘+’ ‘\n’ ‘\t’ ‘\0’ ‘\040’ \0x20’


Текстовые “строка” “a”


защита от записи

ВЫРАЖЕНИЯ В СИ


Выражения - это операнды, соединенные знаками операций.


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

ОПЕРАЦИИ СИ

Некоторые операции Си


Две формы инкремента: ++имя_переменной - префиксная (увеличение операнда до использования) имя_переменной++ - постфиксная (увеличение операнда после использования)


Пример. int i=1,c;


Некоторые операции Си


sizeof вычисляет размер в байтах для типа операнда. Две формы: sizeof (выражение) и sizeof (тип). Использование: для построения алгоритмов, обрабатывающих выражения различных типов.


Операция (тип) выражение - приведение выражения к типу, указанному в скобках. Пример: (float)i/(float)j

Тип результата выражения


Смешивание в выражении операндов разного типа допустимо, но правила автоматического приведения типа сложны - лучше использовать операцию (тип).
Если операнды имеют одинаковый тип, то результат имеет тот же тип: 5/22


Некоторые операции Си


Присваивание: имя переменной=выражение; - не только оператор, но и операция допустима цепочка: a=b=c=d=0


Составное присваивание: операция= Пример: S+=a;  S=S+a; P*=a;  P=P*a;


Оператор 1


Оператор 2


Следование


Кодирование на Си: Оператор 1; Оператор 2;


БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ


Условие?


Нет


Да


Оператор 2


Оператор 1


Разветвление (развилка)


Кодирование на Си:
if (условие)
оператор 1;
else
оператор 2;


Ветвь «Нет» пустаяelse и оператор 2 отсутствуют.


БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ


Разветвление (развилка)
Если развилка является структурной, то:
Оператор1 и оператор2 не имеют связей.
Существует четко определенная точка соединения ветвей.


БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ


Разветвление (развилка)


фигурные скобки позволяют объединить несколько операторов в один составной


БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ


Цикл ПОКА (с предусловием)


Тело цикла


Условие?


Да


Нет


Тело цикла - один оператор, простой или составной.
Тело цикла может не выполниться ни разу.


Кодирование на Си:
while (условие)
тело цикла;


БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ


Тело цикла


Условие?


Да


Нет


ЦИКЛ ДО (с постусловием)


Кодирование на Си: Do
тело цикла;
while (условие);


Тело цикла выполняется хотя бы один раз.


БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ


Да


Тело цикла


i<=кон_знач


Нет


i =i+шаг


i = нач_знач


Нет


ПАРАМЕТРИЧЕСКИЙ ЦИКЛ


Кодирование на Си: for(i=нач_знач;i<=кон_знач; i=i+шаг)
тело цикла;


БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ


Если цикл является структурным, то:
Цикл имеет один блок анализа на выход из (продолжение) цикла.
Блок анализа на выход из (продолжение) цикла стоит либо в начале (цикл ПОКА), либо в конце (цикл ДО) цикла.
Ветвь «обратной связи» не содержит операторов.


БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ


Принцип Дейкстры.
Для построения любого алгоритма достаточно иметь три базовых структуры: следование, ветвление, цикл (безразлично -ПОКА или ДО).


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


Метод нисходящего проектирования

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

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


Условный оператор if позволяет указать операции, которые должны выполниться при соблюдении некоторого условия, либо не выполниться, если это условие неверно.
Синтаксис оператора if :
if ( <условие> )
<команда если верно>
Пусть пользователь вводит с консоли два числа, которые потом сравниваются между собой.
    int a, b;
    cin >> a >> b;
    if (a == b)
    cout << "equal";
    Если ввести два одинаковых числа, программа выводит «equal», иначе — ничего не выводит.


Оператор else позволяет указать утверждение, которое будет выполнено в случае, если условие не верно. Оператор else всегда идет в паре с оператором if и имеет синтаксис:
      if ( <условие> )
      <команда если верно>
      else
      <команда если неверно>
      В результате, программу можно дополнить:
      int a, b;
      cin >> a >> b;
      if (a == b)
      cout << "equal" << endl;
      else
      cout << "not equal" << endl;
      Если ввести два одинаковых числа, программа выводит «equal», иначе — «not equal».


Если необходимо выполнить больше одной операции при выполнении условия, нужно использовать фигурные скобки:
if ( <условие> ) {
...
}
Например, можно вывести значения чисел: оба значения, если числа различны, и одно, если совпадают.
int a, b;
cin >> a >> b;
if (a == b) {
cout << "equal" << endl;
cout << a;
}
else {
cout << "not equal" << endl;
cout << a << " " << b;
}
Здесь endl (end of line) — оператор переноса строки.


При работе с оператором if следует иметь в виду следующую особенность. Пусть дан код:
int a = -1;
if (a >= 0)
if (a > 0)
cout << "positive";
else
cout << "negative";
Из-за отступов могло показаться, что оператор else относится к внешнему if, а на самом деле в такой записи он относится к внутреннему if. В C++, в отличие от Python, отступы не определяют вложенность. В итоге программа ничего не выводила в консоль.
Если явно расставить скобки, получится:
int a = -1;
if (a >= b) {
if (a > 0)
cout << "positive";
}
else {
cout << "negative";
}
В данном случае, как и ожидается, выведено «negative».

Цикл while


Цикл while
Цикл while может быть полезен, если необходимо выполнять некоторые условия много раз, пока истинно некоторое условие.
while ( <условие> )
<команда>
Пусть пользователь вводит число n. Требуется подсчитать сумму чисел от 1 до n.
int n = 5;
int sum = 0;
int i = 1;
while (i <= n) {
sum += i;
i += 1;
}
cout << sum;


Цикл while может быть полезен, если необходимо выполнять некоторые условия много раз, пока истинно некоторое условие.
while ( <условие> )
<команда>
Пусть пользователь вводит число n. Требуется подсчитать сумму чисел от 1 до n.
int n = 5;
int sum = 0;
int i = 1;
while (i <= n) {
sum += i;
i += 1;
}
cout << sum;


Аналогом цикла while является так называемый цикл do-while, который имеет синтаксис:
do {
<команда>
} while ( <условие> );
Пример программы - интерактивная игра, в которой пользователь пытается угадать загаданное число.
int a = 5;
int b;
do {
cout << "Guess the number: ";
cin >> b;
} while (a != b);
cout << "You are right!";


Аналогом цикла while является так называемый цикл do-while, который имеет синтаксис:
do {
<команда>
} while ( <условие> );
Пример программы - интерактивная игра, в которой пользователь пытается угадать загаданное число.
int a = 5;
int b;
do {
cout << "Guess the number: ";
cin >> b;
} while (a != b);
cout << "You are right!";
Цикл for используется для перебора набора значений.



написать администратору сайта