ЛК_2_1 Основы. Основные понятия языка программирования C Ветвь языков в с С С#
Скачать 471 Kb.
|
Основные понятия языка программирования C++ Ветвь языков: В → С → С++ → С# Знаковые ЯП: Java и Visual Basic.Язык B1963 год, основной создатель - К.Томпсон (Технологический институт Массачусетса (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/22 Некоторые операции Си Присваивание: имя переменной=выражение; - не только оператор, но и операция допустима цепочка: 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 ( <условие> ) <команда если верно> Пусть пользователь вводит с консоли два числа, которые потом сравниваются между собой.
cin >> a >> b; if (a == b) cout << "equal"; Если ввести два одинаковых числа, программа выводит «equal», иначе — ничего не выводит. Оператор else позволяет указать утверждение, которое будет выполнено в случае, если условие не верно. Оператор else всегда идет в паре с оператором 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 используется для перебора набора значений. |