Язык Си
553 subscribers
45 photos
2 videos
14 files
58 links
Download Telegram
Обновилась теория, значит пора обновить и практические задания на функцию scanf!

Тем более об этом часто просят в обратной связи. Понятно, что вопрошающие уже вряд ли увидят и оценят новые задания, но это их вклад в развитие курса для будущих поколений.

Сегодня подготовил 4 новых задачи на функцию scanf. Пару дней отлежатся, посмотрю на них свежим взглядом и добавлю в курс.

На скринах комменты из обратной связи уроку. =)

upd: Добавил ещё одну задачку.
🔥3👍1
Отгрузил задачи на Stepik.
- IP-адрес
- Не думай о секундах свысока
- Морской бой
- Шахматная нотация
- Телефонный номер

Последняя задача немного муторная, но если разобрались с исследовательскими задачами для хакеров на сайте, то решение получится более элегантным. Да и задачу про Шахматную нотацию с этими знаниями можно сделать красивее.

В общем, жду ваши ответы на форуме Решений. Буду выбирать, чьё решение закрепить в качестве образцового. =)

p.s. Прошу прощения у всех, кто прямо сейчас собирает ключ для ЗС-3. Из-за новых задач придётся его "пересобрать".
🔥6👍1
Приятная новость. На главной странице Stepik в разделе Часто ищут есть подборка C/C++.

Сегодня в неё добавили и наш курс. Троекратное ура!

Пока, к сожалению, только вторая страница в выдаче, но всё лучше, чем ничего. Какой-то закономерности в ранжировании курсов я не увидел. Единственно, что можно сказать определённо, платные курсы имеют приоритет над бесплатными. Даже "Поколение Python: курс для начинающих" у которого почти полтора миллиона учеников (больше чем у любого курса на платформе) и тот в категории Python стоит лишь на 4 месте! =D

Поглядим, как это отразится на количестве новых youngcoderов.
🔥7👍2
Выложил новое мини-видео о работе со стандартными потоками ввода и вывода.

В теоретической части я сказал, что программа ничего не знает о внешних устройствах, а взаимодействует лишь со стандартными потоками ввода и вывода. В этом видео я демонстрирую, как это происходит на примере программы сложения двух чисел (sum2).

Не изменяя ни одного бита в самой программе, я заставляю её читать числа, которые надо сложить, из файла и записывать результат сложения в другой файл.

Это становится возможным благодаря двум вещам:
— 1. из-за того, что программа работает с потоками, а не с конкретными устройствами;

— 2. операционная система позволяет перенаправить стандартные потоки ввода и вывода и связать их, например, с текстовыми файлами.


Кстати, по такому же принципу построена и проверяющая система на платформе Stepik. =)
Когда вы отправляете решение, система создаёт из него исполняемый файл и запускает его. При этом на стандартный поток ввода подаются тестовые данные, а данные из стандартного потока вывода сравниваются с эталонным решением.

p.s. Ещё раз благодарю всех помогальников за донаты! Полагаю, что вы здесь есть. )
🔥4👍2
Моя первая программа

Пост приурочен к мини-опросу про прошлый опыт в программировании, пройдите его, пожалуйста.

Насколько я помню, первым языком программирования у меня был BASIC под самой настоящей MS DOS. Примерно 5-6 уроков Информатики. На последнем уроке из этого программистского цикла нам задали задачу: посчитать количество дней между двумя произвольными датами с учётом високосных годов. Доступа к ПК у меня не было, поэтому я просто писал свой код на бумажке и построчно его выполнял, пытаясь решить задачу. К сожалению, эта задача оказалась мне не по зубам.

Первым языком, который я изучал самостоятельно был PHP (где-то месяца через 3-4 после того, как состоялось моё печальное знакомство с BASIC). Почему PHP? Для меня главным и решающим преимуществом этого языка было то, что он не требовал наличия компьютера. Можно было написать текст скрипта на смартфоне Nokia 6670, загрузить его на бесплатный хостинг и проверить, как работает программа.

