Similar presentations:
Основы программирования (на языке Си)
1.
1Основы программирования
(на языке Си)
2.
1. Цели и задачи дисциплины, её место в учебном процессе:1.1 Цели изучения дисциплины
Целью изучения дисциплины «Основы программирования» является
обеспечение необходимого уровня компетенций студентов-бакалавров
специальности 11.03.03 - «Конструирование и технология электронных
средств» в области современных информационных технологий обработки
и хранения информации, основ алгоритмизации и прикладного
программирования с использованием языков программирования высокого
уровня.
1.2 Задачи изучения дисциплины
- знакомство c основными принципами организации записи, хранения и чтения
информации;
- овладение компьютерными методами сбора, хранения и обработки
информации;
- знакомство с понятием алгоритма и алгоритмическими системами;
- получение практических навыков программирования на языках
программирования высокого уровня.
3.
В результате изучения дисциплины студент долженЗнать:
основы информационных технологий и требования к информационной
безопасности;
принципы организации записи, хранения и чтения информации в ЭВМ;
принципы алгоритмизации и программирования;
синтаксис языка программирования С/C++;
основы алгоритмического и структурного программирования.
основы информационных технологий и требования к информационной
безопасности.
Уметь:
разрабатывать алгоритмы решения задач;
работать с программными средствами общего назначения;
разрабатывать программное обеспечение средствами объектноориентированного языка С++ и использовать его на практике.
Владеть:
навыками работы с компьютером;
навыками программирования на языке высокого уровня.
4.
Распределение учебной нагрузки по видам№
Виды учебной работы
Семестр
2, часов
Семестр
3, часов
Всего,
часов
1
Лекции
28
18
64
2
Лабораторные работы
36
36
72
3
Курсовой проект (КРС)
(аудиторная)
36
36
4
Всего аудиторных занятий
(сумма 1 - 3)
64
90
154
5
Самостоятельная работа
студентов (СРС)
44
54
98
6
Общая трудоемкость
(Сумма 4, 5)
108
144
252
5.
5Основы программирования
(на языке Си)
Тема 1. Алгоритм и его свойства
6. Что такое алгоритм?
6Что такое алгоритм?
Алгоритм — это точное описание
порядка действий, которые должен
выполнить исполнитель для решения
задачи за конечное время.
Исполнитель – это устройство или
одушёвленное существо (человек),
способное понять и выполнить
команды, составляющие алгоритм.
Мухаммед ал-Хорезми
(ок. 783–ок. 850 гг.)
Формальные исполнители: не понимают
(и не могут понять) смысл команд.
Латинский перевод книги начинается словами
«Dixit Algorizmi» (сказал Алгоризми). Так как
сочинение об арифметике было очень
популярно в Европе, то латинизированное имя
автора (Algorizmi или Algorizmus) стало
нарицательным
Источник wikipedia.org
7. Свойства алгоритма
7Свойства алгоритма
Дискретность — алгоритм состоит из отдельных команд,
каждая из которых выполняется за конечное время.
Детерминированность (определённость) — при каждом
запуске алгоритма с одними и теми же исходными
данными получается один и тот же результат.
Понятность — алгоритм содержит только команды,
входящие в систему команд исполнителя.
Конечность (результативность) — для корректного
набора данных алгоритм должен завершаться через
конечное время.
Корректность — для допустимых исходных данных
алгоритм должен приводить к правильному результату.
8. Как работает алгоритм?
8Как работает алгоритм?
дискретный
объект
1234
алгоритм
2345
шаг 1
5432
шаг 2
шаг 3
дискретный
объект
25 16 9 4
• получает на вход дискретный объект
• в результате строит другой дискретный объект (или
выдаёт сообщение об ошибке)
• обрабатывает объект по шагам
• на каждом шаге получается новый дискретный объект
9. Способы записи алгоритмов
9Способы записи алгоритмов
• естественный язык
установить соединение
пока не принята команда «стоп»
принять команду
выполнить команду
завершить сеанс связи
• псевдокод
установить соединение
начало цикла
принять команду
выполнить команду
конец цикла при команда = 'stop'
завершить сеанс связи
10. Способы записи алгоритмов
10Способы записи алгоритмов
• блок-схема
установить
соединение
принять
команду
выполнить
команду
нет
«стоп»?
да
завершить
соединение
• программа
установитьСоединение
начало цикла
cmd = получитьКоманду
выполнитьКоманду(cmd)
конец при cmd = 'stop'
закрытьСоединение
11.
11Основы программирования
(на языке Си)
Тема 2. Разработка программ
в среде Qt Creator на языке Си
12.
12Программа
Программа – это
• алгоритм, записанный на каком-либо языке
программирования
• набор команд для компьютера
Команда – это описание действий, которые
должен выполнить компьютер.
• откуда взять исходные данные?
• что нужно с ними сделать?
• куда поместить результат?
13.
13Языки программирования
• Машинно-ориентированные (низкого уровня) каждая команда соответствует одной команде
процессора (ассемблер)
• Языки высокого уровня – приближены к
естественному (английскому) языку, легче
воспринимаются человеком, не зависят от
конкретного компьютера
• для обучения: Бейсик, ЛОГО, Паскаль
• профессиональные: Си, Фортран, Паскаль
• для задач искусственного интеллекта:
Пролог, ЛИСП
• для Интернета: JavaScript, Java, Perl, PHP,
ASP
14.
14Язык Си
1972-1974 – Б. Керниган, Д. Ритчи
• высокая скорость работы программ
• много возможностей
• стал основой многих современных
языков (С++, С#, Javascript, Java,
ActionScript, PHP)
• много шансов сделать ошибку, которая
не обнаруживается автоматически
15.
15Оболочка Qt Creator
IDE = Integrated Development Environment
!
интегрированная среда разработки:
текстовый редактор для создания и
редактирования текстов программ
транслятор для перевода текстов программ
на Си и Си++ в команды процессора
компоновщик для создания исполняемого
файла (EXE-файла), подключаются
стандартные функции
отладчик для поиска ошибок в программах
Распространяется БЕСПЛАТНО:
https://www.qt.io/download-thank-you
16.
16Как появляется программа?
текст программы на Си или Си++
privet.cpp транслятор (компилятор)
privet.o
main()
{
}
исходный файл
!
• по исходному
файлу можно
восстановить
остальные
• исполняемый
файл можно
запустить
ЪБzЦ2?|ё3БКа
n/36ШпIC+ИЦЗ_5МyРЧб
s6bд^:/@:лЖ1_
стандартные
функции
объектный файл
privet.exe
редактор
связей
(компоновка)
MZPо:ЄPэ_еЗ"!_
`кn,ЦbЄ-Щр1
G_БАC,
_Ощях¤9жФ
исполняемый файл
17.
17Версия Qt Creator
Примеры программ будут даны для следующего комплекта:
- среда разработки Qt Creator v. 5.6;
- компилятор MinGW 4.9.2 32 bit.
18.
18Интерфейс Qt Creator
19.
19Режимы работы
Welcome (Начало) — отображает экран приветствия, позволяя
быстро загружать недавние сессии или отдельные проекты. Этот
режим можно увидеть при запуске Qt Creator без указания ключей
командной строки.
Edit (Редактор) — позволяет редактировать файлы проекта и
исходных кодов. Боковая панель слева предоставляет различные
виды для перемещения между файлами.
Debug (Отладка) — предоставляет различные способы для
просмотра состояния программы при отладке.
Projects (Проекты) — используется для настройки сборки, запуска
и редактирования кода.
Help (Справка) — используется для вывода документации
библиотеки Qt и Qt Creator.
20.
20Управление клавишами
Новый файл (Создать)
Ctrl+N
Открыть файл
Ctrl+O
Сохранить файл
Ctrl+S
Закрыть окно с программой
Ctrl-W
Запустить
Ctrl+R
Собрать проект
Ctrl+B
Выход
Ctrl+Q
21.
21Как создать первую программу?
В меню File (Файл) выбрать команду New File or Project (Новый файл или
проект) (комбинация клавиш Ctrl+N).
Выбираем “Проект без Qt” -> “Приложение на языке С”
22.
22Как создать первую программу?
Выбираем имя проекта и каталог для его размещения.
НЕ РЕКОМЕНДУЕТСЯ: выбирать имя файла или каталога для его
! размещения,
содержащие кириллические символы или пробелы!
23.
23Как создать первую программу?
Выбираем систему сборки.
24.
24Как создать первую программу?
Выбираем комплекта компиляции.
25.
25Как создать первую программу?
Настройки управления проектом оставляем без изменений.
Нажимаем кнопку “Завершить”
26.
26Как создать первую программу?
Откомпилировать и запустить программу можно одним из следующих
способов:
1) Пункт меню Сборка-Запустить.
2) Нажать на клавиатуре комбинацию клавиш Ctrl+R;
3) Щёлкнуть по кнопке Запустить
.
27.
27Поиск и обработка ошибок?
эта ошибка
обнаружена
здесь!
!
Ошибка может быть в конце предыдущей строки!
28.
28Наиболее «популярные» ошибки
xxx.h: No such file or directory
не найден заголовочный файл
'xxx.h' (неверно указано его имя,
он удален или т.п.)
'xxx‘ undeclared (first use this
function)
функция или переменная 'xxx'
неизвестна
missing terminating " character
не закрыты кавычки "
expected ;
нет точки с запятой в конце
оператора в предыдущей строке
expected }
не закрыта фигурная скобка
can not open output file …
Permission denied;
Не могу открыть выходной файл
… Доступ запрещен.
- не закрыта предыдущая версия
приложения,
или отсутствуют права записи
указанную директорию
29.
29Основы программирования
(на языке Си)
Тема 3. Простейшие программы
30. Простейшая программа
30Простейшая программа
это основная программа (функция)
комментарии после //
int main()
не обрабатываются
{
// это основная программа
/* здесь записывают
операторы */
return 0;
это тоже комментарий
}
возвращается код ошибки 0
(программа выполнена успешно)
31. Вывод на экран
31Вывод на экран
int main()
{
"\n" – новая строка
printf("2+");
printf("2=?\n");
printf("Ответ: 4");
return 0;
}
Протокол:
2+2=?
Ответ: 4
32. Особенность вывода кириллических символов консольных приложениях Windows
32Особенность вывода кириллических
символов консольных приложениях Windows
#include <stdio.h>
#include <stdlib.h>
подключение
библиотеки stdlib
int main()
{ system("chcp 65001");
printf(“АБВГДЕЁЖЗ…\n");
printf(“абвгдеёжз…\n");
return 0;
}
Изменение
кодовой
таблицы
консоли
c cp866
на UTF-8
33. Сложение чисел
33Сложение чисел
Задача. Ввести с клавиатуры два числа и найти их сумму.
Протокол:
Введите два целых числа
25 30
пользователь
25+30=55
компьютер
компьютер считает сам!
?
1.
2.
3.
4.
Как ввести числа в память?
Где хранить введенные числа?
Как вычислить?
Как вывести результат?
34. Сумма: псевдокод
34Сумма: псевдокод
main()
{
// ввести два числа
// вычислить их сумму
// вывести сумму на экран
}
Псевдокод – алгоритм на
русском языке с элементами
языка программирования.
!
Компьютер не может исполнить псевдокод!
35. Переменные
35Переменные
Переменная – это величина, имеющая имя, тип
и значение. Значение переменной можно
изменять во время работы программы.
Значение
Другой тип
данных
Имя
!
?
Поместится?
В переменной хранятся данные
определенного типа!
36. Имена переменных
36Имена переменных
МОЖНО использовать
• латинские буквы (A-Z, a-z)
заглавные и строчные буквы различаются
• цифры
имя не может начинаться с цифры
• знак подчеркивания _
НЕЛЬЗЯ использовать
• русcкие буквы
• скобки
• знаки +, =, !, ? и др.
Какие имена правильные?
AXby R&B 4Wheel Вася “PesBarbos”
TU154 [QuQu] _ABBA A+B
37. Объявление переменных
37Объявление переменных
Типы переменных:
• int
// целая
• float
// вещественная
• и другие…
выделение
Объявление переменных:
тип – целые
int a, b, c;
места в памяти
список имен
переменных
38. Тип переменной
38Тип переменной
• область допустимых значений
• допустимые операции
• объём памяти
• формат хранения данных
• для предотвращения случайных ошибок
Начальные значения:
int a, b = 1, c = 55;
?
Что в переменной a?
39. Как записать значение в переменную?
39Как записать значение в переменную?
оператор
присваивания
a = 5;
5
!
При записи нового
значения старое
стирается!
Оператор – это команда языка
программирования (инструкция).
Оператор присваивания – это команда для
записи нового значения в переменную.
40. Ввод значения с клавиатуры
40Ввод значения с клавиатуры
5
!
1. Программа ждет, пока пользователь введет
значение и нажмет Enter.
2. Введенное значение записывается в
переменную a.
41. Ввод значения с клавиатуры
41Ввод значения с клавиатуры
функция
ввода
формат
ввода
%d – целое
%f – вещественное
адрес переменной a
scanf ( "%d", &a );
ввести целое число и записать в память
по адресу переменной a
42. Ввод значений двух переменных
42Ввод значений двух переменных
scanf("%d%d", &a, &b);
через пробел:
25 30
через Enter:
25
30
25 a
30 b
25 a
30 b
43. Изменение значений переменной
43Изменение значений переменной
int
a =
b =
a =
b =
a
a, b;
?
5
5;
a + 2;
(a + 2)*(b – 3);
b + 1;
b
5+2
?
7
a
28
5
b
7
8
5
7+1
7*4
44. Вывод данных
44Вывод данных
формат вывода
printf("%d", a);
printf("%d\n", a);
"\n" – новая строка
//вывод значения
//переменной a
//...и переход
//на новую строку
45. Вывод данных
45Вывод данных
printf( "Привет!" );
//вывод текста
printf( "Ответ: %d", c );
//вывод текста и значения переменной c
printf( "%d+%d=%d", a, b, c );
46. Сложение чисел: простое решение
46Сложение чисел: простое решение
#include <stdio.h>
int main()
{
int a, b, c;
scanf( "%d%d", &a, &b );
c = a + b;
printf( "%d", c );
return 0;
}
?
Что плохо?
47. Сложение чисел: полное решение
47Сложение чисел: полное решение
int main()
{
подсказка
int a, b, c;
printf("Введите два целых числа\n");
scanf( "%d%d", &a, &b );
c = a + b;
printf( "%d+%d=%d", a, b, c );
}
Протокол:
компьютер
Введите два целых числа
25 30
пользователь
25+30=55
48. Снова про оператор вывода
48Снова про оператор вывода
Вычисление выражений:
printf( "%d+%d=%d", a, b, a+b );
Форматный вывод:
a = 123;
printf("% 5 d", a);
123
5 знаков
a = 123;
printf("%-5
- d", a);
123
по левому краю
49.
49Основы программирования
(на языке Си)
Тема 4. Вычисления
50. Типы данных
50Типы данных
• int
• long int
• float
• double
• bool
• char
//
//
//
//
//
//
целое
длинное целое
вещественное
веществ. двойной точности
логические значения
символ
51. Арифметическое выражения
51Арифметическое выражения
3
1 2
4
5
6
a = (c + b*5*3 - 1) / 2 * d;
Приоритет (старшинство):
1)скобки
2)умножение и деление
3)сложение и вычитание
c b 5 3 1
a
d
2
52. Деление
52Деление
Результат деления целого на целое – целое число
(остаток отбрасывается):
int a = 3, b = 4;
float x;
x = 3 / 4;
// =
x = 3. / 4; // =
x = 3 / 4.; // =
x = a / 4;
// =
x = a / 4.; // =
x = a / b;
// =
x = float(a) / 4;
x = a / float(b);
?
Что запишется в x?
0
0.75
0.75
0
0.75
0
// = 0.75
// = 0.75
53. Остаток от деления
53Остаток от деления
% – остаток от деления
int a, b, d;
d = 85;
b = d / 10;
//
a = d % 10;
//
d = a % b;
//
d = b % a;
//
8
5
5
3
Для отрицательных чисел:
int a = -7;
b = a / 2; // -3
d = a % 2; // -1
!
В математике не так!
остаток 0
-7 = (-4)*2 + 1
54. Сокращенная запись операций
54Сокращенная запись операций
int a, b;
...
a ++;
//
a --;
//
a += b; //
a -= b; //
a *= b; //
a /= b; //
a %= b; //
a
a
a
a
a
a
a
=
=
=
=
=
=
=
a
a
a
a
a
a
a
+
–
+
*
/
%
1;
1;
b;
b;
b;
b;
b;
55. Вещественные числа
55Вещественные числа
!
Целая и дробная части числа разделяются
точкой!
Форматы вывода:
%f - десятичное число с плавающей точкой
6 цифр в дробной
части
float x = 123.456;
123.456001
printf("%f\n", x );
123.46
printf("%10.2f\n", x );
всего знаков
в дробной части
56. Вещественные числа
56Вещественные числа
%e – экспоненциальный формат
float x;
x = 1./30000;
printf("%e\n", x);
x = 12345678.;
printf("%e\n", x);
3,333333 10–5
3.333333e-005
1.234568e+007
1,234568 107
float x = 123.456;
1.234560e+002
printf("%e\n", x );
printf("%10.2e\n", x ); 1.23e+002
всего знаков
в дробной части
57. Стандартные функции
57Стандартные функции
#include <math.h>
подключить
математическую
библиотеку
abs(x) — модуль целого числа
fabs(x) — модуль вещественного числа
sqrt(x) — квадратный корень
sin(x) — синус угла, заданного в радианах
cos(x) — косинус угла, заданного в радианах
exp(x) — экспонента ех
ln(x)
— натуральный логарифм
pow(x,y) — xy: возведение числа x в степень y
floor(x) — округление «вниз»
ceil(x) — округление «вверх»
float x;
x = floor(1.6);// 1
x = ceil(1.6); // 2
x = floor(-1.6);//-2
x = ceil(-1.6); //-1