среда, 21 сентября 2016 г.

Задачи по программированию на языке C++, часть 2 (обновление)

Значительное дополнение, обновление и исправление текста и примеров кода.

Скачать свободно последнюю актуальную редакцию текста и архива кодов можно здесь:
Googleтекст, архив кодов
Сейчас это редакция 40 от 21.09.2016, страниц 90.
Задач с примерами на сегодня представлено 57 (хотя посчитать это достаточно проблематично, поскольку ряд задач имеет по несколько представленных вариантов решений).

Исправления главным образом касались грамматики и опечаток. Но дополнения (относительно первоначальных редакций) весьма обстоятельные.


вторник, 13 сентября 2016 г.

Задачи по программированию на языке C, часть 1 (обновление)

Заметное обновление текста и примеров кода.

Скачать свободно последнюю актуальную редакцию текста и архива кодов можно здесь:
Yandexтекст, архив кодов
Googleтекст, архив кодов
Сейчас это редакция 39 от 14.11.2016, страниц 106.
Задач с примерами на сегодня представлено 102.

Но самое главное изменение: все и любые планировавшиеся изменения и расширения под стандарт C11 - отменены. По моему мнению, по результатам достаточно щепетильного изучения стандарта - это мёртворожденное творение, состряпанное в угоду и на заказ крупнейших IT корпораций в их шкурных интересах. Но предполагаю, что никто это использовать на практике не станет.

суббота, 10 сентября 2016 г.

Регулярные выражения C/C++

Это фактически продолжение предыдущего текста Языковая локализация. И планировалось оно как небольшая глава в тот общий текст. Но разбирательство потянуло за собой всё большее расширение объёма. Вопрос изначально стоял узко: как поведут себя инструменты обработки регулярных выражений с Unicode/UTF-8 строками? Тем более, когда мультибайтные Unicode символы символы станут появляться и в шаблонах регулярных выражений и в самих сопоставляемых строках. Ну, например, что и как происходит вот в таком простейшем случае:

$ echo "слово слава слива" | grep сл[о,а]
слово слава слива

Там всё не так однозначно просто ... и некоторые детали не ясны до конца. Связано это с тем, что все инструменты (библиотеки) сопоставления с регулярными выражениями в C и в C++ до стандарта 2011г. не могут работать со строками широких локализованных символов (wchar_t[], wstring). По крайней мере, я таких не знаю.

Что из этого получается, можете посмотреть в предварительной редакции текста (и архив программных кодов к нему, естественно). Предварительная редакция потому, что материал в работе, по нему могут быть существенные дополнения (а могут и не быть ... если надоест).

Сам текст : на Yandex и на на Google
Редакция 05, от 10.09.2016, стр. 13.

Архив примеров кода на Yandex и на на Google

Все не ясные моменты (а они там есть), замечания и предложения по тексту - обсуждаем здесь: регулярные выражения в C/C++... и это может заметно улучшить освещение вопроса. Там же, по ссылке, найдёте книги (переводы), из числа наилучших, по регулярным выражениям, и ссылки для их свободного скачивания.


  

четверг, 1 сентября 2016 г.

Языковая локализация C/C++

Локализация программного кода под язык (например, русский) очень слабо описана. На то есть несколько причин:
  • Современное представление текстов в Unicode появилось достаточно поздно (1991г.), а представление Unicode в UTF-8 кодировке ещё позже (1992г., Кен Томпсон и Роб Пайк);
  • Ранние описания, например знаменитая книга по C K&R, естественно, не могут даже упоминать о проблеме языковой локализации...
  • А более поздние зарубежные (и переводные) издания обходят эти вопросы стороной - им оно не актуально ... и "до лампочки"...
  • отечественные же учебники только пересказывают то, что они прочитали в переводных изданиях.
А вопросы по этому поводу многократно задают. И в обсуждениях рассказываются совершенно чудовищные картины локализации ... складывающиеся в больном воображении в отсутствии информации.
Поэтому пришлось собрать в одно место то, что я знаю по этому поводу, и описать единым текстом.
Как и раньше, особенно расписывать я здесь не стану, а для интересующихся, пожалуйста - скачивайте описательный текст + архив примеров кодов, которые можно компилировать, изучать и с которыми можно экспериментировать.

Сам текст : на Yandex и на на Google
Редакция 09, от 01.09.2016, стр. 22.

Архив примеров кода на Yandex и на на Google

