Основы информатики 1 семестр Алгоритмические языки и алгоритмы КОРОТИН Павел Николаевич.

Презентация:



Advertisements
Похожие презентации
Введение в язык программирования С++. Элементы языка общие с С. Полиморфизм. Инкапсуляция.
Advertisements

Основы информатики Лекция. Массивы. Указатели. Заикин Олег Сергеевич
Лекция 2 Введение в язык Си.
©Павловская Т.А. Язык С++ Курс «С++. Программирование на языке высокого уровня» Павловская Т.А.
Лекция 1 по дисциплине «Программные средства математических расчетов» тема: «Основы языка С++» гр. 8Е31 Мамонова Татьяна Егоровна
УКАЗАТЕЛИ. Переменная - это именованная область памяти с заданным типом. [=значение]; int a; //Переменная типа integer с именем a int b=2;// Переменная.
©ρŧą Базовые конструкции языка.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Выражения языка Си(ч.2). Операции Лекция 3. Основные классы операций арифметические логические поразрядные операции сравнения.
Элементы языка СИ Средства для написания простейших программ.
Основы информатики Массивы. Указатели. Заикин Олег Сергеевич
МАССИВЫ 4 Определение 4 Описание 4 Обращение к элементам массива 4 Связь массивов с указателями 4 Примеры программ.
Лекция 2 С => C++ => C# Большие и маленькие буквы различаются (main, Main, MAIN, mAin – разные имена) После каждого оператора ставится точка с запятой.
Краткое введение в язык программирования С Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Томский политехнический университет.
Лекция 5 Адресные типы. Указатели адрес (размещение в памяти) объекта Массивы последовательность однотипных данных Ссылки альтернативное имя объекта.
Данные в программах и алгоритмах Программы и их алгоритмы пишутся для обработки данных. Чтобы реализовать алгоритм, программам необходимо работать с данными.
Двумерные динамические массивы. Двумерный массив - это одномерный массив, элементами которого являются одномерные массивы. Другими словами, это набор.
Основы программирования. Типы данных Учебное пособие по курсу «Основы программирования» Преподаватель Алексеева Н.Н. Санкт-Петербургский колледж информационных.
Разработка программного обеспечения для сигнальных процессоров TMS320C64xx в IDE Code Composer Studio Часть II. Язык программирования С. Основные понятия.
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Транксрипт:

Основы информатики 1 семестр Алгоритмические языки и алгоритмы КОРОТИН Павел Николаевич

Архитектура фон-Неймана УВВ ЦП ЗУ АЛУ УУ УУСШ ОЗУ ВЗУ

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

Введение в язык программирования С++. Элементы языка общие с С. Полиморфизм. Инкапсуляция.

История 1970 – Dennis Ritchie разработал язык C для DEC PDP-11 в ОС UNIX – Bjarne Stroustrup в Bell Laboratory разработал язык C – American National Standart Institute утвердил стандарт, который поэтому называется ANSI – International Standards Organization ратифицирован стандарт языка.

Алфавит языка ::= A|B| … |Y|Z|a|b| … |y|z|_ Символы: +, -, *, /, >, =,

Терминальные символы (Зарезервированные слова) asmdefaultforoperatorsizeofunsigned autodeletefriendprivatestaticvirtual breakdogotoprotectedstructvoid casedoubleifpublicswitchvolatile charelseinlineregistertemplatewhile classenumintreturnthis constexternlongshorttypedef continuefloatnewsignedunion

Идентификатор – последовательность буквенно- цифровых символов, начинающаяся с буквы, длиной до 1024 символов. Допустимые: count Test23 Ptr_1 Недопустимые: 1count sizeof Ptr…1

ASCII - American National Standard Code for Information Interchange abcdef 0 nulsohstxetxeotenqackbelbshtnlvtnpcrsosi 1010 dledcldc2dc3dc4naksynetbcanemsubescfsgsrsus 2020sp!"#$%&'()*+,-./ :;? 5050 PQRSTUVWXYZ[\]^_ 6060 `abcdefghIjklmno 7070 pqrstuvwxyz{|}~ del

Базовые типы данных Целые длиной один байт – char 0 Целые длиной несколько байт – int х 30 С плавающей точкой – float 48.f.48e2F Двойной точности - double e-1 Без значения - void

Специальные символьные константы \a Сигнал\t Горизонтальная табуляция \f Подача бумаги\v Вертикальная табуляция \n Новая строка\Одинарная кавычка \r Возврат каретки\хN\хNШестнадцатеричная или восьмеричная константа \?Знак вопроса\N \Двойная кавычка\b\b Удаление предыдущего символа \\Обратный слеш

Модификация базовых типов Со знаком – signed Короткое – short Без знака – unsigned Длинное – long 1 = sizeof(char) sizeof(short) sizeof(int) sizeof(long) sizeof(float) sizeof(double) sizeof(long double)

Пример: #include char c=\t; short s=1; int i; long l; void main() { float f; double d; long double D; cout

Спецификаторы класса памяти auto - Локальная переменная не существует за пределами области видимости. static - Значение переменной постоянно хранится внутри функции или файла. register -Обеспечить доступ к объекту так быстро, как только возможно. extern - Объявляемая переменная определена в другой части программы. extern int x;static int y=0;

Квалификаторы типа const – неизменяемые данные Переменная не может программно изменять своего значения const float e=2.71; volatile – подавление оптимизации Переменная может изменяться независимо от программы. NB: порядок вычисления выражений не определен! X = X1 + X2;

