7.55M
Category: programmingprogramming

Основы алгоритмизации и программирование

1.

Основы алгоритмизации и программирование
ФИСТ УлГТУ 1 курс
Осень 2024
Лекция 1
Знакомство.
Знакомство с Си.
Комментарии. Переменные. Вывод и Ввод переменных.
ЛР 1. (Лабораторная работа №1). Текстовый вывод.
ЛР 2. Ввод и вывод переменных.
Власенко Олег Федосович
SimbirSoft

2.

О себе
Власенко Олег Федосович
Должности:
SimbirSoft – Заместитель генерального директора
УлГТУ – Заведующий базовой кафедры
Компетенции:
Разработка ПО + Обучение + Менеджмент
Образование:
Техническое (ИТ) (УлГТУ - 1995)
и
Управленческое (УлГУ - 2011, OU UK - 2017, MBA ЛИНК - 2020)
Опыт работы:
Разрабатываю ПО с 1993 года (30+ лет)
Преподаю с 1997 года (27 лет)
https://vk.com/oleg.f.vlasenko

3.

О SimbirSoft
• SimbirSoft - крупнейшая в регионе ИТ компания
(1700+ сотрудников, из них 300+ в Ульяновске) –
входим в 50 самых крупных ИТ компаний РФ
• Разработка заказного сложного ПО
• Лидеры по темпам роста в РФ (в 2015-2021 годах)
• https://www.simbirsoft.com/

4.

Зачем я здесь от SimbirSoft?
• Нам нужны разработчики – программисты,
тестировщики, аналитики, руководители групп (тимлиды), верстальщики и много, много, много др.
• 90+% разработчиков имеют высшее образование.
• Но далеко не 100% поступивших на ФИСТ доходят до
ИТ работы.
• Я здесь чтобы увеличить вероятность для каждого из
поступивших на ФИСТ на то, что он(а) станет
профессиональным Итишником не только по
диплому, но и фактически.
• В конце концов – чтобы в SimbirSoft пришло много
(десятки и сотни) выпускников этого курса.

5.

Зачем я здесь?
• Мне это нравится. Я ощущаю, что я делаю что-то
важное и полезное.
• Я помогаю людям стать профи.
Во-первых, помогаю выбрать именно ИХ ПУТЬ,
во-вторых – если их путь – это путь в ИТ помогаю стать ИТ профи.
• Я считаю, что реализоваться, состояться как
профи, быть нужным, полезным - это правильно!

6.

Что будет сегодня?
Знакомство со мной DONE
Знакомство с курсом
Знакомство с Си
Язык Си:
– Комментарии
– Переменные
– Вывод строк
– Ввод и вывод переменных
• Разбор Лабораторных работа №1 и №2
• Решение технических вопросов
• Ответы на вопросы

7.

Формат
• Основное время (80 минут!)
– Очень бегло по вспомогательным пунктам
– Основательно по ключевым
– Достаточно по Лабораторным работам
• Дополнительное время (X минут!)
– Ответы на вопросы по ключевым пунктам
– Ответы на вопросы по лабораторным работам
– Ответы на вопросы по вспомогательным пунктам
– Ответы на любые иные вопросы – если они уместны и на них
осталось время

8.

Что будет на курсе?
• Основы программирования – в том числе создание кода, отладка,
тестирование
• Основы алгоритмизации
• Введение в язык программирования Си
• Знакомство с IDE Microsoft Visual Studio
• Знакомство с некоторыми возможностями Windows API
Лекции – 16+3*
Лабораторные работы – 24+2*
Вы напишите 2000+ строк кода в 100+ простых программах.
Создадите игру** или даже две***

9.

Лекции

Что на лекции разбирается
1 Знакомство.

