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

Содержание

Слайд 2

Цели и задачи дисциплины, её место в учебном процессе: 1.1 Цели

Цели и задачи дисциплины, её место в учебном процессе:
1.1 Цели

изучения дисциплины
Целью изучения дисциплины «Основы программирования» является обеспечение необходимого уровня компетенций студентов-бакалавров специальности 11.03.03 - «Конструирование и технология электронных средств» в области современных информационных технологий обработки и хранения информации, основ алгоритмизации и прикладного программирования с использованием языков программирования высокого уровня.
1.2 Задачи изучения дисциплины
- знакомство c основными принципами организации записи, хранения и чтения информации;
- овладение компьютерными методами сбора, хранения и обработки информации;
- знакомство с понятием алгоритма и алгоритмическими системами;
- получение практических навыков программирования на языках программирования высокого уровня.
Слайд 3

В результате изучения дисциплины студент должен Знать: основы информационных технологий и

В результате изучения дисциплины студент должен
Знать:
основы информационных технологий и требования

к информационной безопасности;
принципы организации записи, хранения и чтения информации в ЭВМ;
принципы алгоритмизации и программирования;
синтаксис языка программирования С/C++;
основы алгоритмического и структурного программирования.
основы информационных технологий и требования к информационной безопасности.
Уметь:
разрабатывать алгоритмы решения задач;
работать с программными средствами общего назначения;
разрабатывать программное обеспечение средствами объектно-ориентированного языка С++ и использовать его на практике.
Владеть:
навыками работы с компьютером;
навыками программирования на языке высокого уровня.
Слайд 4

Распределение учебной нагрузки по видам

Распределение учебной нагрузки по видам

Слайд 5

Тема 1. Алгоритм и его свойства Основы программирования (на языке Си)

Тема 1. Алгоритм и его свойства

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

Слайд 6

Что такое алгоритм? Алгоритм — это точное описание порядка действий, которые

Что такое алгоритм?

Алгоритм — это точное описание порядка действий, которые должен

выполнить исполнитель для решения задачи за конечное время.

Исполнитель – это устройство или одушёвленное существо (человек), способное понять и выполнить команды, составляющие алгоритм.

Формальные исполнители: не понимают (и не могут понять) смысл команд.

Латинский перевод книги начинается словами «Dixit Algorizmi» (сказал Алгоризми). Так как сочинение об арифметике было очень популярно в Европе, то латинизированное имя автора (Algorizmi или Algorizmus) стало нарицательным
Источник wikipedia.org

Слайд 7

Свойства алгоритма Дискретность — алгоритм состоит из отдельных команд, каждая из

Свойства алгоритма

Дискретность — алгоритм состоит из отдельных команд, каждая из которых

выполняется за конечное время.
Детерминированность (определённость) — при каждом запуске алгоритма с одними и теми же исходными данными получается один и тот же результат.
Понятность — алгоритм содержит только команды, входящие в систему команд исполнителя.
Конечность (результативность) — для корректного набора данных алгоритм должен завершаться через конечное время.
Корректность — для допустимых исходных данных алгоритм должен приводить к правильному результату.
Слайд 8

Как работает алгоритм? дискретный объект 1 2 3 4 алгоритм шаг

Как работает алгоритм?

дискретный
объект
1 2 3 4

алгоритм

шаг 1

шаг 2

шаг 3

2 3

4 5

5 4 3 2

дискретный
объект
25 16 9 4

получает на вход дискретный объект
в результате строит другой дискретный объект (или выдаёт сообщение об ошибке)
обрабатывает объект по шагам
на каждом шаге получается новый дискретный объект

Слайд 9

Способы записи алгоритмов естественный язык псевдокод установить соединение пока не принята

Способы записи алгоритмов

естественный язык
псевдокод

установить соединение
пока не принята команда «стоп»
принять команду

выполнить команду
завершить сеанс связи

установить соединение
начало цикла
принять команду
выполнить команду
конец цикла при команда = 'stop'
завершить сеанс связи

Слайд 10

Способы записи алгоритмов блок-схема установитьСоединение начало цикла cmd = получитьКоманду выполнитьКоманду(cmd)

Способы записи алгоритмов

блок-схема

установитьСоединение
начало цикла
cmd = получитьКоманду
выполнитьКоманду(cmd)
конец при cmd

= 'stop'
закрытьСоединение

программа

Слайд 11

Тема 2. Разработка программ в среде Qt Creator на языке Си Основы программирования (на языке Си)

