Skip to content

Commit 2a6bcd3

Browse files
committed
Незначительные правки в 3.0 и 3.1
1 parent e573d80 commit 2a6bcd3

File tree

5 files changed

+62
-43
lines changed

5 files changed

+62
-43
lines changed
Lines changed: 13 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,27 @@
11
# Как программы взаимодействуют с внешним миром?
2-
Вспомним задачу о сложении двух чисел из прошлого урока.
32

4-
Программа сложения двух чисел.
3+
Прежде чем начать, скажу пару общих слов о том, как программы взаимодействуют с внешним миром.
54

6-
**Входные данные:** два числа, которые нужно сложить.
7-
**Выходные данные:** одно число, сумма двух чисел, поступивших на вход
8-
9-
![Схема программы сложение двух чисел](./shema_raboty_programmy.png)
10-
11-
12-
Давайте попробуем её решить используя знания, полученные на прошлом уроке. Получится что-то вроде такого:
13-
14-
Листинг 1. Сложение двух чисел v.1
15-
```c
16-
#include <stdio.h>
17-
int main(void) {
18-
int a, b, res;
19-
20-
a = 10;
21-
b = 7;
5+
Откуда вообще программы могут брать данные?
226

23-
res = a + b;
24-
return 0;
25-
}
26-
```
7+
Один вариант мы уже назвали -- данные может ввести пользователь, используя клавиатуру или клавиатуру и мышку. Так работает, например, консольная программа yt-dlp (позволяет скачивать видео с ютуба и других видеохостингов). Или калькулятор Windows.
278

28-
Такая программа скомпилируется без ошибок и будет работать. В памяти будут созданы три переменные. Двум из них будут присвоены числовые значения «десять» и «семь». Потом в переменную res будет записана сумма этих значений.
9+
Программа может брать данные из памяти компьютера. Например, просмотрщик фотографий, медиаплеер или более точный пример -- BIOS вашего ПК.
2910

30-
Но эта программа, конечно, никуда не годится. Во-первых, она не выводит сумму чисел на экран. Т.е. сумма вычисляется, но мы её не видим. Что-то вроде калькулятора без экрана. А во-вторых, она работает только для чисел 10 и 7. Если мы бы захотели сложить числа 25 и -8, нам нужно было бы открыть программу, изменить её код и снова скомпилировать.
11+
Ещё один вариант: получать данные с различных устройств, например, с web-камеры или микрофона. Например, Zoom или недавно преставившийся Skype.
3112

32-
Это ставит перед нами две задачи:
13+
С учетом развития сетевых технологий важно упомянуть, что программы могут получать данные по сети, например, через Интернет.
3314

34-
- научиться выводить на экран значения, сохранённые в переменных, чтобы посмотреть результат работы программ;
35-
- научиться сохранять в переменные данные, которые поступили в программу от пользователя, например, которые он вводит с клавиатуры.
15+
Конечно, нельзя забывать и о том, что программы обмениваются данными друг с другом. Например, абсолютно любая программа на вашем компьютере и операционная система. Собственно, все варианты описанные ранее в том или ином виде взаимодействуют с внешним миром через взаимодействие с операционной системой и драйверами устройств.
3616

37-
Решению этих задач посвящён этот урок.
17+
Да что говорить, ведь даже ваша первая программа "Hello, World!" и та возвращала в вызывающую её программу значение 0 (ещё не забыли про инструкцию return?).
3818

39-
Но сначала пара общих слов о том, как программы взаимодействуют с внешним миром.
19+
В общем, каналов получения данных достаточно много.
4020

41-
Откуда вообще программы могут брать данные?
21+
Зачастую программы получают данные, используя не один, а сразу несколько каналов. Например, веб-браузер. С одной стороны, он получает данные от пользователя (адрес сайта, клики мышкой по элементам сайта), с другой -- получает данные по сети от сервера, где хранится сайт. Кроме того, если мы кому-нибудь позвоним через интернет, то данные будут поступать уже от перефирийных устройств: микрофона и видео-камеры. Про постоянное взаимодействие браузера с операционной системой, думаю, можно и не упоминать.
4222

43-
Ну, например, данные может ввести пользователь с клавиатуры. Стандартный калькулятор Windows так и работает. Мы запускаем программу и вводим в неё данные. Кроме того, программы могут получать данные из файлов, из интернета, из других программ, различных устройств, например, с web-камеры или микрофона, и др. В общем, способов получить данные достаточно много.
23+
В этом уроке мы научим ваши программы получать данные, которые пользователь вводит с клавиатуры.
4424