Доступ к смартфону тоже был ограниченным. Я мог использовать его достаточно непродолжительное время вечером и ночью. Поэтому мой "алгоритм" программирования и отладки скриптов на PHP выглядел следующим образом.
1. Написать код программы в тетрадке
2. Проверить самостоятельно синтаксис
3. Пошагово выполнить программу на листочке
4. Исправить найденные ошибки и вернуться к п.2
4.1 если ошибок нет ждать вечера
5. Вечером перенести итоговый код с листочка в смартфон и загрузить файл на хостинг
6. Запустить скрипт на хостинге
7. Если всё хорошо, то радоваться, если ошибка:
7.1 - простая и понятная, то быстренько исправить, загрузить файл заново и перейти к п.6.
7.2 - сложная или непонятная, то пометить её себе на листочке, мб, немного погуглить/спросить на форумах, почему такая ошибка происходит, чтобы на следующий день вернуться к п.4


Кстати, этот извращённый опыт меня серьёзно закалил. Когда через несколько лет мне потребовалось пройти процедуру ЕГЭ по информатике, то я вообще не видел для себя проблемы в том, что там нет компьютера (сейчас, говорят, есть). Написать код программы на листочке и не упустить ни одной точки с запятой, закрывающей фигурной скобки и тп. — раз плюнуть. Выполнить код и сказать, что выведет программа? Да запросто! Найти ошибку в условных конструкциях? Проще пареной репы. Я видел код насквозь, как рентген. =D

Первой программой, которую я написал на PHP, была "Библиотека".
Скрипт просматривал директорию с файлами и составлял из них страничку со ссылками для чтения. Можно было открыть любой файл и читать его в постраничном режиме, задавая размер шрифта, количество слов на странице и пр. За несколько прогонов алгоритма, изложенного выше, прибегая к помощи гугла и интернет-форумов, я таки справился с этой задачей.

Именно этот скрипт я считаю своей первой полноценной программой.
👍6👏2🔥1🫡1
В комментариях на Stepik задали вопрос про то, как могут быть записаны очень-очень большие числа в переменной double.

На примере небольшого числа double r = 140737488355329.984375; попытался объяснить, как компилятор сохранит его в памяти компьютера.

Кому интересно про хранение вещественных чисел, предлагаю к изучению соответствующую ветку комментариев.

#из_комментариев_на_stepik
2👍1🔥1
Вчера обновил теоретическую часть в уроке про арифметические операторы. Дополнил его нюансами работы оператора % (взятие остатка от деления), добавил исследовательскую задачку для хакеров + поправил разметку. Повторите, если кто успел забыть. К соответствующему уроку на Stepik добавил шпаргалку.

p.s. И чтобы дважды не вставать, публикую ежемесячную статистику.
На 1 августа:
— 1 761 720 верных решений для задач на программирование;
— 790 отзывов
— 67106 учеников.

В Зале славы 5-го урока 6 учеников. Не густо!
👍4🔥2
Дополнил урок по математическим функциям и неявному преобразованию типов.

Добавил немного поясняющих примеров, поправил разметку, добавил практических задач, включая пару исследовательских задачек.

Попробуйте решить задачу со скрина.


Если найдёте опечатки/ошибки, пишите в комменты к уроку. Заранее благодарю за помощь!
👍5🔥3
Чуть-чуть дополнил материал по приоритетам операций. В основном дополнительные материалы и практические задания для самостоятельного решения.
🔥2👍1
Пару дней назад составил диаграмму распределения лайков и дизлайков по урокам на Stepikе. Заметил, что у раздела 5.1 очень удручающее соотношение между лайками и дизами. Стал разбираться, что не так. Изучил внимательно комментарии и обратную связь.

Основные жалобы:
— формулировки условий задач: запутанность, неясность.
— задачи требуют знания циклов, которые к этому моменту ещё не пройдены.
— много математики и надо самому искать формулы.