9
10
Знакомство с Си.
2
Цикл DO WHILE.
3
4
5
Блок-схемы. Трассировка программы.
Графика в Windows
Функции
Управление:
6
IF, GOTO, DO WHILE, WHILE, RETURN, CONTINUE, BREAK,
SWITCH, вложенные циклы.
Типы данных.
Рисование с использованием Polyline/Polygon.
7
8
Анимация при помощи таймера
Одномерные массивы. FOR
Двухмерные массивы
Рекурсия
Оперативная память.
Разделы оперативной памяти.
Комментарии. Переменные. Вывод и Ввод
переменных.
Развилка – полная и усеченная.
Логические операции.
Что на лекции разбирается
Динамическая память.
11
Динамические структуры данных: Связанный список.
Символы. Строки. Текстовые файлы.
12
Кодировки.
Многомодульные проекты.
Процесс компиляции программы.
13
Текстовые файлы. HTML.
Поиск и сортировка.
Линейный и бинарный поиск [в массиве].
Сортировка.
14
Эффективность алгоритмов.
АТД. АТД: Словарь.
Динамические структуры данных - 2:
15
16
Двоичное дерево поиска. Хэш.
Обзор языка Си
Подготовка к экзамену.
Завершение курса.

10.

Лабораторные работы
Номер
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25*
26*
Наименование лабораторной работы
Вывод текста в консоль
Ввод и вывод переменных. Вычисление выражений
Развилки
Цикл DO WHILE
Рисование с использованием графических примитивов
Рисование при помощи DO WHILE
Упаковываем в функции ранее написанный код
Используем функции для рисования множества объектов
Использование SWITCH и WHILE
Вложенные циклы
Использование массивов в Polyline и Polygon
Использование struct. Анимация при помощи таймера.
Простейшие операции с одномерным массивом
Операции, изменяющие длину массива
Простейшие операции с двухмерными массивами
Применение двухмерных массивов в играх
Знакомство с рекурсией
Фракталы
Динамические массивы
Связанный список
Работа с файлами
Обработка строк и символов
Обработка текстовых файлов
Создание HTML из текстовых файлов
Исследование сортировок
Исследование реализаций Словаря.

11.

Индивидуальные проекты**
Индивидуальный проект №1** «Простая игра»
Игра на основе одномерных массивов, структур и других конструкций,
изученных в ходе курса. Есть подробная пошаговая инструкция как это
сделать.
Номер
этапа
1
2
3
4
Название этапа
Выбор варианта игры. Отрисовка всех объектов.
Перенос всего в функции. Режимы и Экраны.
Управление героями.
Делаем персонажей много. Сохранение/загрузка состояния
Индивидуальный проект №2** «Игра на основе двухмерного массива»
Студентам предлагается задание – выбрать вариант с игрой на основе
двухмерного массива («Тетрис», «Сапер» и т.п.) и самостоятельно
реализовать эту игру до конца учебного семестра.

12.

Что это вам даст?
(если вы это возьмете, конечно)
• Основы программирования – возможность изучать ИТ дальше!
Возможность реально самостоятельно писать программы!
• Введение в язык программирования Си – возможность изучать
Си, С++, Java, C#, и много-много других языков.
• Знакомство с IDE Microsoft Visual Studio – быстрое начало
работы с C++, C#, Visual Basic и др.
• Знакомство с некоторыми возможностями Windows API –
базовые представления о том, что такое Операционная
система, что такое API, знакомство с GUI с точки зрения
программиста.
• ИТОГО – знаете ОСНОВЫ ПРОГРАММИРОВАНИЯ – можете
дальше развиваться в ИТ в любой специализации. Не знаете –
ХОДА в ИТ ДАЛЬШЕ ПРАКТИЧЕСКИ НЕТ!

13.

14.

А что будет после ОП?***
Какие темы нужно изучить?
Какие предметы предстоит изучить?
Что нужно знать для того, чтобы получить
«работу мечты»?

15.

Что нужно знать для того, чтобы получить «работу мечты»?
Как освоить бэкенд-разработку в 2022 году: дорожная карта https://tproger.ru/articles/backend-roadmap-2021/

16.

Что нужно знать для того, чтобы получить «работу мечты»?
Как освоить фронтенд-разработку в 2022 году: дорожная карта https://tproger.ru/articles/frontend-roadmap-2021/

17.