45-
В этом уроке мы научимся получать данные, которые ввёл пользователь с клавиатуры. В дальнейшем мы разберёмся ещё с тем, как получать данные из текстовых файлов.
25+
Что же касается вывода данных из программы, то мы разберёмся, как выводить данные на экран консоли.
4626

47-
Что же касается вывода данных из программы, то мы разберёмся, как выводить данные на экран консоли и как записывать данные в текстовый файл. Хотя, конечно, и для вывода данных существует множество других вариантов (файлы, интернет, другие программы, принтер и др.).
27+
Хотя, конечно, для вывода данных доступны все те же варианты, что и для ввода: файлы, другие программы, перефирийные устройства, сеть и пр.
Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +0,0 @@
1-
## Дополнительные материалы
2-
3-
1. пока нет

lang_c/3/index.md

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,51 @@
11
# Ввод и вывода данных в Си
22

3-
В этом уроке вы научите ваши программы взаимодействовать с внешним миром, т.е. получать данные с клавиатуры и выводить данные на экран консоли.
3+
Как уже упоминалось во втором уроке, любая программа работает по следующему принципу:
4+
* получает какие-то данные;
5+
* обрабатывает их;
6+
* возвращает результат своей работы.
47

5-
Основные вопросы:
6-
- Как программы взаимодействуют с внешним миром?
7-
- Стандартные потоки ввода и вывода.
8-
- Вывод данных. Функция `printf`.
9-
- Ввод данных. Функция `scanf`.
8+
Для наглядности я предложил рассмотреть следующий пример:
9+
10+
> Пример 1: Программа сложения двух чисел
11+
>
12+
> **Входные данные:** два произвольных числа
13+
**Выходные данные:** одно число -- сумма двух чисел, поступивших на вход
14+
15+
![Схема программы сложение двух чисел](./shema_raboty_programmy.png)
16+
17+
Давайте попробуем написать такую программу, используя ранее полученные знания.
18+
19+
У нас получится что-то такое:
20+
21+
Листинг 1. Программа для сложения двух чисел v.0.1
22+
```c
23+
#include <stdio.h>
24+
25+
int main(void)
26+
{
27+
int a, b, res;
28+
a = 10;
29+
b = 7;
30+
31+
res = a + b;
32+
33+
return 0;
34+
}
35+
```
36+
37+
Такая программа скомпилируется без ошибок и будет работать. В памяти компьютера будут созданы три переменные `a`, `b` и `res`. Переменным `a`, `b` будут присвоены числовые значения «десять» и «семь». Потом в переменную `res` будет сохранена сумма этих значений.
38+
39+
Но такая программа, конечно, никуда не годится.
40+
41+
* Во-первых, она не выводит сумму чисел на экран. Т.е. сумма вычисляется, но мы её не видим. Что-то вроде калькулятора без экрана.
42+
* Во-вторых, это буквально программа для сложения двух конкретных целых чисел `10` и `7`. Если мы бы захотели сложить два других числа, например, `25` и `-8`, нам нужно было бы открыть текст программы, изменить его, заново скомпилировать и запустить.
43+
44+
Уверен, не так вы себе представляли программирование, да? =)
45+
46+
Следовательно, перед нами стоит две задачи:
47+
48+
- научиться выводить на экран значения, сохранённые в переменных (чтобы видеть результат работы программы);
49+
- научиться сохранять в переменные данные, которые поступают в программу из внешнего мира, например, данные, которые пользователь вводит с клавиатуры (чтобы сделать программу более универсальной).
50+
51+
Собственно, решению этих задач и посвящён данный урок курса.

lang_c/3/meta.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"title": "Урок 3: Ввод/вывод в Си",
3-
"description": "Третий урок посвящен изучению базовых функций ввода и вывода в языке Си.",
3+
"description": "Урок посвящён изучению базовых функций ввода и вывода в языке Си. Вы научитесь выводить на экран значения, сохранённые в переменных, и получать данные с клавиатуры.",
44
"keywords": "printf, scanf, ввод и вывод в языке Си",
55
"canonical_link": "https://youngcoder.ru/lessons/3/",
66
"has_glory_hall": true

0 commit comments

Comments
 (0)