91fb821a78fc22a2b5878c4529b66721.ppt
- Количество слайдов: 28
Наименование дисциплины Технология и языки программирования Преподаватель Бочаров Юрий Иванович доцент кафедры микро- и наноэлектроники НИЯУ МИФИ E-mail: micro. nano@yandex. ru Web-сайты: http: //yibocharov. narod. ru http: //bocharov. my 1. ru
Виды учебных занятий ¡ ¡ ¡ 2 Лабораторные работы 2 часа каждую неделю Контрольная работа на 7 -8 неделе Регулярные домашние задания (решения высылаются на E-mail преподавателя, выполнение всех заданий не является обязательным) Индивидуальное задание для самостоятельной работы (выполняется в течение семестра, сдается в декабре) Контроль по итогам работы в семестре на последней учебной неделе Зачет на зачетной неделе Технология и языки программирования
Предмет курса ¡ ¡ ¡ Основы алгоритмизации и начала программирования на языке С Практическое освоение технологии работы в среде программирования: создание проектов, написание, отладка и тестирование простых программ Начальное ознакомление с базовыми алгоритмами решения типовых задач: работа с массивами, поиск, сортировка, решение уравнений и т. п. Использование других языков кроме С, таких, например, как С++, С#, Pascal, Python, Java и изучение объектноориентированного программирования не предусмотрено 3 Технология и языки программирования
Учебная литература и другие информационные ресурсы ¡ ¡ ¡ 4 004 К 36 Керниган, Б. Язык программирования С / Б. Керниган, Д. Ритчи. - 2 -е изд. - Москва [и др. ] : Вильямс, 2015, 2013, 2011, 2008. (Это основное пособие, есть в АУЛ) 004 Ш 49 Шереметьев, А. И. Информатика : учебное пособие / А. И. Шереметьев. - Москва : НИЯУ МИФИ. Ч. 1 : Элементы программирования на языке Cu. - 2011. (Есть в АУЛ) Ресурсы Интернет – множество online курсов по С, например: www. intuit. ru/studies/courses/43/43/info www. intuit. ru/studies/courses/97/97/info www. intuit. ru/studies/courses/11876/1156/info Самостоятельный поиск в Интернете по ключевым словам Использование раздела Help в среде программирования Технология и языки программирования
Используемые в курсе средства программирования ¡ Свободно распространяемый программный пакет, среда программирования Pelles C for Windows http: //www. pellesc. de, загрузка пакета с сайта http: //www. pellesc. de/index. php? page=download&lang=en Программирование только на С, язык английский. Этот пакет будет использоваться на лабораторных работах. ¡ Свободно распространяемый программный пакет, среда программирования Dev-C++ или Dev-CPP www. bloodshed. net/devcpp. html sourceforge. net/projects/orwelldevcpp/files/latest/download Программирование на С и С++, есть поддержка русского языка. ¡ Microsoft Visual Studio. Профессиональный коммерческий продукт. Есть бесплатная студенческая версия MS Visual C++ Express Edition, требует регистрации Все эти пакеты (не последних версий) имеются на компьютерах в дисплейном классе В-103. Необходимо установить Pelles C или/и Dev-C++ на личный (домашний) компьютер! 5 Технология и языки программирования
Организация учебной работы ¡ ¡ ¡ 6 На лабораторных работах (практических занятиях) в дисплейном классе – ведение рабочей тетради с пометками по тематике проводимых работ В дисплейном классе – совместная работа с преподавателем по составлению алгоритмов, кодированию, отладке и тестированию программ В рабочей тетради – неформализованные (в любом удобном виде) записи вариантов алгоритмов, структурных схем, необходимые справочные данные по используемым программным функциям, математические, физические формулы для задач по математическому моделированию и т. п. Дома – самостоятельная работа по выполнению домашних заданий и самостоятельному изучению предмета с использованием учебной литературы и Интернет-ресурсов. Обязательной является самостоятельная индивидуальная работа по программированию – не менее 20 час. составления и отладки программ за семестр (по опыту предшественников)! Технология и языки программирования
Начало работы ¡ ¡ 7 Войти в Windows с указанными преподавателем учетными данными (логин и пароль) На сетевом диске Z: в папке своей группы создать свою индивидуальную папку, имя которой должно содержать только латинские буквы, а также цифры, вместо пробела ставится подчеркивание, длина – не более 8 символов, желательно, чтобы по имени папки можно было бы идентифицировать студента. Все рабочие файлы и папки должны быть внутри индивидуальной папки. Категорически запрещается сохранять что-либо на системном диске С: ! На личном компьютере это допускается. Войти в среду программирования – интегрированную среду разработки (IDE - Integrated Development Environment). Создать новый проект – консольное приложение на языке С (имя проекта создается по тем же правилам, что и имя индивидуальной папки). При использовании пакета Dev-C++ следует предварительно в своей папке создать папку с именем проекта, а затем указать ее при размещении там проектного файла. В среде Pelles C папка проекта создается автоматически при указании имени проекта. Далее следовать указаниям преподавателя. . . Технология и языки программирования
Форматный вывод Функция printf (“строка вывода или/и строка спецификаций формата выводимых переменных”, список выводимых объектов) Например: printf(“Hello World!”); // только строка вывода Пример со спецификациями формата: char s 1[] = "Hi!"; char *s 2 = "Hello World!"; printf("%sn", s 1, s 2); Для вывода в строку формата (в кавычках) включены две спецификации формата %s, поскольку выводятся 2 строки. Спецификации предваряются знаком %, за которым следует один или несколько символов – собственно спецификация. В данном случае это спецификация, которая показывает, что выводится строка. В этом примере после каждой спецификации формата еще добавлен управляющий код n, который вызывает переход на новую строку (можно их опустить, тогда обе фразы будут в одной строке). Далее о форматах и управляющих кодах подробнее. 8 Технология и языки программирования
Форматный вывод (продолжение) Некоторые из спецификаций форматов. Дополнительная информация – в справочниках. Там же физические форматы – расположение битов в словах и др. ¡ ¡ ¡ ¡ ¡ 9 %c – символ %s – строка (последовательность символов, на конце ’ ’) %d или %i – int (целое число со знаком) %o – то же в восьмеричном формате %x – то же в шестнадцатеричном формате %u – unsigned (целое без знака) %ld – long (длинное целое со знаком) %lo – то же в восьмеричном формате %lx – то же в шестнадцатеричном формате %lu – unsigned long (длинное целое без знака) Технология и языки программирования
Форматный вывод (продолжение) ¡ ¡ ¡ ¡ 10 %f – float или double - числа в формате с плавающей точкой, имеющие десятичную дробную часть %е – то же, представленные в экспоненциальной форме %lf – long float %le – то же в экспоненциальной форме Дополнительные спецификаторы формата (на примерах) %6 d – вывод целого, ширина поля вывода – 6 позиций %6. 3 f – вывод числа с плавающей точкой в поле из шести позиций с тремя знаками после запятой (десятичной точки) %10 s – вывод строки в поле из 10 позиций, если строка короче, то поле заполняется пробелами слева %-10 s - вывод строки в поле из 10 позиций, выравнивание по левому краю, т. е. если строка короче, то поле заполняется пробелами справа Технология и языки программирования
Форматный вывод (продолжение) Типы числовых данных ¡ ¡ ¡ ¡ char, unsigned char, signed char short, unsigned short int, unsigned int long, unsigned long Float double long double длина чисел в байтах 1 2 4 4 8 8 Форматы чисел не стандартизованы в С, поэтому приведенные значения являются типовыми, но не обязательными. Типовые величины числовых диапазонов в среде Pellec C for Windows приведены на следующем слайде 11 Технология и языки программирования
Форматный вывод (продолжение) ¡ Тип данных ¡ Байты signed char ¡ 1 unsigned char 1 signed short 2 enum 2 unsigned short 2 ¡ signed int 4 ¡ unsigned int 4 ¡ signed long ¡ unsigned long ¡ float ¡ double 4 4 4 8 ¡ long double 8 ¡ ¡ ¡ 12 Биты Min Max 8 8 16 16 16 32 32 32 64 64 -128 0 -32768 0 -2147483648 0 ± 3. 4 E-38 ± 1. 7 E-308 127 255 32767 65535 2147483647 4294967295 ± 3. 4 E+38 ± 1. 7 E+308 Технология и языки программирования
Вывод символов таблицы ASCII, которые имеют значок для отображения на экране. Примеры: putchar('A'); // вывод заглавной латинской А putchar() – функция неформатного вывода символа printf("B"); // вывод строчной константы из одной буквы. Выводятся символьная переменная qq и строка из одного символа QQ (заглавные и строчные буквы различаются!) char qq = ’W’; char QQ[] = ”? ”; printf ("%c", qq); printf(”%s”, QQ); 13 Технология и языки программирования
Вывод символов (продолжение) Управляющие коды ¡ ¡ 14 Для управления выводом и в качестве специальных знаков используются символы таблицы ASCII с номерами от 0 до 26, которые или вовсе не отображаются на экране или имеют строго заданных значков для вывода на экран. В тексте программ они обозначаются обычными символами, перед которыми ставится знак . Примеры управляющих кодов: n переход на новую строку t горизонтальная табуляция (сдвиг вправо на несколько позиций, обычно на 8, завит от конкретной реализации) b возврат на одну позицию (backspace) r возврат в начало строки Технология и языки программирования
Вывод символов (продолжение) ¡ ¡ ¡ 15 Таким же образом записываются специальные знаки: printf("\"); //вывод символа на экран printf("""); //вывод символа " на экран putchar(’ 7’); // вывод символа BEL, который вызывает звуковой сигнал – писк, звонок (если в компьютере есть встроенная звуковая головка). В данном случае 7 – восьмеричный код символа BEL в таблице ASCII putchar(’64’); // вывод на экран символа числа 4, поскольку 648 =4810, а 48 это код ’ 4’ в таблице ASCII эквивалентная команда - putchar(’ 4’) putchar(’x 41’) это эквивалентно putchar(’A’) или то же, что printf(”A”). Здесь x 41 шестнадцатеричный код 41, т. е. 65 в десятичном коде (4116 = 6510), а 65 это код латинской А в таблице ASCII Технология и языки программирования
Задержка закрытия экрана При выводе результатов на экран нужно осуществить задержку смены изображения, чтобы можно было увидеть на экране эти результаты, до того как произойдет смена изображения или экран закроется. Для этого используется операция ожидания ввода любого символа, например: printf(”Press any key to continue…”); // т. е. «Для продолжения нажмите любую клавишу» getchar(); // функция неформатного ввода символа - ожидает ввода какого-либо символа В среде Pelles C предусмотрена автоматическая вставка такого кода в конце главной программы перед return 0. 16 Технология и языки программирования
Задержка закрытия экрана (продолжение) Еще один способ сделать паузу, чтобы задержать текущее изображение на экране – использовать функцию system() из библиотеки stdlib. h: #include <stdio. h> #include <stdlib. h> int main(void) { //здесь текст главной программы system("Pause"); return 0; } Если ОС русифицирована, то появится надпись: «Для продолжения нажмите любую клавишу. . . » 17 Технология и языки программирования
Строки в языке С Любой текст в кавычках, например: ”МИФИ”, ”MEPh. I”, ” 1234” является строковой константой. Строка – это массив символов, который содержит в конце нулевой символ, признак конца строки ’ ’. Объявление такого массива: char S 1[] = ”Bye-Bye”; // массив содержит 7 символов и признак конца, поэтому справедливо также такое объявление: char S 1[8] = ”Bye-Bye”; // или такое: char S 1[20] = ”Bye-Bye”; // часть области памяти, отведенной под массив, будет заполнена, часть нет – ее содержимое не определено. А так нельзя: char S 1[7] = ”Bye-Bye”; // будет сообщение об ошибке «No room for null terminator. . . » (нет места для конца строки) 18 Технология и языки программирования
Строки в языке С (продолжение) Символы в строке нумеруются, как и в любом другом массиве, начиная с нуля, например, при выполнении фрагмента программы: char s 2[]=”Hi”; Printf(”%ct%ct”, s 2[0], s 2[1], s 2[2]); будет выведено H i Press any key to continue. . . Символ конца строки между i и Press не виден Важно: значения элементов массива изменять можно: s 2[0]=’Q’; s 2[1]=’*’; s 2[0]=s 2[1]; но значение s 2 изменять нельзя, поскольку это адрес 0 -го элемента массива, то есть, указатель-константа на строку. Поэтому s 2 = запрещено! 19 Технология и языки программирования
Строки в языке С (продолжение) Другой способ объявления строки: char *s 3=”Microelectronics”; Здесь * - операция получения значения переменной по ее адресу, s 3 – переменная-указатель на символьную переменную. Это адрес байта - нулевого элемента массива, т. е. адрес самого массива. *s 3 – это не адрес, а содержимое памяти – строка, на которую указывает переменная s 3. Поскольку s 3 это переменная, а не константа, ее значение можно изменять в программе, например s 3=”Nanoelectronics”; В данном случае переменная s 3, которая раньше содержала адрес нулевого символа строки ”Microelectronics”, теперь содержит адрес нулевого символа строки ”Nanoelectronics”. 20 Технология и языки программирования
Строки в языке С (продолжение) Строки можно вводить с клавиатуры: scanf(”%s”, s 3); scanf() – функция форматного ввода, аргументами которой в данном случае являются: %s – спецификация формата строки s 3 – адрес вводимой строки char hh[]=" "; //выделение места под строку hh char *HH=""; HH=hh; //указатель HH указывает на начало строки hh scanf("%s", HH); printf("%sn", HH); HH++; /*указатель адреса начала строки увеличивается на 1, указывая на 2 -й символ, а 1 -й символ введенной строки не выводится на экран*/ printf("%sn", HH); 21 Технология и языки программирования
Инициализация переменных Простые числовые переменные в десятичном формате: int x = 137; long X = 2097152; float y = 137. 0; float z = 1. 37 E 2; double Z =72. 33333 E-5; Простые числовые переменные в других форматах: int x = 0137; // в восьмеричном коде (0 – это ноль) int x = 0 x 137; // в шестнадцатеричном коде Символьные переменные: char v = ’W’; // Символ заглавной W char v = ’ 22 ”’; // Символ ” Технология и языки программирования
Инициализация переменных (продолжение) Пример int w=032; int W=0 x 32; printf("%dt%ot%xn", w, W); Объявлены и инициализированы две переменные: w=328 = 2610 W = 3216 = 5010 Выводятся эти переменные сначала в десятичном формате %d, а затем в восьмеричном и шестнадцатеричном форматах %o и %x. На экране: 26 50 32 32 23 Технология и языки программирования
Инициализация переменных (продолжение) Одномерные массивы (векторы) простых переменных, таких, например, как числа и символы инициализируются перечислением значений их элементов в {}. Нумерация элементов начинается с 0! int Vec[] = {1, 3, 7, 15, 31, 63}; //массив целых чисел printf("%dt%dn", Vec[0], Vec[2], Vec[4]); На экране появится: 1 7 31 char Hi[] = {’H’, ’e’, ’l’, ’o’, ’!’}; //массив символов char *HH=""; //пустая строка HH=Hi; //копирование массива в строку printf("%sn", HH); //вывод строки На экране появится: Hello! 24 Технология и языки программирования
Инициализация переменных (продолжение) Двумерный числовой массив (матрица) хранится в памяти, имеющей последовательную нумерациею ячеек, по строкам (0 -я строка, 1 -я строка, 2 -я строка, 3 -я строка и т. д. ) и инициализируется перечислением строк, как векторов в общих фигурных скобках: int M[3][3]={{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; Здесь объявлена и инициализирована квадратная матрица целых чисел размерности 3 х3 следующего вида: 1 2 3 4 5 6 7 8 9 double mm[2][4] = {{1. 8, 0. 7, 0. 0, 1. 2}, {-3. 3, 0. 5, 19. 2, 7. 1}}; Здесь объявлена и инициализирована квадратная матрица чисел с плавающей точкой размерностью 2 х4. 25 Технология и языки программирования
Инициализация переменных (продолжение) Пример #include <stdio. h> #define n 3 //препроцессор заменяет везде n на 3 int main(void) { int M[n][n]={{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; double mm[2][4]={{1, 2, 3, 4}, {5, 6, 7, 8}}; printf("%dn", M[2][0]); printf("%10. 3 fn", mm[0][1]); return 0; } На экран выводится 7 2. 000 26 Технология и языки программирования
Ввод числовых переменных Используется функция форматного ввода scanf() Пример int x=0; int y=0; float z=0. 0; printf("Initial numbers: x=%d, y=%d, z=%4. 2 fn", x, y, z); printf("Enter inline integer x, y and real z: "); scanf("%d%d%f", &x, &y, &z); //Обратите внимание на знаки & printf("n. Ented numbers: x=%d, y=%d, z=%4. 2 fn ", x, y, z); Важное замечание! Аргументами функции scanf() являются строка формата вводимых переменных и адреса, куда они будут записаны. Поэтому перед именами переменных указывается знак &, который обозначает операцию взятия адреса переменной. 27 Технология и языки программирования
Операции с адресами ¡ ¡ 28 Если в программе объявлена переменная Х, которая не является указателем, то &X – это адрес переменной (знак & называется амперсанд). Если Р – это указатель, т. е. адрес переменной, то *Р – это значение переменной, содержимое памяти по этому адресу. В языке Си с указателями (адресами) можно работать, как с переменными особого типа - адресными переменными. Основные операции - & и *. Технология и языки программирования
91fb821a78fc22a2b5878c4529b66721.ppt