Какие темы нужно изучить чтобы стать «ИТишником»?
База для базы:
- Базовая (школьная) математика
- Дискретная математика (множества, графы, мат логика и т.п.)
- Английский язык (хотя бы до уровня – читаю и понимаю текст HELP/документации без словаря
и без переводчика)
- Основы программирования (переменные/массивы/структуры, развилки/циклы/вложенные
конструкции, вызовы подпрограмм, работа с консолью/файлами, 2000+ строк кода, и др)
Общая база для любой специализации в ИТ:
- Основы цифровых устройств (основы электроники и цифровой схемотехники)
- Машинно-ориентированное программирование (assembler)
- Операционные системы (ОС)
- Алгоритмы и структуры данных
- ООП (объектно-ориентированное программирование/проектирование/парадигма)
- Базы данных (СУБД, SQL)
- Основы интернета (HTTP, HTML и многое другое)
- 3-5+ языков программирования (на уровне «знаком и написал 2000+ строк на каждом») –
скорее всего что-то из следующих: C, C++, C#, Java, JavaScript, PHP, Python, Visual Basic, Swift, Go,
Fortran, Kotlin
Специализация:
- см. предыдущие слайды и 100500+ других RoadMap «Как стать XXX-программистом»

18.

Какие предметы предстоит изучить? ***
Скорее всего – ваш список предметов будет отличаться!
Высшая математика
Теория вероятностей и математическая
статистика
Дискретная математика
Математическая логика и теория
алгоритмов
Теоретические основы информатики
Технологии программирования
Организация ЭВМ и системы
Базы данных
Проектирование и архитектура
программных систем
Конструирование программного
обеспечения
Тестирование программного обеспечения
Проектный практикум
Экономика и управление проектом
Иностранный язык
Теория автоматов и формальных языков
Основы теории систем
Аналитическая геометрия
Численные методы
Информационные системы и технологии
Компьютерная графика
Интернет-программирование
Компонентно-ориентированное
программирование
Распределенные вычисления и
приложения
Системное программное обеспечение
Информационная безопасность
Введение в системный анализ
Проектирование человеко-машинного
интерфейса
Алгоритмы и структуры данных
Сети и телекоммуникации
Теоретические основы управления
знаниями
Исследование операций
Системы управления базами данных
Методы искусственного интеллекта
Операционные системы

19.

20.

Вернемся к ОП.
«Правила игры»
При каких условиях курс поможет вам изучить основы
программирования:
1. Очное посещение лабораторных работ
2. Личная работа в классе
3. Домашние работы – делаете ДО следующей встречи в классе. И
приносите на следующую лабораторную работу
4. Лекции – смотрите и пробуете тут же сделать то, что обсуждаем
на занятии
5. Если что-то пошло не так и вы не смогли присутствовать на занятии –
отработка по презентациям и видеозаписям ASAP (as soon as possible).
6. Если «затык» - потратили 2-3 часа и не получилось - ищите помощь
(однокурсники, преподаватель, ваш куратор, репетитор)
7.
8.
!!!! На базовом уровне мало смысла читать книги. Нужен навык, а он
по книгам не формируется. Поэтому лучше живые консультанты! И
много-много-много времени на решение задач.
!!!!!!! Книги будут очень полезны, когда будет база и нужно будет
понять «а что там внутри?»

21.

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

22.

Основы программирования
• Почему «на Си»?

23.

Си
• C (рус. Си) — компилируемый статически типизированный язык
программирования общего назначения, разработанный в 1969—1973 годах
сотрудником Bell Labs Деннисом Ритчи как развитие языка Би.
Первоначально был разработан для реализации операционной системы
UNIX, но, впоследствии, был перенесён на множество других платформ.
Благодаря близости по скорости выполнения программ, написанных на Си,
к языку ассемблера, этот язык получил широкое применение при создании
системного программного обеспечения и прикладного программного
обеспечения для решения широкого круга задач. Язык программирования С
оказал существенное влияние на развитие индустрии программного
обеспечения, а его синтаксис стал основой для таких языков
программирования, как C++, C#, Java и D.
https://ru.wikipedia.org/wiki/%D0%A1%D0%B8_%28%D1%8F%D0%B7%D1%8B%D0%BA_%D
0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%B
E%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29

24.

Языки программирования 8/2024
https://www.tiobe.com/tiobe-index/

25.

Какие популярные языка
произошли от Си
Язык
Место в TIOBE Index
(01/2024)
Место в TIOBE Index
(08/2024)
Степень
родства
C
2
3
0
C++
3
2
1
Java
4
4
2
C#
5
5
2
JavaScript
6
6
3
PHP
7
13
3
Objective-C
34
33
1