Тема 2. Разработка программ
в среде Qt Creator на языке Си

Основы программирования (на

языке Си)
Слайд 12

Программа Программа – это алгоритм, записанный на каком-либо языке программирования набор

Программа

Программа – это
алгоритм, записанный на каком-либо языке программирования
набор команд для

компьютера

Команда – это описание действий, которые должен выполнить компьютер.
откуда взять исходные данные?
что нужно с ними сделать?
куда поместить результат?

Слайд 13

Языки программирования Машинно-ориентированные (низкого уровня) - каждая команда соответствует одной команде

Языки программирования

Машинно-ориентированные (низкого уровня) - каждая команда соответствует одной команде процессора

(ассемблер)
Языки высокого уровня – приближены к естественному (английскому) языку, легче воспринимаются человеком, не зависят от конкретного компьютера
для обучения: Бейсик, ЛОГО, Паскаль
профессиональные: Си, Фортран, Паскаль
для задач искусственного интеллекта: Пролог, ЛИСП
для Интернета: JavaScript, Java, Perl, PHP, ASP
Слайд 14

Язык Си 1972-1974 – Б. Керниган, Д. Ритчи высокая скорость работы

Язык Си

1972-1974 – Б. Керниган, Д. Ритчи
высокая скорость работы программ
много возможностей
стал