По итогам работы:
— переписал и поправил условия для всех задач (добавил элементы научно-фантастического сеттинга);
— кое-где добавил формулы, либо обыграл их отсутствие в тексте задачи и сослался на закреплённые комменты.
— удалил одну задачу;
— везде, где можно, добавил кнопку для запуска кода на своих данных;
— добавил небольшой теоретико-методический шаг про экономию вычислений. Задача этого шага подготовить ученика к последующим трём задачам и к дальнейшему изучению циклов. =)
— убрал баллы за оставление обратной связи по уроку.

В общем, предлагаю вам заценить новую версию. Если новая версия придётся вам по вкусу, не пожалейте лайка (не тут, на Stepikе)! =)

p.s. Для истории. Текущие показатели по лайкам и дизам: 535 / 275.
7👍1
Замечаю в обратной связи, в комментариях и на форуме решений упоминание того, что кто-то решил задачу с помощью нейронки.

Генеративный AI это серьёзное явление, которое теперь с нами навсегда, поэтому посчитал важным написать небольшую заметку в блоге на этот счёт.

Использовании LLM при обучении программированию
👍5🔥2
Хорошая новость. Сегодня впервые получил в репозитории курса Pull Request с исправлением опечатки от человека, которого я не знаю. Спасибо, mavensk! =)

Неделю назад я добавил опрос о прошлом опыте программирования. Прикладываю распределение ответов. Полных новичков абсолютное меньшинство =D
1👍1🔥1
Поиск рассеянных с улицы Бассейной, 21.

Указывайте в комментариях свой город и дату. Знакомьтесь, объединяйтесь и готовьтесь вместе.
🔥17😁155
Не вынесла душа поэта...
8💔2
Занимаюсь улучшением урока про условные инструкции. Сегодня обновил вступительную заметку.

А ещё добавил раздел manuals на сайт. Туда буду добавлять дополнительные материалы, которым пока не нашлось места в структуре курса. Будет что-то вроде маленькой базы знаний. Для тестирования добавил короткую заметку с таблицей приоритетов операторов в Си.

p.s. Ураааа! Нас ровно 107 человек. Скоро обгоним ютуб-канал! =)
🔥8👍31
Новая версия урока про инструкцию переключения switch

Как обычно, объём текста вырос почти в два раза, но я всё равно доволен получившимся результатом.

— Урок стал более структурированным и подробным.
— Добавлены новые примеры на вложенные инструкции switch, а для старых примеров добавлены пояснения.
— Добавлены дополнительные материалы про ассемблер, константы, и, что меня радует всех больше, про конечные автоматы.
— Добавлена исследовательская задача для хакеров, посвящённая расширенной версии switch, поддерживаемой некоторыми компиляторами.

В общем, кто недавно читал старую заметку, предлагаю перечитать новую. Она гораздо лучше.

p.s. Если прочитали, отпишитесь тут или в комментах, всё ли понятно или где-то возникают трудности? Всем, кто найдёт опечатки, ошибки и т.п., отдельный респект.
👍4🔥2
Три новые задачи на инструкцию switch

Добавил задачек в курс:
Дни недели
Калькулятор v.0.3
Конвертер прав доступа UNIX

Мне всех больше нравится последняя. =)

Кроме того, добавил шпаргалку по switch на степик.
👍8🔥4😍2
Обновил урок про Отношения и логические операторы

Из новенького:
— как избежать проблем при сравнении вещественных чисел;
— как правильно проверять попадание значения в диапазон.

Теперь можно и отдохнуть! =)
👍5🔥5
Чёт забыл, что собирался сегодня отдыхать и дополнил урок про Отношения и логические операторы на Stepik краткой шпаргалкой и дополнительными задачами:

Сравнение вещественных чисел
Минимум из двух чисел
Гилл Байтс и модуль числа
Валидация IP-адреса

UPD: Кто решит, отпишитесь здесь или на степике, как вам новые задачки?
6🔥3
Остапа понесло...

Добавил ещё одну задачку:
Система управления освещением

Её можно решить через switch, но я предлагаю подумать над решением без switch, а только через логические выражения.

p.s. на сегодня точно всё. В этот урок больше нельзя добавить задач.
👍7🔥3
Мы с Денисом тут кое-что придумали 😈😈😈

Попробуйте решить вот эту задачу, используя if или switch.
🔥2