26.

На чем будем писать?
• MS Visual Studio Community
??/2019/2017/2015
или
• MS Visual Studio Express 2015 для Windows
Desktop
или
???

27.

28.

Лабораторная работа №1
Задача 0. Hello world
Задача 1. Вывод информации об ученике
Задача 2. Вывод информации об ученике в обратном порядке
Задача 3. Вывод информации об ученике и в прямом и в
обратном порядке
Задача 4. В консоли при помощи printf сформирован красивый
рисунок, например такой:

29.

Лабораторная работа №1
Задача 0. Hello world
Задача 1. Вывод информации об ученике
Задача 2. Вывод информации об ученике в обратном порядке
Задача 3. Вывод информации об ученике и в прямом и в
обратном порядке
Задача 4. В консоли при помощи printf сформирован красивый
рисунок, например такой:

30.

Задача 0. Простейшая программа на Си
#include <stdio.h>
void main()
{
printf("Hello world!");
}

31.

Задача 0. Ввод простейшей программы

32.

Задача 0. Запуск простейшей программы

33.

Задача 0. Hello World
1.
2.
3.
4.
5.
6.
7.
Запускаем MS VS (Microsoft Visual Studio)
Создаем проект
Добавляем файл для исходного кода
Набираем текст программы
Запускаем программу на выполнение
Побороть закрывающуюся консоль! (Если надо!!!)
Наслаждаемся видом работающей программы!

34.

Hello World.1

35.

Hello World.2.1

36.

Hello World.2.2

37.

Hello World.2.3

38.

Hello World.2.4

39.

Hello World.2.5

40.

Hello World.3.1

41.

Hello World.3.2

42.

Hello World.3.3

43.

Hello World.3.4

44.

Hello World.3.5

45.

Hello World.4

46.

Hello World.5

47.

Задача 0. Hello World
1.
2.
3.
4.
5.
6.
7.
Запускаем MS VS (Microsoft Visual Studio)
Создаем проект
Добавляем файл для исходного кода
Набираем текст программы
Запускаем программу на выполнение
Побороть закрывающуюся консоль! (Если надо!!!)
Наслаждаемся видом работающей программы!

48.

Hello World.6.1
«Visual Studio — Если консоль открывается и сразу закрывается»
https://objectone.ru/c/mvs-2012/visual-studio-esli-konsol-otkryvaetsya-i-srazuzakryvaetsya/

49.

Hello World.6.2
«Visual Studio — Если консоль открывается и сразу закрывается»
https://objectone.ru/c/mvs-2012/visual-studio-esli-konsol-otkryvaetsya-i-srazuzakryvaetsya/

50.

Hello World.6.3
«Visual Studio — Если консоль открывается и сразу закрывается»
https://objectone.ru/c/mvs-2012/visual-studio-esli-konsol-otkryvaetsya-i-srazuzakryvaetsya/

51.

Hello World.6.4
«Visual Studio — Если консоль открывается и сразу закрывается»
https://objectone.ru/c/mvs-2012/visual-studio-esli-konsol-otkryvaetsya-i-srazuzakryvaetsya/

52.

Hello World.6.5
«Visual Studio — Если консоль открывается и сразу закрывается»
https://objectone.ru/c/mvs-2012/visual-studio-esli-konsol-otkryvaetsya-i-srazuzakryvaetsya/

53.

Hello World.7

54.

Hello World – код программы
#include <stdio.h>
void main()
{
printf("Hello World!");
}

55.

Hello World – код программы
#include <stdio.h> // подключение стандартной библиотеки
void main() // точка входа в программу
{ // начало тела функции main
printf("Hello World!"); // вызов функции printf
} // конец тела функции main

56.

Hello World – код программы
#include <stdio.h> // подключение стандартной библиотеки
void main() // точка входа в программу
{ // начало тела функции main
printf("Hello World!"); // вызов функции printf
} // конец тела функции main

57.

Hello World – код программы
#include <stdio.h> // подключение стандартной библиотеки
// директива #include - включение в исходный код программы
// текста заголовочного файла stdio.h
// в заголовочном файле stdio.h объявлена функция printf
void main() // точка входа в программу
// void main() - заголовок функции main
// void – функция main не возвращает значений
// () – функция main не получает параметров (аргументов)
{ // начало тела функции main
printf("Hello World!"); // вызов функции printf
// printf – имя вызываемой функции
// ("Hello World!") – фактические параметры, передаваемые
// в функцию printf
// "Hello World!" – строка форматирования printf - что будет выведено
} // конец тела функции main