Всё, что здесь описано, касается локализации в коде C и C++. Но вопросы локализации, вообще то говоря, определяются не столько языком программирования, сколько операционной системой и её настройками. Поэтому локализация на других языках, скажем Python, полностью наследуют описываемые здесь принципы, и только изображаются средствами API этого языка. В будущем, возможно, я расширю текст примерами ещё на нескольких языках программирования ... хотя это достаточно тривиально после C/C++.

Всё, что хотелось бы обсудить, уточнить, замечания и предожения по тексту - обсуждаем здесь: локализация строк в C-коде.

пятница, 26 августа 2016 г.

Начала STL и контейнеры C++

Теперь это то, что было показано раньше, но не серией разорванных статей, а единым связным текстом. Этот вариант выверен, слегка дополнен, и местами исправлен (но главным образом в грамматических описках).
Как мне кажется, в таком виде текст гораздо лучше читается, и уж, по крайней мере, наверняка лучше в качестве справочника - я сам дёргаю отдельные программные фрагменты из примеров кода, чтобы не держать всё это в памяти.

Кому интересно - берите и пользуйтесь...

Сам текст : на Yandex и на на Google
Редакция 12, от 24.08.2016, стр. 59.

Архив примеров кода на Yandex и на на Google

Всё, что хотелось бы обсудить, уточнить, замечания и предожения по тексту, какие бы ещё примеры и задачи включить в рассмотрение - обсуждаем здесь: Начала STL и контейнеры C++.

пятница, 27 мая 2016 г.

Задачи по программированию на языке C, обновление

Предыдущее сообщение Задачи по программированию на языке C, часть 1 содержало ссылки на документ, который обновлялся, расширялся много раз. Последняя редакция предлагаемого текста была 23 от 12.01.2016, объёмом 82 страниц. После этого текст достаточно стабилизировался, и оставался неизменным почти пол-года.

Сейчас назрел новый цикл обновлений. Главный его резон: рассмотреть расширения стандарта ISO/IEC 9899:2011 языка C (но накопились и другие нюансы). Поэтому новый цикл обновлений вынесен отдельно сюда.

Скачать свободно последнюю актуальную редакцию текста и архива кодов можно здесь:
Googleтекст, архив кодов
Сейчас это редакция 30 от 27.05.2016, страниц 89.

P.S. А по поводу самого стандарта C11, который не очень известен и доступен - черновик стандарта N1570, датированный 12.04.2011, можете скачать здесь.

четверг, 17 марта 2016 г.

Начала STL и контейнеры C++ (обновление)

Большое обновление серии заметок "Начала STL и контейнеры C++".
Только ссылки...

Архив примеров кода на на Google

И сами тексты:

Массивы со статической и динамической размерностью. Часть 1
Редакция 06, от 25.02.2016, на на Google

Контейнеры STL. Часть 2
Редакция 06, от 25.02.2016, на Google

Контейнеры STL. vector. Часть 3
Редакция 07, от 02.03.2016, на Google

Контейнеры STL. list. Часть 4
Редакция 08, от 16.03.2016, на Google

Классы string и wstring. Часть 5
Редакция 06, от 19.02.2016, на Google

Ассоциативные контейнеры STL. Часть 6
Редакция 06, от 07.03.2016, на Google

Контейнеры STL: map. Часть 7
Редакция 03, от 19.02.2016, на Google

Контейнеры STL: multimap. Часть 8
Редакция 03, от 19.02.2016, на Google

Контейнеры STL: set и multiset. Часть 9
Редакция 03, от 19.02.2016, на Google

Итераторы ввода-вывода. Часть 9A
Редакция 02, от 15.03.2016, на Google
(некоторых частей не было вообще в предыдущих редакциях, они вставные, чтобы не нарушать порядок именования частей они идут с буквенным индексом)

Алгоритмы. Часть 10
Редакция 04, от 21.02.2016, на Google

Функциональные объекты. Часть 11
Редакция 04, от 20.02.2016, на Google

Сортировка. Часть 12
Редакция 03, от 20.02.2016, на Google

Сортировка структур. Часть 13
Редакция 03, от 20.02.2016, на Google

Обобщённые численные алгоритмы. Часть 14
Редакция 03, от 20.02.2016, на Google

Скалярное произведение, фильтрация. Часть 14B
Редакция 03, от 20.02.2016, на Google