Оператор присваивания Множественное присваивание x = y = z = 0; Стенографическое присваивание x = 10; // x=x 10; Lvalue = Rvalue Lvalue и Rvalue - идентификаторы Lvalue – именующее выражение (адрес переменной) Rvalue – вычисляемое выражение (значение переменной)

Арифметические операции -Вычитание +Сложение *Умножение /Деление % Остаток от деления --Декремент ++Инкремент Пример float y,x = 5/3;//=1.0 y = 5./3;// =1.666… int k=1; ++k;// =2 int m=--k;// k--, m=k; int n=k++;// n=k, k++; // m=1, n=1

Операции сравнения и логические операции >Больше >=Больше или равно

Поразрядные операции &И&И |ИЛИ ^Сложение по модулю два ~Дополнение к 1 >>Сдвиг вправо 1; // 0110>>1=0011=3 x

Еще несколько операторов ?:- условное выражение sizeof- определение размера операнда в байтах,- последовательного вычисления (тип)- явное преобразование к заданному типу :: - расширения области видимости y = x >= 0 ? 1 : -1; I = sizeof(int); J = sizeof I; int k=(y=J, 2*y); float z=(float)5/3; z=float(5)/3; int i; void main() { int i; i=1; ::i=2; …

Массивы Const int размер = …; Тип имя_переменной [размер]; int A[10]; Номер элемента 1-й 1-й 2-й 3-й 4-й… Имя элементаA[0]A[1]A[2]A[3]… Адрес элемента a010c010e… int B[5][10];B[3,4] – не верноB[3][4] - верно

Указатели и ссылки Указатель – переменная, значением которой является адрес. int x[2],*Ptr; Ptr = &x[0]; *Ptr++=1; *Ptr=2; Ссылка – другое имя или еще одно имя объекта. NB: Может быть только инициализирована. int x[]={0,0},&b=x[0]; ++b+=1; *P*P&P & - операция получения адреса объекта * - операция «разыменования» указателя сout

Операторы выделения и освобождения памяти void* new(size_t) – возвращает адрес непрерывного участка памяти для объекта типа и размерностью size_t байт. void delete(void*) – освобождает память, выделенную оператором new, начиная с адреса, на который ссылается указатель. Пример. const int ar_sz=10;ptr[1]=1.f; ptr[2]=2.f; void main() {delete ptr; float* ptr = new float[ar_sz];}

Массивы и указатели int x[]={1,2,3,4,5};int x[5]; const int *y=x; Описание Адрес элемента массива &x[3]y+3 Значение элемента массива x[3]*(y+3) Имя массива – неизменяемый указатель, инициализированный начальным значением.

Строки const int k=…; char str[k];// это ещё не строка str[0]=H; str[1]=e; str[2]=str[3]=l; str[4]=o; str[5]=\0; char str0[]={H,e,l,l,o,\0}; char* str1=Hello; - одномерные массивы символов, заканчивающиеся символом с кодом ноль (\0)

Двумерные массивы и двойные указатели const int ik=5, jk=10; void main() {int a[ik][jk]; int* b[]={a[0],a[1],a[2],a[3],a[4]}; int **c=b; int i=4, j=4; *(*b + i*jk +j)=10; cout

AA[0] A[0][0] … A[0][4]A[0][3]A[0][2]A[0][1] A[1][0] … A[1][4]A[1][3]A[1][2]A[1][1] A[2][0] … A[2][4]A[2][3]A[2][2]A[2][1] A[3][0] … A[3][4]A[3][3] A[3][2 ] A[3][1] A[4][0] … A[4][4]A[4][3] A[4][2 ] A[4][1] A[1] A[2] A[3] A[4] int* B[]; int **C;

Составные типы данных Структура – конгломерат переменных Объединение – наложение переменных Битовое поле – организация доступа к отдельным битам Перечисление – список именованных целых констант Имена типов, введенные пользователем: typedef тип новое_имя; КОНГЛОМЕРАТ – механическое соединение чего-либо разнородного, беспорядочная смесь. Словарь иностранных слов.

Структуры Формат описания: struct имя_шаблона { тип имя_члена; … тип имя_члена; } список_переменных; Пример struct complex { float re,im;} a; Массивы структур: struct complex d[5]; Доступ к членам: complex c,*b=&c; a.re=0.; d[1].im=3.; *b.re=1.; b–>im=2.; Присваивание: c=*b; Имя_шаблона = тег reima Операции доступа к члену структуры:. – через переменную -> - через указатель

Объединения Формат описания: union тег { тип имя_члена; … тип имя_члена; } список_переменных; Пример: union { int i; struct {char h_b,l_b;} j; } a; il_bh_ba a.j.h_b = \0; a.j.l_b=1; cout

Битовые поля – члены структуры или объединения Формат: struct или union тег { тип имя: длина; … тип имя: длина; } список_переменных; Здесь тип – это int, signed, unsigned Пример: struct { int a:4; int b:4; char c; } c; c.a=0; c.b=3; c.c='\0'; void* ptr=&c; cout

Перечисление – набор именованных целых констант Формат: enum тег { список_перечисления } список_переменных; Пример enum {m,t,w,th,f,s,su} d; cout

Приоритеты операций Наивысший ::== != () [] ->.& ! ~ (type) & sizeof * new delete ^ | * / %&& + -|| >?: = > Наинизший =