58.

59.

Задача 1. Всё обо мне!

60.

Задача 1. Всё обо мне! (выполнение)

61.

Задача 2. Всё обо мне! (наоборот!)
Перемещение по редактору – стрелки, Home, End
Выделение текста – зажатый Shift ПЛЮС перемещение
Вырезать выделенный текст – Ctrl + X
Перемещение по редактору – стрелки, Home, End
Вставить ранее вырезанный текст – Ctrl + V
Отмена неудачного действия – Ctrl + Z

62.

Задача 3. Всё обо мне – часть 3
Перемещение по редактору – стрелки, Home, End
Выделение текста – зажатый Shift ПЛЮС перемещение
Скопировать выделенный текст – Ctrl + C
Перемещение по редактору – стрелки, Home, End
Вставить ранее вырезанный текст – Ctrl + V
Отмена неудачного действия – Ctrl + Z

63.

ЛР 1: Задания на закрепление и отработку
1.
Выкачать и установить на личном компьютере MS VS
2.
Если на личном компьютере нет возможности установить MS VS –
решить эту проблему, добыв доступ к компьютеру, где MS VS можно
установить, либо она уже установлена.
3.
Задача 4. При помощи printf и различных символов создать картинку –
логотип или что-то иное красивое.
4.
Принести в класс на следующее занятие домашнюю работу (Задачу 4) и
продемонстрировать ваши наработки преподавателю.

64.

Важная информация по файлам
Где хранится файл с вашим кодом:
1. Выберите пункт «Сохранить _____ как…»

65.

Важная информация.2
2. Ткните мышкой в папку

66.

Важная информация.3
3. Будет выделено полное имя папки в которой находится файл с исходным
кодом
4. Нажмите Ctrl+C чтобы скопировать полное имя папки в буфер обмена.

67.

Важная информация.4
5. Откройте Проводник (или любую другую программу для работы с файлами)

68.

Важная информация.5
6. Ткните мышкой в папку

69.

Важная информация.6
7. Нажмите Ctrl+V чтобы вставить полное имя папки из буфера обмена.

70.

Важная информация.7
8. Нажмите Enter чтобы перейти к выбранной папке.
9. Теперь вы можете копировать все нужные вам файлы.
* Код программы хранится в файле Source.cpp

71.

ИТОГО по лаб работе №1
Задача 0. Hello world
Задача 1. Вывод информации об ученике
Задача 2. Вывод информации об ученике в обратном порядке
Задача 3. Вывод информации об ученике и в прямом и в
обратном порядке
Задача 4. В консоли при помощи printf сформирован красивый
рисунок, например такой:

72.

73.

Кириллица

74.

Hello World – код программы
#include <stdio.h>
void main()
{
printf("Hello World!");
}

75.

Привет мир – код программы
#include <stdio.h>
#include <Windows.h>
void main()
{
printf("Hello World!");
printf("Привет мир");
}

76.

Привет мир – код программы
#include <stdio.h> // подключение файла stdio.h
#include <Windows.h> // подключение файла Windows.h
void main()
{
printf("Hello World!"); // вызов функции printf
printf("Привет мир"); // вызов функции printf
}

77.

Привет мир – код программы
#include <stdio.h>
#include <Windows.h>
void main()
{
printf("Hello World!");
printf("Привет мир");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Hello World!");
printf("Привет мир");
}

78.

Привет мир – код программы
#include <stdio.h> // подключение файла stdio.h
#include <Windows.h> // подключение файла Windows.h
void main()
{
printf("Hello World!"); // вызов функции printf
printf("Привет мир"); // вызов функции printf
SetConsoleCP(1251); // вызов функции SetConsoleCP
SetConsoleOutputCP(1251); // вызов функции SetConsoleOutputCP
printf("Hello World!"); // вызов функции printf
printf("Привет мир"); // вызов функции printf
}

79.