Другие обобщённые алгоритмы. Часть 14C
Редакция 03, от 20.02.2016, на Google

Обобщённые алгоритмы на массивах. Часть 14Z
Редакция 03, от 20.02.2016, на Google

Адаптеры. Часть 15
Редакция 03, от 20.02.2016, на Google

Указатели в контейнерах. Часть 16
Редакция 03, от 20.02.2016, на Google

Что почитать?. Часть 17
Редакция 03, от 23.02.2016, на Google


суббота, 13 февраля 2016 г.

Начала STL и контейнеры C++

P.S. Как оказалось, редактор сообщений этого блога (вместе с его авторами) - полное говно. Так что я приношу прощения за слабую читаемость этого сообщения, или полную его нечитаемость... не за свою вину. Опасаясь вообще за сохранность даже ссылок для самого себя, любимого - я уношу этот цикл полностью (пока?) в форум: Начала STL и контейнеры C++ . Ссылки ниже на 20.02 актуальны, но дальше я их корректировать не буду, и дополнять список не стану - нельзя бесконечно работать на сортир! Буду ли продолжать этот блог? Не знаю...=

Это вот такой цикл коротеньких заметок по массивам C & C++, контейнерам STL, использованию их с применением новых синтаксических конструкций стандартов последнего времени: C99 и C++11 - всё это там сильно переплетается ... ну и всяких сопутствующих вопросов.
Этот цикл заметок, первоначально, появился по просьбе одного из сайтов, по обучению C++ начального уровня ... для пионеров, школьников и других нерадивых студентов... Но со временем заметки стали обрастать подробностями, а заказчики мягко выражать неудовольствие, что всё это становится слишком длинно и заумно. Упрощать описание до уровня "на пальцах" не хочется, но и потерять сделанное жалко, независимо от того, опубликует ли это обучающий сайт и в каком виде. Тем более, что материал стал обрастать интересными подробностями (жить своей жизнью), особенно на стыке с выразительными средствами стандартов C99 и C++11, позволяющих значительно упростить использование. А в литературе этого не найти, потому что очень свежие вещи.В итоге, решил я это всё хозяйство задублировать сюда в блог. Тем более, что всплывают всякие нетривиальные детали, каждая из частей обрастает обновлениями (и ещё будут), и это уже далеко не тот текст, который появился первоначально. Может кому-то ещё это покажется интересным.
Естественно, все заметки сопровождаются короткими примерами иллюстрирующего кода. Весь код написан "с нуля" под эти тексты. Поскольку кода не много, все примеры кода, ко многим частям собственно заметок, собраны в один архив. Но соответствие кода частям текста очень легко восстановить по именам файлов примеров, которые фигурируют в тексте. Архив кодов можете взять на Google (архив будет обновляться, но эти ссылки будут корректироваться на актуальную версию).
 

Вопрос (спрашивают): почему названия, ссылки и даты последних редакций там сильно "пляшут", даже давно размещённые части, из самых первых?
Ответ: потому, что, идя навстречу пожеланиям трудящихся, я делаю то, что никогда не делал - выверяю и корректирую коды примеров в виртуальной машине с Windows 7, в IDE Code::Blocks 2013. 
А сами тексты - вот они (ссылки бeдут помещаться и обновляться по мере выверки и размещения):

Массивы со статической и динамической размерностью. Часть 1 
Редакция от 19.02.2016, ссылка на Google  
Контейнеры STL. Часть 2 
Редакция от 19.02.2016, ссылка на Google
Контейнеры STL: vector. Часть 3 
Редакция от 19.02.2016, ссылка на Google 
Контейнеры STL: list. Часть 4 
Редакция от 19.02.2016, ссылка на Google
Классы string и wstring. Часть 5
Редакция от 19.02.2016, ссылка на Google
Ассоциативные контейнеры STL. Часть 6
Редакция от 19.02.2016, ссылка на Google  
Контейнеры STL: map. Часть 7
Редакция от 19.02.2016, ссылка на Google 
Контейнеры STL: multimap. Часть 8
Редакция от 19.02.2016, ссылка на Google  
Контейнеры STL: set и multiset. Часть 9 
Редакция от 19.02.2016, ссылка на Google 
Алгоритмы. Часть 10
Редакция от 20.02.2016, ссылка на Google  
Функциональные объекты. Часть 11
Редакция от 20.02.2016, ссылка на Google