Что такое алгоритм?
Свойства алгоритма
Как работает алгоритм?
Способы записи алгоритмов
Способы записи алгоритмов
Простейшая программа
Вывод на экран
Особенность вывода кириллических символов консольных приложениях Windows
Сложение чисел
Сумма: псевдокод
Переменные
Имена переменных
Объявление переменных
Тип переменной
Как записать значение в переменную?
Ввод значения с клавиатуры
Ввод значения с клавиатуры
Ввод значений двух переменных
Изменение значений переменной
Вывод данных
Вывод данных
Сложение чисел: простое решение
Сложение чисел: полное решение
Снова про оператор вывода
Типы данных
Арифметическое выражения
Деление
Остаток от деления
Сокращенная запись операций
Вещественные числа
Вещественные числа
Стандартные функции
1.66M
Category: programmingprogramming

Основы программирования (на языке Си)

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
English     Русский Rules