Привет мир\n – код программы
#include <stdio.h>
#include <Windows.h>
void main()
{
printf("Hello World!\n");
printf("Привет мир\n");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Hello World!\n");
printf("Привет мир\n");
}

80.

Привет мир\
Управляющие последовательности (Escape последовательности)
Источник: https://codernet.ru/books/c_plus/programmirovanie_na_s_dlya_nachinayushhix_3-e_izd/

81.

Переменные. Вывод. 1
// перевод скорости из м/сек в км/час
#include <stdio.h>
#include <Windows.h>
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
float v1, v2;
v1 = 10;
v2 = v1 * 3.6;
printf("Скорость в метрах в секунду=");
printf("%f\n", v1);
printf("Скорость в километрах в час=%f", v2);
}

82.

Переменные. Вывод. 1
// перевод скорости из м/сек в км/час
#include <stdio.h>
#include <Windows.h>
void main()
{
SetConsoleCP(1251); // вызов функции SetConsoleCP
SetConsoleOutputCP(1251); // вызов функции SetConsoleCP
float v1, v2; // определение переменных v1 и v2. Тип вещественный
v1 = 10; // присвоение переменной v1 значения 10
v2 = v1 * 3.6; // присвоение переменной v2 результата вычисления
// выражения v1 * 3.6
printf("Скорость в метрах в секунду="); // вызов функции printf
printf("%f\n", v1); // вызов функции printf
printf("Скорость в километрах в час=%f", v2); // вызов функции printf
}

83.

Переменные. Вывод. 2

84.

Переменные. Вывод. 3

85.

Вывод - printf
Источник: https://codernet.ru/books/c_plus/programmirovanie_na_s_dlya_nachinayushhix_3-e_izd/

86.

Переменные - типы
Источник: https://codernet.ru/books/c_plus/programmirovanie_na_s_dlya_nachinayushhix_3-e_izd/

87.

Основные операции операторы
Источник: https://codernet.ru/books/c_plus/programmirovanie_na_s_dlya_nachinayushhix_3-e_izd/

88.

Комментарии в программе
Для чего используются комментарии:
1) Для пояснения кода
2) Для временного отключения части кода

89.

Комментарии в программе
Для чего используются комментарии:
1) Для пояснения кода
2) Для временного отключения части кода

90.

Комментарии в программе
Для чего используются комментарии:
1) Для пояснения кода
2) Для временного отключения части кода

91.

Комментарии в программе
Какие виды комментариев могут быть
1) Строчные – от // до конца строки
Ctrl+K+C Закомментировать строчными комментариями выделенные строки
Ctrl+K+U Раскомментировать строчные комментарии для выделенных строк

92.

Комментарии в программе
Какие виды комментариев могут быть
2) Блочные от /* до */ в любом месте программы дальше по тексту

93.

Ввод информации.
// перевод скорости из м/сек в км/час
#include <stdio.h>
#include <Windows.h>
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
float v1, v2;
printf("Введите скорость в метрах в секунду=");
scanf_s("%f", &v1);
v2 = v1 * 3.6;
printf("Скорость в метрах в секунду=");
printf("%f\n", v1);
printf("Скорость в километрах в час=%f", v2);
}

94.

Ввод информации.
// перевод скорости из м/сек в км/час
#include <stdio.h>
#include <Windows.h>
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
float v1, v2; // определение переменных v1 и v2
printf("Введите скорость в метрах в секунду=");
scanf_s("%f", &v1); // %f - ввод вещественного значения с клавиатуры
// и присвоение введенного значения переменной v1
v2 = v1 * 3.6;
printf("Скорость в метрах в секунду=");
printf("%f\n", v1);
printf("Скорость в километрах в час=%f", v2);
}

95.

Ввод информации.
// перевод скорости из м/сек в км/час
#include <stdio.h>
#include <Windows.h>
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
float v1, v2; // определение переменных v1 и v2
printf("Введите скорость в метрах в секунду=");
scanf_s("%f", &v1); // %f - ввод вещественного значения с клавиатуры
// и присвоение введенного значения переменной v1
// v1 – имя переменной
// &v1 – адрес переменной (номер ячейки памяти)

96.

Ввод информации.2
Программа в консоли ждет ввода числа

97.

Ввод информации.3
Введите число «20» и нажмите Enter

98.