основой многих современных языков (С++, С#, Javascript, Java, ActionScript, PHP)
много шансов сделать ошибку, которая не обнаруживается автоматически
Слайд 15

Оболочка Qt Creator IDE = Integrated Development Environment интегрированная среда разработки:

Оболочка Qt Creator

IDE = Integrated Development Environment
интегрированная среда разработки:
текстовый редактор

для создания и редактирования текстов программ
транслятор для перевода текстов программ на Си и Си++ в команды процессора
компоновщик для создания исполняемого файла (EXE-файла), подключаются стандартные функции
отладчик для поиска ошибок в программах
Слайд 16

Как появляется программа? main() { } privet.cpp исходный файл privet.o транслятор

Как появляется программа?

main()
{
}

privet.cpp

исходный файл

privet.o

транслятор (компилятор)

ЪБzЦ2?|ё3БКа
n/36ШпIC+И-
ЦЗ_5МyРЧб
s6bд^:/@:лЖ1_

объектный файл

стандартные функции

редактор связей
(компоновка)

исполняемый файл

текст программы на Си

или Си++

MZPо:ЄPэ_еЗ"!_
`кn,ЦbЄ-Щр1 
G_БАC,
_Ощях¤9жФ

privet.exe

Слайд 17

Версия Qt Creator Примеры программ будут даны для следующего комплекта: -

Версия Qt Creator

Примеры программ будут даны для следующего комплекта:
- среда

разработки Qt Creator v. 5.6;
- компилятор MinGW 4.9.2 32 bit.
Слайд 18

Интерфейс Qt Creator

Интерфейс Qt Creator

Слайд 19

Режимы работы Welcome (Начало) — отображает экран приветствия, позволяя быстро загружать

Режимы работы
Welcome (Начало) — отображает экран приветствия, позволяя быстро загружать недавние сессии

или отдельные проекты. Этот режим можно увидеть при запуске Qt Creator без указания ключей командной строки.
Edit (Редактор) — позволяет редактировать файлы проекта и исходных кодов. Боковая панель слева предоставляет различные виды для перемещения между файлами.
Debug (Отладка) — предоставляет различные способы для просмотра состояния программы при отладке.
Projects (Проекты) — используется для настройки сборки, запуска и редактирования кода.
Help (Справка) — используется для вывода документации библиотеки Qt и Qt Creator.
Слайд 20

Управление клавишами

Управление клавишами

Слайд 21

Как создать первую программу? В меню File (Файл) выбрать команду New

Как создать первую программу?

В меню File (Файл) выбрать команду New File or Project (Новый файл

или проект) (комбинация клавиш Ctrl+N).

Выбираем “Проект без Qt” -> “Приложение на языке С”

Слайд 22

Как создать первую программу? Выбираем имя проекта и каталог для его размещения.

Как создать первую программу?

Выбираем имя проекта и каталог для его размещения.

Слайд 23

Как создать первую программу? Выбираем систему сборки.

Как создать первую программу?

Выбираем систему сборки.

Слайд 24

Как создать первую программу? Выбираем комплекта компиляции.

Как создать первую программу?

Выбираем комплекта компиляции.

Слайд 25

Как создать первую программу? Настройки управления проектом оставляем без изменений. Нажимаем кнопку “Завершить”

Как создать первую программу?

Настройки управления проектом оставляем без изменений.

Нажимаем кнопку “Завершить”

Слайд 26

Как создать первую программу? Откомпилировать и запустить программу можно одним из

Как создать первую программу?

Откомпилировать и запустить программу можно одним из следующих

способов:
Пункт меню Сборка-Запустить.
Нажать на клавиатуре комбинацию клавиш Ctrl+R;
Щёлкнуть по кнопке Запустить .
Слайд 27

Поиск и обработка ошибок? эта ошибка обнаружена здесь!

Поиск и обработка ошибок?

эта ошибка обнаружена здесь!

Слайд 28

Наиболее «популярные» ошибки

Наиболее «популярные» ошибки

Слайд 29

Тема 3. Простейшие программы Основы программирования (на языке Си)

Тема 3. Простейшие программы

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

Слайд 30

Простейшая программа int main() { // это основная программа /* здесь

Простейшая программа

int main()
{
// это основная программа
/* здесь записывают

операторы */
return 0;
}

это основная программа (функция)

комментарии после // не обрабатываются

это тоже комментарий

возвращается код ошибки 0 (программа выполнена успешно)

Слайд 31

Вывод на экран int main() { printf("2+"); printf("2=?\n"); printf("Ответ: 4"); return

Вывод на экран

int main()
{
printf("2+");
printf("2=?\n");
printf("Ответ: 4");
return

0;
}

Протокол:
2+2=?
Ответ: 4

"\n" – новая строка

Слайд 32

Особенность вывода кириллических символов консольных приложениях Windows #include #include int main()

Особенность вывода кириллических символов консольных приложениях Windows

#include
#include
int main()
{ system("chcp

65001");
printf(“АБВГДЕЁЖЗ…\n");
printf(“абвгдеёжз…\n");
return 0;
}

подключение библиотеки stdlib

Изменение кодовой таблицы консоли
c cp866
на UTF-8

Слайд 33

Сложение чисел Задача. Ввести с клавиатуры два числа и найти их

Сложение чисел

Задача. Ввести с клавиатуры два числа и найти их сумму.

Протокол:

Введите два целых числа
25 30
25+30=55

компьютер

пользователь

компьютер считает сам!

Слайд 34

Сумма: псевдокод main() { // ввести два числа // вычислить их

Сумма: псевдокод

main()
{
// ввести два числа
// вычислить их сумму


// вывести сумму на экран
}

Псевдокод – алгоритм на русском языке с элементами языка программирования.

Слайд 35

Переменные Переменная – это величина, имеющая имя, тип и значение. Значение

Переменные

Переменная – это величина, имеющая имя, тип и значение. Значение переменной

можно изменять во время работы программы.

a

Значение

Имя

Другой тип данных

Слайд 36

Имена переменных МОЖНО использовать латинские буквы (A-Z, a-z) цифры знак подчеркивания

Имена переменных

МОЖНО использовать
латинские буквы (A-Z, a-z)
цифры
знак подчеркивания _

заглавные и строчные буквы

различаются

НЕЛЬЗЯ использовать
русcкие буквы
скобки
знаки +, =, !, ? и др.

имя не может начинаться с цифры

Какие имена правильные?
AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B

Слайд 37

Объявление переменных Типы переменных: int // целая float // вещественная и

Объявление переменных

Типы переменных:
int // целая
float // вещественная
и другие…

Объявление переменных:

int a, b,

c;

выделение места в памяти

тип – целые

список имен переменных

Слайд 38

Тип переменной область допустимых значений допустимые операции объём памяти формат хранения

Тип переменной

область допустимых значений
допустимые операции
объём памяти
формат хранения данных
для предотвращения случайных ошибок

int

a, b = 1, c = 55;

Начальные значения:

Слайд 39

Как записать значение в переменную? a = 5; оператор присваивания 5

Как записать значение в переменную?

a = 5;

оператор присваивания

5

Оператор – это команда

языка программирования (инструкция).
Оператор присваивания – это команда для записи нового значения в переменную.

a

Слайд 40

Ввод значения с клавиатуры 5 a

Ввод значения с клавиатуры

5

a

Слайд 41

Ввод значения с клавиатуры scanf ( "%d", &a ); функция ввода

Ввод значения с клавиатуры

scanf ( "%d", &a );

функция ввода

формат ввода

%d –

целое
%f – вещественное

адрес переменной a

Слайд 42

Ввод значений двух переменных через пробел: 25 30 через Enter: 25 30 scanf("%d%d", &a, &b);

Ввод значений двух переменных

через пробел:
25 30
через Enter:
25
30

scanf("%d%d", &a,

&b);
Слайд 43

Изменение значений переменной int a, b; a = 5; b =

Изменение значений переменной

int a, b;
a = 5;
b = a + 2;
a

= (a + 2)*(b – 3);
b = b + 1;

a

?

5

5

b

?

5+2

7

a

5

7*4

28

b

7

7+1

8

Слайд 44

Вывод данных //вывод значения //переменной a //...и переход //на новую строку

Вывод данных

//вывод значения //переменной a

//...и переход
//на новую строку

printf("%d", a);

формат вывода

printf("%d\n",

a);

"\n" – новая строка

Слайд 45

Вывод данных //вывод текста //вывод текста и значения переменной c printf(

Вывод данных

//вывод текста

//вывод текста и значения переменной c

printf( "Привет!" );

printf( "Ответ:

%d", c );

printf( "%d+%d=%d", a, b, c );

Слайд 46

Сложение чисел: простое решение #include int main() { int a, b,

Сложение чисел: простое решение

#include
int main()
{
int a, b, c;
scanf(

"%d%d", &a, &b );
c = a + b;
printf( "%d", c );
return 0;
}
Слайд 47

Сложение чисел: полное решение int main() { int a, b, c;

Сложение чисел: полное решение

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

Снова про оператор вывода a = 123; printf("% 5 d", a);

Снова про оператор вывода

a = 123;
printf("% 5 d", a);

Форматный вывод:

Вычисление выражений:

printf(

"%d+%d=%d", a, b, a+b );

a+b

a = 123;
printf("%-5 d", a);

Слайд 49

Основы программирования (на языке Си) Тема 4. Вычисления

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

Тема 4. Вычисления

Слайд 50

Типы данных int // целое long int // длинное целое float

Типы данных

int // целое
long int // длинное целое
float //

вещественное
double // веществ. двойной точности
bool // логические значения
char // символ
Слайд 51

Арифметическое выражения a = (c + b*5*3 - 1) / 2

Арифметическое выражения

a = (c + b*5*3 - 1) / 2 *

d;

Приоритет (старшинство):
скобки
умножение и деление
сложение и вычитание

1

2

3

4

5

6

Слайд 52

Деление Результат деления целого на целое – целое число (остаток отбрасывается):

Деление

Результат деления целого на целое – целое число (остаток отбрасывается):

int a

= 3, b = 4;
float x;
x = 3 / 4; // = 0
x = 3. / 4; // = 0.75
x = 3 / 4.; // = 0.75
x = a / 4; // = 0
x = a / 4.; // = 0.75
x = a / b; // = 0
x = float(a) / 4; // = 0.75
x = a / float(b); // = 0.75
Слайд 53

Остаток от деления % – остаток от деления int a, b,

Остаток от деления

% – остаток от деления

int a, b, d;
d =

85;
b = d / 10; // 8
a = d % 10; // 5
d = a % b; // 5
d = b % a; // 3

Для отрицательных чисел:

int a = -7;
b = a / 2; // -3
d = a % 2; // -1

-7 = (-4)*2 + 1

остаток ≥ 0

Слайд 54

Сокращенная запись операций int a, b; ... a ++; // a

Сокращенная запись операций

int a, b;
...
a ++; // a = a +

1;
a --; // a = a – 1;
a += b; // a = a + b;
a -= b; // a = a - b;
a *= b; // a = a * b;
a /= b; // a = a / b;
a %= b; // a = a % b;
Слайд 55

Вещественные числа Форматы вывода: float x = 123.456; printf("%f\n", x );

Вещественные числа

Форматы вывода:

float x = 123.456;
printf("%f\n", x );
printf("%10.2f\n", x );

123.456001

всего знаков

в

дробной части

6 цифр в дробной части

%f - десятичное число с плавающей точкой

Слайд 56

Вещественные числа float x; x = 1./30000; printf("%e\n", x); x =

Вещественные числа

float x;
x = 1./30000;
printf("%e\n", x);
x = 12345678.;
printf("%e\n", x);

3.333333e-005

1.234568e+007

3,333333 ⋅ 10–5

float

x = 123.456;
printf("%e\n", x );
printf("%10.2e\n", x );

1.234560e+002

1,234568 ⋅ 107

всего знаков

в дробной части

%e – экспоненциальный формат