Similar presentations:
Основные понятия языка программирования C++. Ветвь языков: В → С → С++ → С#. Знаковые ЯП: Java и Visual Basic
1. Основные понятия языка программирования C++ Ветвь языков: В → С → С++ → С# Знаковые ЯП: Java и Visual Basic.
2. Язык B
- 1963 год, основной создатель - К.Томпсон(Технологический институт Массачусетса
(Ken Thompson, MIT).
Основная цель разработки языка - реализация
операционной системы UNIX.
Существовавший язык PL/I (для мэйнфреймов
производства компании IBM) был громоздким
и меньше подходил для поставленной
задачи, чем новое, оригинальное решение
ученых-практиков.
3. Язык С
изобретен на основе языка B в 1972 году.Авторы - К.Томпсон и Д.Ритчи
(исследовательская лаборатория
компании AT&T (AT&T Bell Telephone
Laboratories).
В варианте C язык B расширился за счет
явного использования типов, структур и
ряда новых операций.
Дальнейшее развитие языка происходило
в той же организации.
4. Разработчики языка С
Кен Томпсон (Kenneth Thompson)Деннис Ритчи (Dennis Ritchie)
Известны благодаря двум важнейшим программным разработкам XX
века: ОС UNIX и ЯП C.
Оба начали свои карьеры в Bell Labs в 1960-х, навсегда изменив
компьютерный мир своими идеями.
Кен Томпсон больше не в компьютерной индустрии,
Деннис Ритчи по-прежнему сотрудник Lucent Technology и работает
над новой, основанной на UNIX ОС - Plan9.
5. Язык С++
В 1984 году, Б. Страуструп(Bjarne Stroustrup, Bell Labs)
выступил с проектом языка С++
– ООП-расширения языка C,
в котором вводится понятие класса
как объекта данных.
Название C++ для нового языка
предложил Р.Маскитти
(Rics Mascitti, Bell Labs).
6. Язык С#
В 2000 году корпорация Microsoft выпустила всвет C++ нового поколения под названием
C#, основной постулат которого:
"всякая сущность есть объект".
Язык основан на строгой компонентной
архитектуре и реализует передовые
механизмы обеспечения безопасности кода.
C# объединил лучшие черты целого ряда
предшественников
7. Элементы языка СИ
Средства для написанияпростейших программ
8. C и C++
C++C
Объектноориентированное
программирование
Элементы из других
алгоритмических языков
(паскаля): замена
формального параметра
на фактический по
ссылке, подход к работе
со строками)
некоторые новые
возможности
программирования
(перегрузка функций,
пространства имен, …)
9. Краткая история языка С и его диалекты
1969-1973 годы- Деннис Ритчи создал язык С
1978 г. - Брайан Керниган и Деннис Ритчи опубликовали
первую редакцию книги «Язык программирования Си» (K&R)
1989 – ANSI C (или C89)
1990 – ISO ANSI C (С90)
С99 и С11
Язык Си++ был разработан в начале 1980-х гг. Бьерном
Страуструпом из компании AT&T Bell Laboratories. Си++
основан на языке Си.
Два символа "++" в названии – это игра слов (символы "++" в языке
Си обозначают операцию инкремента).
Си++ был задуман как язык Си с расширенными возможностями.
Большая часть языка Си вошла в Си++ как подмножество,
поэтому многие программы на Си можно скомпилировать с
помощью компилятора Си++.
10. Язык С++
• 1983 г. – Бьёрн (Бьерне) Страуструпсоздал С++
• 1985 г. - вышло первое издание «Языка
программирования C++»
• Последний стандарт ISO C++ - C++11
(2011 г.)
11. Литература
1. Б. Керниган, Д. Ритчи. Языкпрограммирования Си (The C
programming language). – M.: Вильямс.
2007. – 304 с.
2. Б. Страуструп. Язык
программирования С++ (The C++
programming language). – M.: БиномПресс. 2007. – 1104 с.
12.
ВАЖНО НЕ НА КАКОМ ЯЗЫКЕПРОГРАММИРОВАТЬ, А КАКИЕ ЗАДАЧИ РЕШАТЬ!
Сведения, необходимые для написания
простейшей программы:
Структура простейшей программы.
Типы и структуры данных, имеющиеся в
алгоритмическом языке, их описание,
допустимые операции.
Операторы преобразования д
анных:присваивания (преобразования
внутренних данных), операторы ввода и
вывода.
Правила записи алгоритма - программирование
основных алгоритмических структур.
13. Структура простейшей программы на любом алгоритмическом языке
Заголовокограничитель
описания - неисполняемые
инструкции языка
операторы - исполняемые
инструкции языка
ограничитель
14. Структура простейшей СИ-программы
Директивы препроцессора(в простейшем случае
#include <stdio.h>/*ввод/вывод*/
#include <math.h> /*стандартные
математические функции*/)
void main()
{ описания
операторы
}
#include <stdio.h>
void main()
{int a,b,c;/*описание трех целых
переменных*/
printf("введите a и b\n");
/*приглашение к вводу a и b*/
scanf("%d%d", &a, &b);/*ввод
a,b*/
c=a+b;/*вычисление с - суммы */
printf("c=%d\n", c);/*вывод с*/
}
15. ТИПЫ ДАННЫХ В СИ
БАЗОВЫЕ ТИПЫ:int - целый
float - вещественный
одинарной точности
double вещественный
двойной точности
char - символьный
КВАЛИФИКАТОРЫ:
short - короткий
long - длинный
signed - со знаком
unsigned - без знака
16.
ТИПЫ ДАННЫХ В СИСтандартные целые типы данных Си (MS DOS)
Тип данных
Размер,
байты
Диапазон значений
unsigned char
1
0...255
char, signed char
1
-128...127
unsigned int, unsigned,
unsigned short int
2
0...65535
int, signed int, short int, short
2
-32768...32767
unsigned long
4
0...4294967295
long, long int
4
-2147483648...2147483647
17.
ТИПЫ ДАННЫХ В СИСтандартные целые типы данных Си (Win 32)
Тип данных
unsigned char
char, signed char
short int, short
unsigned short int
unsigned int, unsigned,
unsigned long
int, signed int, long, long int
Размер,
байты
1
1
2
2
4
4
Диапазон значений
0...255
-128...127
-32768…32767
0…65535
0... 4294967295
-2147483648...2147483647
18.
ТИПЫ ДАННЫХ В СИСтандартные вещественные типы данных Си
(MS DOS, Win32)
Тип данных
Размер,
байты
Диапазон
порядка
Число цифр
мантиссы
float
4
-38...+38
7
double
8
-308...+308
15
long double
10
-4932...+4932
19
19. Описания в Си
тип список_имен_переменных;тип имя1, имя2,…,имяi,…, имяN;
имя=значение/*инициализация*/
Имя - идентификатор.
Идентификатор - последовательность букв, цифр
и знаков подчеркивания, начинающаяся с буквы
или знака подчеркивания.
Пример описания:
float a, b=1.5, _b=0.5, b1; int n=10,i=0, j, ik=1;
20. КОНСТАНТЫ В СИ
Обозначенные (именованные)Явные
const тип имя_конст=значение конст;
защита от
записи
Вещественные
0.0013 2.7E-9
Целые
Десятичные
9076 -561
+1111
Шестнадцатеричные
0х2АА -0х111 0ХF4
+0X4D -0XF
Восьмеричные
03457 -0651 +023
Символьные
‘a’ ‘+’ ‘\n’ ‘\t’ ‘\0’
‘\040’ \0x20’
Текстовые
“строка” “a”
21. ВЫРАЖЕНИЯ В СИ
Выражения - это операнды, соединенныезнаками операций.
Операнды: переменные,
константы,
результаты обращения к
функциям;
выражения, заключенные в круглые
скобки.
22. ОПЕРАЦИИ СИ
Некоторые операции Си.Ранг
Обозначение
Название операции
операции
1
() []
круглые и квадратные скобки
2
3
4
6
7
11
12
14
15
!
+ ++
-&
*
(тип)
sizeof
* /
%
+ < <= > >=
==
!=
&&
||
=
операция=
,
логическое отрицание
унарный плюс и минус
инкремент (увеличение на 1)
декремент (уменьшение на 1)
взятие адреса
взятие содержимого (см. п.1.5.3)
приведение к типу
определение размера в байтах
арифметическое умножение и деление
получение остатка от деления нацело
арифметические сложение и вычитание
отношения (меньше, меньше или равно и
т. д.)
отношения (равно, неравно)
конъюнкция (логическое "и")
дизъюнкция (логическое "или")
присваивание
составное присваивание
операция "запятая"
Ассоциативн
ость
23. Некоторые операции Си
Две формы инкремента:++имя_переменной - префиксная
(увеличение операнда до использования)
имя_переменной++ - постфиксная
(увеличение операнда после использования)
Пример. int i=1,c;
1-й фрагмент
2-й фрагмент
с=2*i++;
с=2*++i;
/*в результате i равно 2, с равно 2*/
/* i равно 2, с равно 4*/
24.
Некоторые операции Сиsizeof вычисляет размер в байтах для типа операнда.
Две формы: sizeof (выражение) и sizeof (тип).
Использование:
для
построения
алгоритмов,
обрабатывающих выражения различных типов.
Операция (тип) выражение - приведение
выражения к типу, указанному в скобках.
Пример:
(float)i/(float)j
25. Тип результата выражения
Смешивание в выражении операндов разноготипа допустимо, но правила автоматического
приведения типа сложны - лучше использовать
операцию (тип).
Если операнды имеют одинаковый тип, то
результат имеет тот же тип: 5/2 2
26.
Некоторые операции СиПрисваивание:
имя переменной=выражение;
- не только оператор, но и операция
допустима цепочка: a=b=c=d=0
Составное присваивание: операция=
Пример: S+=a;
S=S+a;
P*=a;
P=P*a;
27. БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ
СледованиеКодирование на Си:
Оператор 1
Оператор 2
Оператор 1;
Оператор 2;
28.
БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕСТРУКТУРЫ
Разветвление (развилка)
Нет
Оператор 2
Условие?
Да
Оператор 1
Кодирование на Си:
if (условие)
оператор 1;
else
оператор 2;
Ветвь «Нет» пустая else
и оператор 2
отсутствуют.
29.
БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕСТРУКТУРЫ
Разветвление (развилка)
Если развилка является структурной, то:
Оператор1 и оператор2 не имеют связей.
Существует четко определенная точка
соединения ветвей.
30.
БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕСТРУКТУРЫ
Разветвление (развилка)
if (условие)
{оператор 1_1;
оператор 1_2;
…
оператор 1_N;
}
else
{оператор 2_1;
оператор 2_2;
…
оператор 2_M;
}
фигурные скобки позволяют
объединить несколько
операторов в один
составной
31.
БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕСТРУКТУРЫ
Цикл ПОКА (с предусловием)
Кодирование на Си:
Условие?
Нет
while (условие)
тело цикла;
Да
Тело цикла
Тело цикла - один оператор,
простой или составной.
Тело цикла может не выполниться
ни разу.
32.
БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕСТРУКТУРЫ
ЦИКЛ ДО (с постусловием)
Кодирование на Си:
Do
тело цикла;
while (условие);
Тело цикла
Нет
Условие?
Да
Тело цикла выполняется хотя
бы один раз.
33.
БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕСТРУКТУРЫ
ПАРАМЕТРИЧЕСКИЙ ЦИКЛ
Кодирование на Си:
i = нач_знач
for(i=нач_знач;i<=кон_знач; i=i+шаг)
тело цикла;
Нет
Нет
i<=кон_знач
Да
Тело цикла
i =i+шаг
34.
БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕСТРУКТУРЫ
Если цикл является структурным, то:
Цикл имеет один блок анализа на выход из
(продолжение) цикла.
Блок анализа на выход из (продолжение)
цикла стоит либо в начале (цикл ПОКА),
либо в конце (цикл ДО) цикла.
Ветвь «обратной связи» не содержит
операторов.
35.
БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕСТРУКТУРЫ
Принцип Дейкстры.
Для построения любого алгоритма
достаточно иметь три базовых структуры:
следование, ветвление, цикл (безразлично
-ПОКА или ДО).
36. Метод нисходящего проектирования
Разбиение алгоритма на части и установлениимежду ними связей. При установлении связей
очень важно, чтобы каждая часть имела один
вход и один выход, так что нисходящее
проектирование
успешно
сочетается
с
использованием
базовых
структур
алгоритмов.
Каждая часть в свою очередь
разбивается на части, и процесс повторяется.
Можно сказать, что нисходящее проектирование
алгоритма
состоит
в
иерархической
последовательной разработке алгоритма от
сложного к простому.
37.
Метод нисходящегопроектирования
De c is io n
De c is io n
P ro c e s s
P ro c e s s
P ro c e s s