Ввод информации.4
После нажатия Enter программа выполнила вычисления и вывела результат в консоль

99.

100.

Знакомство с простейшими
функциями в Си**

101.

Простейшие функции
#include <stdio.h>
void a() {
printf("Hello! It is a()!\n");
}
void main() {
printf("Hello! It is main()!\n");
a();
}

102.

Точка входа в программу
#include <stdio.h>
void a() {
printf("Hello! It is a()!\n");
}
void main() {
printf("Hello! It is main()!\n");
a();
}
Точка входа
https://ru.wikipedia.org/wiki/%D0%A2%D0%BE%D1%87%D0%BA%D0%B0_
%D0%B2%D1%85%D0%BE%D0%B4%D0%B0
Точка входа (англ. Entry Point (EP) — точка входа) — адрес в
оперативной памяти, с которого начинается выполнение программы.
Другими словами — адрес, по которому хранится первая команда
программы.
Однако не надо путать её с «первыми командами» программы на языке
высокого уровня. Например, программа на C++ начинается с функции
main(). На самом деле, выполнение такой программы происходит
далеко не с первой команды этой функции: точка входа в программу
будет находиться в библиотеке времени исполнения «C runtime», а
процедура main() назначится точкой входа в пользовательский код.

103.

Использование до определения

104.

Объявление, определение и вызов функции
#include <stdio.h>
// это - ОБЪЯВЛЕНИЕ функции a()
void a();
// это - ОПРЕДЕЛЕНИЕ функции main()
void main() {
// это ВЫЗОВ функции printf()
printf("Hello! It is main()!\n");
// это ВЫЗОВ функции a()
a();
}
// это - ОПРЕДЕЛЕНИЕ функции a()
void a() {
// это ВЫЗОВ функции printf()
printf("Hello! It is a()!\n");
}

105.

В Си НЕЛЬЗЯ вкладывать функции друг в друга
#include <stdio.h>
void a();
void main() {
printf("Hello! It is main()!\n");
void a() {
printf("Hello! It is a()!\n");
}
a();
}

106.

107.

Лабораторная работа №2
Ввод и вывод переменных

108.

Задача 1. Падение с высоты. 1
Задается высота (“hard coded”), с которой падает предмет.
Нужно рассчитать, через сколько секунд предмет коснётся земли.

109.

Задача 1. Падение с высоты. 2
Задается высота (“hard coded”), с которой падает предмет.
Нужно рассчитать, через сколько секунд предмет коснётся земли.

110.

Задача 2. Падение с высоты
Вводится высота, с которой падает предмет.
Нужно рассчитать, через сколько секунд предмет коснётся земли.

111.

Задача 2. Падение с высоты 2
Вводится высота, с которой падает предмет.
Нужно рассчитать, через сколько секунд предмет коснётся земли.

112.

Задача 2. Падение с высоты 3
Запустите программу. Введите высоту 12 метров.

113.

Задача 2. Падение с высоты 4
Запустите программу. Введите высоту 20 метров.

114.

Задача 3. Покупаем квартиру
Вводится площадь квартиры и стоимость квадратного метра.
Выводится сколько будет стоить эта квартира.

115.

Задача 3. Покупаем квартиру
Вводится площадь квартиры и стоимость квадратного метра.
Выводится сколько будет стоить эта квартира.

116.

Задача 3. Покупаем квартиру
Вводится площадь квартиры и стоимость квадратного метра.
Выводится сколько будет стоить эта квартира.

117.

Задача 4. Покупаем квартиру - время
Вводится площадь квартиры и стоимость квадратного метра.
Вводится зарплата в месяц.
Выводится сколько будет стоить эта квартира.
Выводится сколько месяцев нужно будет собирать деньги на квартиру, при
условии что 50% зарплаты можно откладывать на квартиру.

118.

ЛР2: Задания на закрепление и отработку
Выкачать и установить MS VS на личном компьютере или на том компьютере,
которым вы будете пользоваться для выполнения домашних заданий и
лабораторных работ по Си.
Задача 5. Из курса математики взять простую расчетную задачу и реализовать её на
Си. (например, вычисление площади, или объема, или корня уравнения, или что-то
подобное – по известной из курса математики формуле и/или алгоритму)
Задача 6. Взять из курса физики/химии или других прикладных предметов (не
математики) идею для расчетной задачи и реализовать её (например, вычисление
скорости, давления, времени, силы тока и т.п.).
Задача 7. Взять из повседневной жизни или прикладной экономической жизни
идею и реализовать расчетную задачу (например, расчет времени возвращения
кредита, расчет переплаты за кредит и т.п.)
В итоге у каждого должно быть 3 уникальных задачи.
Если задачи не уникальны – кто первым сдал – тот и автор, остальные придумывают
и реализуют другие варианты. Все задачи должны быть принесены на следующее
занятие в классе и там сданы.

119.

ИТОГО по лекции 1
1.
2.
3.
4.
Познакомились
Выяснили зачем мы здесь – зачем я, зачем вы
Выяснили что предстоит сделать за семестр
Выяснили что будем изучать Си и почему именно Си
5. Узнали как выглядит простейшая программа на Си
6. Узнали как в IDE MS VS набрать и запустить простейшую Си программу
7. Узнали как редактировать текст программы на Си в IDE MS VS
8. Узнали как запустить программу на Си в IDE MS VS
9. Узнали как определяются переменные
10. Услышали про разные типы данных (int, float и др.)
11. Узнали как выводятся значения и переменные в консоль (printf)
12. Узнали как вводятся значения и переменные в консоли (scanf_s)
13. Узнали зачем нужны комментарии и каких двух видов они есть
14. Узнали что нужно сделать в лаб работе №1
15. Узнали что нужно сделать в лаб работе №2

120.

Изученные термины 1
Директива (препроцессора) #include
Неименованные целочисленные константы
Неименованные вещественные константы
Неименованные строковые константы
Идентификатор
Определение переменных
Инициализация переменных
Стандартные типы данных – целые
Стандартные типы данных – вещественные
Оператор & (взятие адреса)
Выражения
Операторы арифметические
Оператор присваивания
Точка входа в программу
Функция main
Функция, не возвращающая значений (VOID)
Блок кода {}

121.

Изученные термины 1
Директива (препроцессора) #include
Неименованные целочисленные константы
Неименованные вещественные константы
Неименованные строковые константы
Идентификатор
Определение переменных
Инициализация переменных
Стандартные типы данных – целые
Стандартные типы данных – вещественные
Оператор & (взятие адреса)
Выражения
Операторы арифметические
Оператор присваивания
Точка входа в программу
Функция main
Функция, не возвращающая значений (VOID)
Блок кода {}
#include <stdio.h>
int val1 = 9;
v2 = v1 * 3.6;
printf("Hello World!");
int val1 = 9; void main() { printf(“Hi”);}
int val1 = 9; float v1, v2;
int val1 = 9;
int val1 = 9;
float v1, v2;
scanf_s("%d", &v);
v2 = v1 * 3.6;
v2 = v1 * 3.6;
v2 = v1 * 3.6;
void main() { }
void main() { }
void main() { }
void main() { }

122.

Изученные термины 2
Строчные комментарии
Блочные комментарии
Консольный вывод – printf
Консольный ввод – scanf/scanf_s
Строка форматирования функций scanf/printf
Escape-последовательности - \t, \” и др.
Определение функции
Объявление функции
Вызов функции
Формальные параметры функции
Фактические параметры функции

123.

Изученные термины 2
Строчные комментарии
Блочные комментарии
Консольный вывод – printf
Консольный ввод – scanf/scanf_s
Строка форматирования функций scanf/printf
Escape-последовательности - \t, \” и др.
Определение функции
Объявление функции
Вызов функции
Формальные параметры функции
Фактические параметры функции
float v1, v2; //определение v1 и v2
float v1, v2; /*определение v1 и v2*/
printf("Hello World!");
scanf_s("%d", &v);
scanf_s("%d", &v);
printf("Hello World!\n");
void main() { printf("Hello World!"); }
void main();
scanf_s("%d", &v);
void main() { printf("Hello World!"); }
scanf_s("%d", &v);

124.

Что почитать про Си - для начинающих
1. Программирование на С для начинающих. 3-е изд.
Грег Перри, Дин Миллер
https://codernet.ru/books/c_plus/programmirovanie_na_s_dly
a_nachinayushhix_3-e_izd/
English     Русский Rules