24 бесплатные книги для изучения языков программирования
Редакторы сайта Linux Links собрали в одном месте 24 бесплатные книги по различным языкам программирования, по книге на каждый язык, начиная от ассемблера и заканчивая C#.
Мне всегда казалось, что главная причина, по которой начинающие программисты сдаются и прекращают обучение, — обилие выбора. Достаточно сложно разобраться в том, какой язык стоит учить первым и почему именно его.
Причём понятно, что проблема решается легко: если ты хочешь изучать программирование, то, будь добр, сядь, разберись во всех языках и реши, какие из них тебе нужны.
В общем, теперь это возможно. На сайте Linux Links выложили сборник из 24 книг. По одной книге на каждый язык программирования.
Список книгПо клику на обложку можно перейти на страницу с кратким описанием каждой книги. Вряд ли опытные программисты найдут в них что-то новое. Но для новичков это отличный способ решить, какой язык программирования изучать, а для более опытных коллег — разобраться в основах менее известных языков.
Скачать книги
lifehacker.ru
20 самых рекомендуемых книг для программистов на русском языке
В общий список вошло 5 720 книг. Ниже вы найдёте 20 самых упоминаемых из них, которые когда-либо выходили на русском.
По просьбе Лайфхакера своими мнениями насчёт некоторых изданий поделились отечественные эксперты.
1. «Эффективная работа с унаследованным кодом», Майкл К. Физерс
Автор объясняет, как быстро разбираться в унаследованном коде, как тестировать его, как правильно вносить изменения. Книга содержит множество эффективных приёмов, предназначенных специально для этих задач.
Купить на Litres.ru
2. «Приёмы объектно-ориентированного проектирования. Паттерны проектирования», Эрих Гамма и другие
Классика для программиста. Первая книга, посвящённая именно шаблонам.
Леонид Выговский, системный архитектор IT-компании LiveTex
— Издание уже 20 лет переиздаётся в изначальном виде. В этом, конечно, главный недостаток книги: некоторые шаблоны уже неактуальны. Думаю, её полезно читать уже после других, более современных, книг по паттернам проектирования. Тем более что она написана сухим академическим языком. Для понимания паттернов эта книга не must read, но её прочтение добавляет крутости в глазах коллег-программистов. 🙂 Начинать я советую с «Паттернов проектирования» (Head First Design Patterns).
Купить на Litres.ru
3. «Чистый код. Создание, анализ и рефакторинг», Роберт К. Мартин
Интересная, но во многом спорная книга о том, как писать понятный и поддерживаемый код.
Леонид Выговский, системный архитектор IT-компании LiveTex
— Почему спорная? Книг про написание кода уже огромное количество, и часть приёмов являются общепризнанными. Но каждый автор добавляет что-то своё. Лично для меня мнение Боба Мартина кажется иногда странным и противоречащим другим источникам. Не must read, но прочитать всё же стоит. Качество кода после прочтения становится лучше.
Купить на Litres.ru
4. «Предметно-ориентированное проектирование», Эрик Эванс
Очень сильная книга, которая мотивирует к саморазвитию. После прочтения кажется, что без ПОП качественный код не написать.
Леонид Выговский, системный архитектор IT-компании LiveTex
— Из этой книги выросли концепции СQRS, BDD, onion-architecture и много других интересных идей. Единственный недостаток: книга насквозь теоретическая. Практическую пользу она приобрела только с выходом книги Вона Вернона «Реализация методов предметно-ориентированного проектирования» (Implementing Domain Driven Design). Поэтому читать их надо последовательно, сразу друг за другом.
Купить на Litres.ru
5. «JavaScript: сильные стороны», Дуглас Крокфорд
Обязательная книга для веб-разработчиков. В ней Дуглас Крокфорд рассказывает о преимуществах языка JavaScript и учит грамотно их применять для создания эффективного кода.
Купить на Litres.ru
6. «Шаблоны корпоративных приложений», Мартин Фаулер и другие
Книга описывает базовые принципы проектирования ПО для корпоративных платформ.
Купить на Litres.ru
7. «Совершенный код. Мастер-класс», Стив Макконнелл
Классическая книга о том, как писать код лучше.
Михаил Осотов, директор по производству «Центра высоких технологий»
— Принципы, о которых рассказывается в книге, актуальны в любые времена, несмотря на то, что первое издание было выпущено аж в 1993 году. Волшебство этой книги заключается в том, что можно перечитывать её каждый год и каждый раз узнавать что-то новое.
Купить на Litres.ru
8. «Рефакторинг. Улучшение существующего кода», Мартин Фаулер и другие
Из серии книг по написанию понятного и качественного кода, «Рефакторинг» — лучшая.
Леонид Выговский, системный архитектор IT-компании LiveTex
Выговский: «Она не только показывает хороший код, но и на примере плохого объясняет, чем именно он плох. Эта книга — must read для всех. Причём чем раньше вы её прочтёте, тем лучше. Качество кода после прочтения сильно вырастет».
Если книгу Фаулера вы уже прочли, обратите внимание на «Рефакторинг с использованием шаблонов» (Refactoring to Patterns) Джошуа Кериевски, которую рекомендует Михаил Осотов.
«Рефакторинг с использованием шаблонов» Кериевски — отличная книга для тех, кто каждый день сталкивается с проблемой легаси-кода и технического долга в своих проектах.
Михаил Осотов, директор по производству «Центра высоких технологий»
— Эта книга поможет сохранить свои нервы, подружиться с рефакторингом и сделать код лучше.
9. «Паттерны проектирования», Эрик Фримен, Элизабет Фримен и другие
Серия Head First, на мой взгляд, идеально подходит для новичков в области разработки ПО.
Михаил Осотов, директор по производству «Центра высоких технологий»
— Все книги написаны разными авторами, но в каждой виден общий подход, который выражается в простой подаче материала, интересных и простых примерах.
Купить на Litres.ru
10. «Язык программирования C», Брайан У. Керниган, Деннис М. Ритчи
Классическое учебное пособие по языку C, написанное его же создателями. Однако начинающим эта книга может показаться сложной, поскольку требует от читателя знания основ программирования.
11. «Эффективное использование С++. 55 верных способов улучшить структуру и код ваших программ», Скотт Майерс
Книга содержит советы по проектированию программ, работе с шаблонами и управлению ресурсами, а также другие рекомендации по созданию качественного ПО на языке С++.
Купить на Litres.ru
12. «Экстремальное программирование: разработка через тестирование», Кент Бек
Автор на примерах описывает методику разработки ПО, которая предполагает тестирование программ ещё до написания их кода.
13. «Алгоритмы. Построение и анализ», Томас Х. Кормен и другие
Эту книгу называют библией алгоритмов. Она зарекомендовала себя как отличное научное пособие для студентов технических вузов и всех, кто интересуется информатикой. Книга доступным языком знакомит с алгоритмами разных типов и описывает их особенности.
Купить на Litres.ru
14. «Регулярные выражения», Джеффри Фридл
Издание об эффективной работе с текстом в Perl, PHP, Java, Python, Ruby и других языках программирования.
Купить на Litres.ru
15. «CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#», Джеффри Рихтер
Классический учебник по разработке приложений для платформы Microsoft, в том числе с помощью Silverlight, Windows Presentation Foundation, ASP.NET и прочих технологий компании.
Купить на Litres.ru
16. «Современное проектирование на C++», Андрей Александреску
Книга для опытных программистов на C++. Автор предлагает новый подход к разработке, сочетающий метапрограммирование шаблонов, обобщённое программирование и объектно-ориентированное программирование на этом языке.
17. «Microsoft ASP.NET 2.0. Базовый курс», Дино Эспозито
Детальное руководство для опытных специалистов по ASP.NET 2.0. Книга учит создавать мощные, надёжные и масштабируемые сайты на этой платформе.
Купить на Litres.ru
18. «Шаблоны тестирования xUnit. Рефакторинг кода тестов», Джерард Месарош
Автор книги показывает, как применять шаблоны проектирования, исключение повторений, инкапсуляцию и другие принципы разработки ПО к написанию кода тестов.
19. «Компиляторы. Принципы, технологии и инструментарий», Альфред В. Ахо и другие
Книга описывает базовые принципы разработки компиляторов и делает особый акцент на оптимизации кода. В помощь читателю — большое количество примеров из практики.
Купить на Litres.ru
20. «Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET», Кржиштоф Цвалина, Брэд Абрамс
Издание содержит лучшие приёмы разработки библиотек для платформы Microsoft .NET Framework. Книга должна упростить работу любого .NET-специалиста, который пишет код для других разработчиков.
Полный рейтинг англоязычных книг доступен на сайте Dev-Books. Там же можно просмотреть списки самых популярных книг на определённые темы, будь то Java, Database Design или CSS.
Dev-Books →
lifehacker.ru
Книги по C++ и Си
Язык С — не просто фундамент всех современных языков программирования, и сам — современный язык, идеальный для написания эффективных приложений передового уровня. Последние 20 лет С не стоял на месте. Сам язык и окружающая его экосистема подвергаются пересмотру. Эта книга начинается там, где другие заканчиваются. В ней рассказано, как изменилась функциональность, поддерживаемая любым компилятором, благодаря двум новым стандартам С, вышедшим со времен оригинального ANSI. Цель книги — рассмотреть то, чего нет в других учебниках по С: инструменты и окружение; библиотеки для работы со связанными списками и анализаторами XML; написание удобно читаемого кода с дружественным программным интерфейсом.
Издание предназначено для программистов, имеющих опыт работы на каком-1 языке и обладающими базовыми знаниями о С.
9,690 просмотров всего, 2 просмотров сегодня
В этой книге с помощью примеров программ и иллюстраций, показывающих результаты работы кода, разбираются все ключевые аспекты языка С. В этой книге описано даже то. как установить бесплатный компилятор для языка С и работать в нем, – у вас просто не будет шансов ошибиться!
Книга идеально подойдет программистам, переключающимся па работу с другим языком, студентам, изучающим язык С, а также чем. кто только начинает свою профессиональную деятельность и хочет научиться основам процедурного программирования.
12,055 просмотров всего, 3 просмотров сегодня
Сетевые многопользовательские игры — это многомиллиардный бизнес, привлекающий десятки
миллионов игроков. Эта книга на реальных примерах рассказывает об особенностях разработки таких
игр и основах построения надежной многопользовательской архитектуры.
Вы узнаете об основах сетевого программирования с точки зрения разработчиков игр, управлении
игрой через передачу данных, сетевых обновлениях, обеспечении надежной работы и научитесь со
здавать безопасный и масштабируемый код. Не останутся без внимания игровые сервисы и облачные
технологии.
8,617 просмотров всего, 3 просмотров сегодня
Эта книга не является учебником по языку C++, это учебник по программированию. Несмотря на то что ее автор — автор языка С++, книга не посвящена этому языку программирования; он играет в книге сугубо иллюстративную роль. Автор задумал данную книгу как вводный курс по программированию. Поскольку теория без практики совершенно бессмысленна, такой учебник должен изобиловать примерами программных решений, и неудивительно, что автор языка C++ использовал в книге свое детище.
В книге в первую очередь описан широкий круг понятий и приемов программирования, необходимых для того, чтобы стать профессиональным программистом, и в гораздо меньшей степени — возможности языка программирования C++.
В первую очередь, книга адресована начинающим программистам и студентам компьютерных специальностей, которые найдут в ней много новой информации, и смогут узнать точку зрения создателя языка С++ на современные методы программирования.
Если вы решили стать программистом, и уже знакомы с азами C++ — эта книга для вас, в первую очередь потому, что программирование — это не только, и не столько знание инструмента (языка программирования C++), сколько понимание самого процесса. Автор недаром не ограничился своим первоклассным (но ни в коей мере не являющимся учебником для программистов без большого практического опыта) трудом Язык программирования C++.
Проводя грубую аналогию — виртуозное владение топором никого не делало настоящим плотником. Бьярне Страуструп в очередной раз приходит на помощь программистам — создав уникальный язык программирования, он не ограничивается им и рассказывает о том, как правильно им воспользоваться, даже не зная все его тонкости и возможности.
Основные темы книги:
Подготовка к созданию реальных программ. Автор книги предполагает, что читатели в конце концов начнут писать нетривиальные программы либо в качестве профессиональных разработчиков программного обеспечения, либо в качестве программистов, работающих в других областях науки и техники.
Упор на основные концепции и методы. Основные концепции и методы программирования в книге излагаются глубже, чем это принято в традиционных вводных курсах. Этот подход дает основательный фундамент для разработки полезных, правильных, понятных и эффективных программ.
Программирование на современном языке С++ (C++11 и C++14). Книга представляет собой введение в программирование, включая объектно-ориентированное и обобщенное программирование. Одновременно она представляет собой введение в язык С++, один из широко применяющихся языков программирования в современном мире. В книге описаны современные методы программирования на С++, включая стандартную библиотеку и возможности C++11 и C++14, позволяющие упростить программирование.
Для начинающих программистов и всех, кто хочет научиться программировать. Книга предназначена в основном для людей, никогда ранее не программировавших, и опробована на более чем тысяче студентов университета. Однако и опытные программисты, и студенты, уже изучившие основы программирования, найдут в книге много полезной информации, которая позволит им перейти на еще более высокий уровень мастерства.
Широкий охват тем. Первая половина книги охватывает широкий спектр основных понятий, методов проектирования и программирования, свойств языка С++ и его библиотек. Это позволит читателям писать программы, выполняющие ввод и вывод данных, вычисления и построение простых графических изображений. Во второй половине рассматриваются более специализированные темы (такие как обработка текста, тестирование и язык C). В книге содержится много справочного материала. Исходные тексты программ и иные материалы читатели могут найти на веб-сайте автора.
13,677 просмотров всего, 4 просмотров сегодня
C++ PROGRAMMING: PROGRAM DESIGN INCLUDING DATA STRUCTURES, Sixth Edition remains the definitive text for the CS1/CS2 course sequence. D.S. Malik\’s time-tested, student-centered methodology uses a strong focus on problem-solving and full-code examples to vividly demonstrate the how and why of applying programming concepts and utilizing C++ to work through a problem. This new edition includes updated end-of-chapter exercises, new debugging exercises, an earlier introduction to variables and a streamlined discussion of user-discussion of user-defined functions. Malik\’s text ensures students learn how to apply the C++ programming language, and are motivated to understand the «why?» behind key C++ concepts.
Features and Benefits
— A full-color interior precisely displays syntax highlighting, emphasizing C++ keywords and comments for beginning programmers.
— More than 300 visual diagrams illustrate challenging concepts.
— Numbered full-code examples throughout walk students through the stages of Input, Output, Problem Analysis, and Algorithm Design to illustrate key topics in each chapter. Every programming example includes a full explanation and sample run.
— A CourseMate digital companion brings the text to life with nearly 20 instructional videos that walk students step-by-step step through key programming examples — plus such interactive study tools as quizzes, flashcards, and games. The CourseMate\’s digital Lab Manual offers additional hands-on exercises, helping students reinforce critical thinking through practice.
4,260 просмотров всего, сегодня нет просмотров
Эта книга предлагает быстрый способ изучить принципы объектно-ориентированного программирования и освоить практику программирования на языке С++ новейшей 11-й версии. Издание может использоваться как учебный курс для начинающих осваивать C++, так и удобный справочник для тех, кто хочет быстро найти актуальную информацию о том или ином аспекте языка.
Автор книги Алекс Эллайн — профессиональный разработчик на С++, создатель популярнейшего ресурса Cprogramming.com, предлагает собственную уникальную методику обучения программирования, которая позволит вам в кратчайшие сроки стать экспертом разработки на C++.
19,967 просмотров всего, сегодня нет просмотров
В этой книге отражен бесценный опыт ее автора как программиста на C++. Новые возможности этого языка программирования, появившиеся в стандартах C++11 и C++14 — это не просто новые ключевые слова или функции, это появление совершенно новых концепций, так что для их эффективного использования недостаточно просто узнать об их существовании, и программировать на C++11, как на несколько улучшенном и расширенном функционально C++98.
Когда происходят такие глобальные изменения в языке программирования, их изучению следует посвятить определенное время, написать сотни, а еще лучше — тысячи строк кода, и столкнуться с массой проблем, кажущихся тем более странными и непонятными, чем большим опытом работы с C++98 вы обладаете. К программированию в полной мере относится фраза Евклида о том, что в геометрии нет царских путей. Но пройти путь изучения и освоения нового языка программирования вам может помочь проводник, показывающий наиболее интересные места и предупреждающий о ямах и ухабах. Таким проводником может послужить книга Скотта Мейерса. С ней вы не заблудитесь и не забредете в дебри, из которых будете долго и трудно выбираться с помощью отладчика.
При этом книга не просто научит вас использовать новые возможности языка — она научит использовать их эффективно. Но и это не все — книга не просто учит эффективному применению C++, но еще и рассказывает, почему ту или иную задачу следует решать именно так.
Эта книга заставляет вас не просто заучить правила — она заставляет думать.
И хотя эта книга в первую очередь предназначена для энтузиастов и профессионалов, она достойна места на полке любого программиста — как профессионала, так и зеленого новичка.
Освоение C++11 и C++14 — это больше, чем просто ознакомление с вводимыми этими стандартами возможностями (например, объявлениями типов auto, семантикой перемещения, лямбда-выражениями или поддержкой многопоточности). Вопрос в том, как использовать их эффективно — так, чтобы создаваемые программы были корректны, эффективны и переносимы, а также чтобы их легко можно было сопровождать.
Именно этим вопросам и посвящена данная книга, описывающая создание по-настоящему хорошего программного обеспечения с использованием C++11 и C++14 — т.е. с использованием современного C++.
В книге рассматриваются следующие темы:
Преимущества и недостатки инициализации с помощью фигурных скобок, спецификации noexcept, прямой передачи и функций make интеллектуальных указателей; Связь между std::move, std::forward, rvalue-ссылками и универсальными ссылками; Методы написания понятных, корректных, эффективных лямбда-выражений; Чем std::atomic отличается от volatile, как они используются и как соотносятся с API параллельных вычислений C++; Какие из лучших методов «старого» программирования на C++ (т.е. C++98) должны быть пересмотрены при работе с современным C++.
Эффективный и современный C++, следуя принципам более ранних книг Скотта Мейерса, охватывает совершенно новый материал. Эта книга достойна занять свое место на полке каждого программиста на современном C++.
14,405 просмотров всего, 2 просмотров сегодня
Если вы хотите научиться программировать первоклассные игры, вам просто необходимо изучить язык С++.
Эта книга поможет вам освоить разработку игр с самых азов, независимо от того, есть ли у вас опыт программирования. Гораздо интересней учиться, когда обучение превращается в игру.
Каждая глава книги описывает самостоятельный игровой проект. В заключительной главе вам предстоит написать сложную игру, которая объединяет все приемы программирования, рассмотренные в предыдущих главах.
Книга, которую вы держите в руках, идеально подойдет для начинающего программиста, планирующего не только как следует освоить непростой язык С++, но и поупражняться в программировании игр.
20,480 просмотров всего, 1 просмотров сегодня
Книга посвящена разработке приложений для Windows, Mac OS X и Linux с использованием библиотеки Qt версии 5.3. Подробно рассмотрены возможности, предоставляемые этой библиотекой, и описаны особенности, выгодно отличающие ее от других библиотек. Описана интегрированная среда разработки Qt Creator и работа с технологией Qt Quick. Книга содержит исчерпывающую информацию о классах Qt 5, и так же даны практические рекомендации их применения, проиллюстрированные на большом количестве подробно прокомментированных примеров. Проекты примеров из книги размещены на сайте издательства.
Для программистов.
33,934 просмотров всего, 2 просмотров сегодня
Introduce the power and practicality of C++ programming to entry-level engineers with Bronson\’s C++ FOR ENGINEERS AND SCIENTISTS, 4E. This proven, pragmatic text is designed specifically for today\’s first- and second-year engineering and science students with a wealth of new applications and examples taken from real situations involving electrical and structural engineering, fluid mechanics, mathematics, power generation, and heat transfer challenges. The book starts with a solid foundation in procedural programming before moving into a reorganized, clear presentation of object-oriented concepts. Dynamic case studies, career spotlights and engineering-driven applications showcase the relevance of concepts students are learning to their careers. Helpful tips demonstrate how to avoid common C++ programming errors, while updates ensure that students are learning the most recent C++ code standards.
6,417 просмотров всего, 2 просмотров сегодня
Навигация по записям
forcoder.ru
Книги по C и C++ | ProgBook
В самоучителе содержатся все необходимые нюансы параллельного программирования с применением OpenMP для создания современных высокопроизводительных параллельных вычислительных систем, обладающих общей памятью.Вся информация представлена в теоретическом виде с сопровождением наглядных примеров, при помощи которых читатель сможет быстрее освоить материал и запомнить его.
В книге «Параллельное программирование с использованием OpenMP» содержится только необходимая информация о параллельном программировании, которая направлена на создание производительных современных систем. Данная книга может использоваться в процессе подготовки специалистов в области программирования и информационных технологий. Автор книги М. П. Левин разработал собственную методику и изложил её в доступном виде для аспирантов и студентов высших учебных заведений аналогичного направления.
Основной бедой значительной части программистов, называющих себя специалистами по Си++, является то, что на самом деле они пишут на классическом Си с небольшими элементами объектного программирования. При таком подходе вся потенциальная мощь этого языка остаётся совершенно невостребованной. Стивен Прата, один из трёх авторов учебника «Язык Си», признанного лучшим учебным пособием по этому языку, программист и преподаватель программирования, составил этот учебник так, чтобы помочь читателю избежать подобных ошибок.
В процессе чтения книги вы ознакомитесь с такими необходимыми базовыми понятиями, как «нисходящее проектирование», когда глобальная задача разбивается на более мелкие части, которые легче уяснить для себя, «структурирование кода», когда листинг программы составляется таким образом, что циклы, условия, обработка исключений и иные логические элементы программы ясно видны даже при беглом взгляде на код, узнаете такие понятия объектно-ориентированного программирования, как наследование классов и структур, обработка исключительных ситуаций, научитесь пользоваться такими непростыми, но мощными средствами, как шаблонизатор классов и введёнными в 2011 году в стандарт языка понятиями «лямбда-функции», «семантики переноса», и «интеллектуальный указатель».
Так же, как и «Язык Си», новая книга Стивена Праты написана дружелюбным и понятным языком, не пугающим читателя и точно так же построена по схеме «небольшое лирическое отступление»-«теория вопроса»-«живой пример реализации»-«упражнение для самопроверки». Помимо объяснения собственно синтаксиса языка и его отличий от Си книга содержит сотни примеров программ, имеющих практическое применение, а также обучает использованию библиотеки шаблонов STL, наиболее полно использующей возможности Си++. Самоучитель по программированию «Язык программирования C++. Лекции и упражнения» Стивена Праты предназначен как студентам технических специальностей, обучающимся объектно-ориентированному программированию «с нуля», так и профессиональным программистам, желающим ознакомиться с новым ISO стандартом «Си++ 2011».
Компанией Borland выпущен продукт Borland C++ Builder для быстрого создания приложений на C++. Эта интегрированная среда разработки сочетает в себе гибкость и мощность языка C++ с удобством Visual Basic. Данная книга – это отличная возможность освоить C++ Builder в полной мере за минимальное время. С изучением ее материалов результативность вашей работы существенно повысится.
Быстрое создание приложений на C++ превосходно воплощается Borland C++ Builder. Встроенный редактор интерфейса позволяет существенно упростить процесс программирования и делает разработку визуально наглядной. С этим сборником вы научитесь правильно обращаться с расширенными формами, управлять базами данных собственными разработками приложений.
Узнаете об использовании элементов управления ActiveX и VCL. А сложные приложения на C++ станут намного проще с Borlnd C++ Builder. Книга «Borland C++ Builder. Библиотека программиста» поможет выйти на качественно новый уровень разработок приложений. Автор Мэтт Теллес.
В первых главах даются базовые представления о структуре языка – рассматриваются типы данных, переменные, операторы, функции, объекты. За ними очерчиваются формы более сложных элементов объектно-ориентированного программирования — классов. В последующих частях книги объясняются механизмы обработки исключений, шаблоны, концепция пространства имен, способы реализации динамической идентификации типов, структура стандартной библиотеки шаблонов STL, приводится справочная информация по ключевым словам среды .NET.
Герберт Шилдт, автор всемирно известных бестселлеров по программированию на Java, C, и C#, в своей книге «C++: базовый курс» дает исчерпывающую информацию по всем основным элементам программирования на C++, которая будет полезна и новичкам, и опытным программистам.
Шахматы, шашки, крестики-нолики, уголки – у всех этих и многих других подобных игр есть некоторые общие особенности, которые позволяют применять при их программировании схожие решения. Методы перебора, статистические понятия, хеш-таблицы, эвристический анализ – вот неполный перечень описываемых в данном томе приемов, которые принято использовать при создании логических игр.
К книге Евгения Корнилова «Программирование шахмат и других логических игр» прилагается компакт-диск с наиболее известными, свободными кодами шахматных программ и текстами программ самого автора.
В книге описаны основы синтаксиса и методика разработки приложений на нескольких объектно-ориентированных языках программирования: C++/CLI, C# и Java (J#). Особенностью изложенного в книге материала является параллельное сравнивание на конкретных примерах схожих языковых конструкций. Добавочно каждая из программ для более наглядного понимания взаимосвязи между объектами поясняется UML диаграммами.
Более детально рассмотрены такие сложные для самостоятельного изучения конструкции языка, как делегаты, события, потоки и их синхронизация.
Подробно описаны особенности синтаксиса и использования в каждом из трех языков.
Книга Медведева В. И. «Особенности объектно-ориентированного программирования на C++/CLI, C# и Java» будет полезна для изучения преподавателям и студентам профильных ВУЗов, а также профессионалам, имеющих опыт программирования на C++ и желающих освоить разработку на других языках.
Этот учебник C++ может использоваться как преподавателями учебных заведений, так и для самостоятельного изучения языка программирования. Он разделён на несколько частей, посвящённых собственно основам языка и программирования в целом, особенностям среды Visual C++, процессу отладки кода, особенностям программирования под Windows. Каждый из рассматриваемых вопросов имеет практические приложения, часть из которых читателю предлагается выполнить самостоятельно. Во многом «Visual C++ 2010. Полный курс» Хортона напоминает классические университетские учебники, поэтому он хорошо подойдёт приверженцам системного усвоения знаний.
В книге освещены все этапы создания приложения для Windows 95 и рассмотрено большинство проблем, которые могут возникнуть на этом пути. Хотя примеры программ приведены на С, рассказ опирается на возможности самой системы, а не на особенности конкретных языков или библиотек, поэтому многие курсы обучения начинаются именно с «Программирования для Windows 95» Петзольда. В первом томе рассматриваются базовые принципы программирования, обмен информацией между компьютером и периферийными устройствами, использование графического интерфейса пользователя. Второй посвящён более глубоким вопросам – управлению ресурсами и взаимодействию между приложениями.
В книге освещены все этапы создания приложения для Windows 95 и рассмотрено большинство проблем, которые могут возникнуть на этом пути. Хотя примеры программ приведены на С, рассказ опирается на возможности самой системы, а не на особенности конкретных языков или библиотек, поэтому многие курсы обучения начинаются именно с «Программирования для Windows 95» Петзольда. В первом томе рассматриваются базовые принципы программирования, обмен информацией между компьютером и периферийными устройствами, использование графического интерфейса пользователя. Второй посвящён более глубоким вопросам – управлению ресурсами и взаимодействию между приложениями.
«Практикум по программированию на С++» — это практический курс, направленный на обучение читателя программированию на C и C++. Практикум содержит почти 200 программных решений и 300 тестовых заданий по более чем 20 темам — от самых простейших вычислений, до обработки двоичных файлов. Отдельной главой в книге выделен материал, посвященный развитию у читателя навыков «чтения» и анализа готовых программных решений, увеличению «словарного запаса» программиста.
«Практикум по программированию на С++», составленный Е.Л. Романовым, рекомендуется студентам, обучающимся на факультетах информатики, а также всем тем, кто желает самостоятельно изучать язык C и технологии программирования на этом языке. Также, книга будет полезна преподавателям — в практикуме содержатся лабораторные работы, а материал его вполне можно разбить на 2-3 семестра.
progbook.ru
Книга «Курс программирования на языке Си. Учебник»
Добавить- Читаю
- Хочу прочитать
- Прочитал
Оцените книгу
Скачать книгу
1089 скачиваний
Читать онлайн
1 планируeт прочитать
О книге «Курс программирования на языке Си. Учебник»
Настоящий учебник предназначен для изучения программирования на стандартном языке Си. Ориентация сделана как на изложение синтаксиса и семантики конструкций языка, так и на их практическое использование при решении типовых задач программирования. Целью учебника является изложение методики и принципов корректного, структурированного программирования на языке Си. Программы, иллюстрирующие конструкции и возможности языка, написаны максимально понятно для читателя. Авторы нигде не гнались за эффективностью кода в ущерб его структурированности и простоты. Возможности современных компиляторов языка Си таковы, что они позволяют генерировать весьма эффективный код по тексту хорошо структурированной программы без специальных ухищрений программиста, направленных на повышение быстродействия или незначительную экономию памяти. Книга написана на основе дисциплин, которые авторы в течение ряда лет преподавали в Московском институте электроники и математики на факультетах прикладной математики, автоматики и вычислительной техники и факультете повышения квалификации инженеров. Материал курса соответствует учебной программе дисциплины «Алгоритмические языки и программирование». Изучение указанной дисциплины, в частности языка Си, служит основой для курсов по математическому обеспечению компьютеров и сетей, по операционным системам, построению компиляторов и системному программированию. Издание предназначено для студентов и преподавателей вузов, а также для желающих освоить самостоятельно программирование на языке Си.
На нашем сайте вы можете скачать книгу «Курс программирования на языке Си. Учебник» Подбельский Вадим Валерьевич, Фомин Сергей Сергеевич бесплатно и без регистрации в формате fb2, rtf, epub, pdf, txt, читать книгу онлайн или купить книгу в интернет-магазине.Отзывы читателей
Подборки книг
Похожие книги
Информация обновлена:
avidreaders.ru
книги и учебники по программированию
Для освоения языка QBasic читателю предлагается более 100 учебных программ. Просто, изящно, точно изложены следующие вопросы: основные принципы программирования, среда QBasic, структура программ, алгоритмы и данные, операторы, переменные, способы ввода данных, принципы модульного программирования, выполнение вычислений, создание цветных изображений, таблиц и графиков, типы данных, работа с массивами и кодами ASCII, встроенные функции, способы отладки программ, правила хорошего тона в программировании.
Авторы — опытные преподаватели, эффективность их методики признана и подтверждена экспериментально не только в нашей стране, но и за рубежом. Книга предназначена как для самостоятельных занятий, так и в качестве пособия для учителей информатики в школе.
В книге описывается разработка веб-приложений для Node.js – платформы, выводящей язык программирования JavaScript за пределы браузеров, что позволяет применять его для серверных приложений. Основу платформы составляет движок JavaScript – исключительно быстрый продукт с надёжной и усовершенствованной библиотекой, сетевого асинхронного вывода и ввода, из Chrom браузера.
Основной упор платформы Node.js приходится на создание масштабируемых, высокопроизводительных серверных и клиентских приложений.Самоучитель содержит массу практических примеров, при помощи которых становится доступным для каждого разработчика пользование клиентским и серверным объектом HTTP, Express и Connect. Даже у неопытных программистов не появится проблем в изучении алгоритмов асинхронного выполнения и работе с базами данных MongoDB и SQL.
Автор издания Дэвид Хэррон начал книгу с практических рекомендаций для настройки и установки Node.js в эксплуатационном режиме и режиме разработки. Даже начинающий пользователь, знакомый с веб-разработками и JavaScript, после прочтения данной книги научится разрабатывать серверные и клиентские HTTP-приложения, применять Node.js на основе спецификации CommonJS, при помощи которого реализуются многие объектные проектирования.
Специфические задачи требуют специфических инструментов, и обработка по-настоящему больших массивов данных может оказаться непосильной задачей для традиционных реляционных баз данных, основанных на SQL. Тем, кто хочет ознакомиться с кластерной обработкой данных, на помощь придет Apache Hadoop, о котором и расскажет эта книга.
С ростом объёмов обрабатываемых данных традиционные SQL-ориентированные СУБД постепенно начинают «сдавать позиции», и наступает момент, когда разработчику информационной системы приходится переходить на качественно иной уровень разработки. Там, где не справляется один, пусть даже и многопроцессорный сервер, в действие вступают «кластерные» системы. Одним из инструментов работы с большими объёмами данных на распределённом кластере является Apache Hadoop, некоммерческий проект фонда Apache Software Foundation, который может работать на кластерах, состоящих из сотен и даже тысяч компьютеров.
Основная область применения этого программного продукта — статистический анализ. Справочное пособие «Hadoop в действии» Чака Лэма познакомит читателя с со «стилем MapReduce», то есть стилем программирования, когда задача решается путём распараллеливания статистического анализа или сложного вычисления на множество одновременно выполняющихся процессов с последующей обработкой результатов каждого «потока». Ознакомив читателя с простыми примерами параллельных вычислений, Чак Лэм переходит к практическому применению Hadoop, показывая, как использовать эту систему для сложного анализа данных. От читателя потребуется знание основ языка Java и знакомство с математической статистикой, без которой будет сложно понять суть более сложных примеров, приведённых в книге.
Учебник представляет собой уникальное российское издание, в котором описывается использование сервера InterBase, а также варианты написания клиентских приложений для баз данных. Книга предназначается как для начинающих программистов, так и для опытных практикующих пользователей в разработке приложений в InterBase.
Первая часть издания «Быстрый старт» ориентирована для начинающих пользователей и содержит описание основных понятий и ключевых примеров работы в среде InterBase. Вторая часть содержит необходимые материалы для разработки клиентских приложений при помощи самых эффективных и популярных средств доступа к OLE DB IBProvider, InterBase-FIBPlus, а также примеры работы с InterBase API. Книга содержит описание основных моментов использования драйверов JDBC и ODBC для InterBase. Третья часть издания содержит подробное описание вопросов администрирования InterBase , а именно варианты починки баз данных и оптимизации работы серверов и т. д. Данная часть содержит подробное описание архитектуры InterBase и огромное число вопросов, касающихся соответствующей темы.
Авторы книги С. Востриков и А. Козявин привели все необходимые для каждого читателя переводы документов InterBase, а также представили российский клон InterBase6.x Yaffil. Вся информация, содержащаяся на страницах издания, способствует улучшению знаний для опытных программистов и освоению архитектуры, администрирования и разработки приложения для баз данных Firebird, Yaffil и InterBase начинающим разработчикам. Издатели книги также позаботились о глоссарии и списке ключевых слов для InterBase, что оценили по достоинству читатели, которые используют данный учебник на протяжении многих лет и рекомендуют его другим программистам в качестве основной литературы.
Язык программирования QBasic на протяжении многих лет пользуется огромным спросом среди начинающих и опытных программистов. Данный сборник задач содержит массу авторских разработок, которые позволяют убедиться в оригинальности и огромных возможностях Бейсика. Именно огромный читательский спрос на первое издание побудил автора заняться разработкой второго, не менее увлекательного самоучителя.
Второе издание «Бейсик в задачах и примерах» содержит 150 новых увлекательных задач и примеров, которые дополнены пошаговым решением, имеющим полное описание каждого действия. Именно подобная методика пробудила у программистов огромный интерес к книге, так как при её помощи можно добиться невероятных успехов в данной области. Несмотря на то, что Бейсик не обладает мультимедийными свойствами, благодаря ему можно в неограниченных рамках создавать эффектные и оригинальные программы.
Содержащиеся в самоучителе базовые конструкции и основные необходимые понятия позволяют каждому желающему освоить азы программирования. Автор издания И. К. Сафронов, эксперт данной области, учёл всё до мелочей, создавая книгу, добавив в её содержание справочник языка программирования QBasic, для того, чтобы любой разработчик мог, пользуясь одним самоучителем, добиться желаемого результата.
Учебник содержит различные методы для создания базы данных при помощи использования среды Microsoft Access. Вся информация изложена в форме рекомендаций и советов для работы с интегрированной средой, в виде краткого теоретического материала, изложенного в отдельных тематических разделах.
Самоучитель состоит из отдельных разделов, в каждом из которых предоставляется теоретический материал и практические задания или лабораторные работы, направленные на проверку предоставленного материала и его лучшее усваивание. Здесь подробно рассматриваются конкретные примеры, часто задаваемые вопросы и самые популярные и необходимые варианты заданий, которые предназначаются для самостоятельного выполнения и анализа. Для описания интерфейса программы используется Microsoft Access 2002 года, что в настоящее время не актуально, но полезно для начинающих пользователей, так как в данном деле огромную роль играет последовательность изучения материала.
Авторы книги «Проектирование баз данных. СУБД Microsoft Access. Учебное пособие» Н. Гринченко, Н. Макаров и Е. Гусев изложили материал в такой форме, чтобы студенты ВУЗов могли быстро овладеть основами работы интегрированной среды MS Access 1997 – 2002 года. Благодаря квалификации создателей учебника и их опыту работы и практике в данной сфере, весь теоретический материал издания изложен в компактной и доступной форме, что ценится в настоящее время и является незаменимым для большинства студентов при изучении проектирования базы данных.
Самоучитель содержит множество вопросов, связанных с базами данных и их системами. Здесь соединены общие теоретические положения и практические аспекты. Ряд примеров, сопровождающий основной изложенный материал является отличным пособием для студентов и опытных программистов.
Теоретическая часть самоучителя содержит информацию о моделях данных и реляционной алгебре. Информация изложена в доступной форме, так как рассчитана для начинающих разработчиков. Практические аспекты, рассмотренные в книге, включают в себя языки программирования Java и SQL, физические характеристики различных баз данных и их взаимодействие с Интернетом, а также объектно-ориентированные системы. Приведённые авторские примеры представлены в виде иллюстраций и полномасштабных рабочих моделей СУБД, разработанных для компаний, занимающихся прокатом видеокассет.
Автор издания Грег Риккарди посвящал свою книгу студентам старших классов, но, несмотря на это, издание «Системы баз данных. Теория и практика использования в Internet и среде Java» стало пользоваться огромной популярностью среди широкого круга читателей, благодаря грамотному объединению информации связанной с взаимодополняющими областями. Несмотря на то, что самоучитель написан в 2001 году, на сегодняшнее время он пользуется огромным спросом, так как содержит всю необходимую информацию о системе базы данных и использовании Интернета в среде Java.
Книга «CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#» является мастер-классом и считается классическим учебником программирования, в котором содержится подробное описание языковой среды Microsoft .NET Framework 4.0.
Третье издание подробно рассматривает функционирование и внутреннее устройство общеязыковой среды. Книга учит создавать надёжные приложения различной тематики и вида, используя платформы Microsoft Silverlight, Windows Presentation Foundation, ASP.NET и другие. Данное издание содержит обновления соответствующие принципу многоядерного программирования и платформе .NET Framework версии 4.0.
Книга «CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#» написана признанным экспертом Джеффри Рихтером, знающим своё дело в области программирования. Автор издания на протяжении долгих лет является членом команды разработчиков компании Microsoft и консультантом .net Framework, благодаря чему имеет многолетний опыт и необходимую базу знаний для обучения начинающих программистов.
Книга предназначена для обучения созданию различных мобильных приложений под управлением Windows Mobile. Самоучитель содержит подробное рассмотрение принципов использования различных технологий программирования .net Compact Framework версии 3.5.
Книга «Программирование для мобильных устройств под управлением Windows Mobile» содержит подробное и доступное описание создания различных приложений, для каждого из которых приведены авторские примеры и полезные советы для использования .net Compact Framework. Автор книги Александр Климов посвятил своё творение веб-разработчикам, которые имеют опыт в программировании на .net Framework. Данное издание расширяет кругозор читателей за счёт подробного описания технологии программирования и процесса создания приложений для мобильных устройств разного типа.
Учебник «Изучаем jQuery» является незаменимым в изучении jQuery – JavaScript фреймворка, который завоевал огромное признание среди программистов. Библиотека jQuery применялась для создания более 500 тысяч ведущих сайтов мира. При помощи данной библиотеки и описанных в издательстве приёмов и примеров, каждый читатель сможет эффективно и быстро добавить уникальную и незаменимую функциональность на свой сайт.
Второе издание «Изучаем jQuery» является увлекательной и практичной книгой для изучения основ jQuery, где можно изучить все нюансы добавления анимации и интерактивности на веб-сайты. Автор понятным языком описывает сложные методики, виджеты интерфейса пользователя, а также совершенно новый фреймворк jQuerly Mobile. Книга рассчитана как для начинающих разработчиков, так и для опытных программистов, которые наверняка при помощи данного издания пополнят запас своих знаний.
progbook.ru
Книга «Теория и практика языков программирования. Учебник для вузов. 2-е изд. Стандарт 3-го поколения» / Блог компании Издательский дом «Питер» / Хабр
Учебник посвящен систематическому изложению теории и практики языков программирования. Он отражает классическое содержание учебной дисциплины по языкам программирования. Все сложные вопросы поясняются законченными примерами. Кроме того, здесь предлагается полный комплекс задач и упражнений по узловым вопросам. Учебник охватывает базисные разделы следующих дисциплин: теория формальных языков, теория автоматов и формальных языков, языки программирования, программирование, объектно-ориентированное программирование, логическое и функциональное программирование, теория вычислительных процессов.В новом издании обсуждаются характеристики, а также последние тенденции развития универсальных языков программирования высокого уровня, таких как Scala, Go и Swift; поясняются главные особенности последних стандартов классических языков C++, Java и C#: лямбда-выражения во всех этих языках, cсылочный тип rvalue и семантика перемещения в языке C++ 11, ковариантность и контрвариантность родовых шаблонов в C#; существенно расширено представление скриптового языка Ruby, рассматриваются его блоки, механизмы единичного наследования и подмешивания, а также утиной типизации; добавлено описание аппарата событий и программирования на основе событий; показано применение стиля функционального программирования в скриптовых и объектно-ориентированных языках Python, Ruby, C#, Java, C++, Scala, Go и Swift.
Отрывок из книги. Язык Scala
Язык был создан в Швейцарской политехнической школе Лозанны (2004 год, главный автор — Мартин Одерски). Он стал результатом исследований, направленных на разработку улучшенной языковой поддержки компонентного ПО. За основу были взяты две идеи:
• Язык для программирования компонентного ПО должен быть масштабируемым (должна обеспечиваться возможность с помощью одних и тех же концепций описывать как малые, так и большие фрагменты программ). Поэтому внимание было сконцентрировано на механизмах абстракции, композиции и декомпозиции, а не на введении большого количества конструкций, которые могут быть полезными только на каком-то одном уровне масштабирования.
• Масштабируемая поддержка компонентов обеспечивается языком, объединяющим как объектно-ориентированное, так и функциональное программирование. Некоторые из базовых новшеств Scala представляют собой концепции, являющиеся сплавом этих парадигм программирования. В статически типизированных языках, к которым относится Scala, данные парадигмы до сих пор были полностью разделены.
Scala была выпущена для использования на платформе JVM в январе 2004 года и на платформе .NET в июне 2004 года. Кроме того, в настоящее время активно разрабатывается целый ряд Scala-компиляторов.
Таким образом, Scala — это мультипарадигменный язык со строгой типизацией, который поддерживает функциональное, объектно-ориентированное и параллельное программирование. Предназначен для реализации на вершине виртуальной машины Java и частично мотивирован известными недостатками языка Java. Обеспечивает наиболее агрессивную интеграцию функциональных характеристик в императивный язык. Имеет функции первого класса и высшего порядка, механизм логического вывода локального типа, отложенные (ленивые) вычисления, сопоставление с образцом, карризацию, хвостовую рекурсию, развитые родовые средства (с ковариантностью и контрвариантностью), параллелизм на основе сообщений, наследование на основе трейтов (что-то среднее между классами и интерфейсами). Энергично используется как в промышленности, так и в науке. Развитие финансируется Европейским исследовательским советом.
В Scala используется чистая объектно-ориентированная модель, похожая на применяемую в Smalltalk: каждое значение является объектом (и числа, и результаты функций), а каждая операция — это отправка сообщения, вызов метода объекта. Например, сложение 2 + 3 интерпретируется как 2.+(3), то есть как вызов в объектеприемнике «2» метода «+» с аргументом «3». Здесь в качестве объекта-источника рассматривается число 3. Этим Scala отличается от Java, поскольку в Java разделены примитивные типы (например, boolean или int) и ссылочные типы, а также нет возможности работать с функциями как со значениями.
Конечно, Java-программисты сильно удивятся тому, что в Scala функции также являются объектами. Тем не менее в Scala функцию можно передавать как аргумент, сохранять в качестве переменной или возвращать из другой функции. Такая возможность манипулировать функциями как обычными переменными является краеугольным камнем функционального программирования, суть которого состоит в работе функций с неизменяемыми переменными.
Перед определением функции ставится ключевое слово def. Определения классов начинаются с зарезервированного слова class. Класс может предотвратить дальнейшее создание подклассов, употребляя зарезервированное слово final. Подобно объектно-ориентированным языкам C++, Java, C#, экземпляр класса может ссылаться на себя, используя слово this. Scala допускает перегруженные методы. Как и в Java, ключевое слово extend объявляет, что класс является подклассом другого класса. Scala не поддерживает множественное наследование. Вместо этого язык применяет смешанное наследование на базе трейтов, обеспечивающих включения общих атрибутов и методов в несколько подклассов. Трейты могут расширять классы или другие трейты. Подкласс в Scala может наследовать методы как от родительского класса, так и от трейтов. Трейты могут также иметь отношения с родительским классом и подклассом. Объявление трейта начинается с ключевого слова trait. Тело трейта выполняется, когда создается экземпляр класса, задействующего этот трейт. Родительским по умолчанию для класса или трейта является класс AnyRef, прямой потомок класса Any.
Конструктор в Scala размещается в теле определения класса. Когда создается экземпляр класса, каждое поле, соответствующее параметру в списке параметров, инициализируется параметром автоматически. В общем случае явный конструктор не нужен. Конструктор в производном классе должен вызывать один из конструкторов родительского класса. Трейты используют только первичные конструкторы без аргументов. Трейты не могут передавать аргументы конструктору родительского класса.
Правила видимости в Scala похожи на Java с некоторыми вариациями. В отличие от C++, по умолчанию в Scala задается «публичная» видимость. Видимость регулируется с помощью ключевых слов protected и private. Видимость указывается в начале объявлений функций, переменных или трейтов. Применение private [this] закрывает объявление для конкретного экземпляра внутри класса.
Определения методов считаются обычными функциями, начинаются с ключевого слова def, за которым следуют необязательные списки аргументов, символ двоеточия «:» и тип возвращаемого значения метода. Абстрактным является метод, у которого отсутствует тело. Методы могут вкладываться друг в друга.
Для иллюстрации представим абстрактный класс для комплексного числа:
class Complex_number (first: Double, second: Double)
{
val re = first
val im = second
override def toString = re + " + " im + "i"
def add(that: Complex_number): Complex_number =
new Complex_number (this.re + that.re, this.im + that.im)
def subtract(that: Complex_number): Complex_number =
new Complex(this.re - that.re, this.im - that.im)
}
Определение класса включает только два атрибута: re (действительная часть) и im (мнимая часть). С помощью свойства override операция toString переопределена. Это сделано для облегчения печати результата. Заданы две абстрактные операции: сложение и вычитание. Абстрактные операции записываются в виде двух методов. Каждый метод создает новое комплексное число, которое автоматически печатается на консоли с помощью переопределенного метода toString.
После загрузки этого фрагмента в интерпретатор Scala можно выполнить следующие команды:
val c1 = new Complex_number(3, 4) //печать комплексного числа 3.0 + 4.0 i
val c2 = new Complex_number(4, 5) // печать комплексного числа 4.0 + 5.0 i
c1 add c2 // печать комплексного числа 7.0 + 9.0 i
c1 subtract c2 // печать комплексного числа -1.0 + – 1.0
Точка с запятой используется в языке значительно реже: она не ставится в конце оператора, если он записан один в строке. Если строка содержит более одного оператора, точка с запятой обязательна. Scala поддерживает как изменяемые, так и неизменяемые структуры данных Язык обеспечивает полиморфизм, и если тип переменной не указан, то он выводится на основе значения, заданного для переменной.
Scala реализует обширный набор типов данных: массивы, ассоциативные массивы, списки, кортежи и множества. Массивы являются изменяемыми объектами, а списки — неизменяемыми объектами. Списки используются при функциональном программировании, а массивы — при императивном программировании. Множества и ассоциативные массивы могут создаваться как изменяемыми, так и неизменными с помощью трейтов. Напомним, что трейты — это абстрактные интерфейсы, которые расширяют содержание объектов. Например, если имеется класс «транспортное средство» и трейт «четырехколесный», расширяющий транспортные средства, то автомобиль соответствует классу «транспортное средство» с добавлением трейта «четырехколесный». В случае множеств и ассоциативных массивов связывание «изменяемого» и «неизменяемого» трейтов с классом множество или ассоциативный массив обеспечивает, в конечном счете, их изменяемость или неизменность.
Целочисленный массив объявляется как Array [Int] (4). Это означает, что объект является массивом, содержащим четыре целых числа. Индексы переменных записываются внутри пары круглых скобок. Поскольку каждая структура данных является объектом, массив создается с использованием конструктора new. Например, объявление val: studentNames = new array [String] (20) создаст объект массива, содержащий 20 строк. К его строкам можно получить доступ с помощью studentNames(i), где i — индексная переменная типа integer.
Списки могут быть объявлены в форме List (1, 2, 3) или как несколько элементов, соединенных символом «::». Например, List (1, 2, 3) можно записать как 1 :: 2 :: 3 :: Nil. Два списка xl и yl соединяются с помощью символа «:::». Например, List (1, 2) ::: List (3, 4, 5) создают List (1, 2, 3, 4, 5).
Язык Scala поддерживает выражения if-then-else, классы case, операторы while-loop, do-while-loop, итератор foreachloop, определяет итерацию forloop и рекурсивные вызовы функций. Передавая функцию в качестве параметра в другую функцию, можно смоделировать композицию. Кроме того, Scala поддерживает обновление в индексированных переменных, что позволяет разрабатывать программы на основе обычных итераций.
Рассмотрим еще один пример объявления функции:
def factorial(n: Int): Int =
{ if (n == 0) 1
else n * factorial(n – 1)
}
Здесь функция описывает факториал и объявляет тип аргумента и тип результата как целочисленный. Предусмотрен рекурсивный вызов функции.
Scala является блочно-структурированным языком, где функции могут вкладываться внутрь других функций. Локальные переменные имеют область действия внутри блоков, где они были объявлены. Внутри вложенного блока переменные, объявленные во внешних блоках, могут быть перекрыты. Scala поддерживает концепцию модуля с использованием пакетов Java и может импортировать методы по предложению import. По умолчанию Scala импортирует все библиотеки классов Java и любую предопределенную библиотеку в Scala перед выполнением программы. Для передачи параметров Scala использует передачу по значению, а также передачу по имени. Синтаксис передачи по имени: : ‘=>’ , тогда как синтаксис передачи по значению имеет вид : . Scala использует возможности обработки исключений Java.
Примеры программного кода на Scala
def add7(n: Int): Int = {n + 7} // функция добавляет 7 к числу
Функция add7 добавляет 7 к входному параметру n и возвращает значение. Обратите внимание, что тип параметра и тип результата функции объявлены явно. Тело функции является блоком и заключено в фигурные скобки.
def int_square(x: Int): Int = {x * x} // возведение в квадрат целых
def square_add(x: Int): Int = int_square(add7(x)) // композиция
Функция square_add показывает композицию двух функций: square и add7. Сначала функция add7 применяется для генерации числа, которое на 7 больше входного параметра, а затем сгенерированное значение возводится в квадрат. Например, square_add (5) эквивалентно square (5 + 7) = 144.
def power_rec(x: Double, n:Int): Double =
{if (n == 0) 1 else x * power_rec(x, n-1)} // if-then-else и рекурсия
Функция power_rec иллюстрирует использование выражения if-then-else и рекурсии в Scala. Обратите внимание, что предикат заключен в круглые скобки и нет никакой мутации (изменения значений переменных).
def power_iter(x : Int, n: Int): Int = //итерационная версия power
{ var a = n; var b = 1;
while(a > 0 ) {b = x * b; a = a - 1}// обновление переменных
}
Напротив, функция power_iter использует локальные изменяемые переменные a и b для вычисления значения функции xn. Значение накапливается в аккумуляторе b и, наконец, возвращается после завершения цикла while.
def sum_list(xl:List[Int]): Int = // рекурсия над списками
{ if (xs.isEmpty) 0
else xl.head + sum_list(xs.tail)
}
Функция sum_list добавляет все целые числа в список, используя рекурсивный вызов в остальной части списка. Встроенный метод isEmpty используется для проверки пустого списка, метод head применяется для доступа к первому элементу списка, а метод tail обеспечивает доступ к остальным элементам списка.
def apply_all(my_func:Int => Int, xl:List[Int]): List[Int] =
{xl map my_func}
Scala использует встроенную функцию отображения map, которая обеспечивает возможность применения функциональной формы apply_all. Здесь в теле функции сначала записывается параметр (xl), затем функция отображения высшего порядка (map), а затем имя функции (my_func). В этом случае apply_all (int_square, List (1, 2, 3)) будет генерировать список List (1, 4, 9). Следует отметить способ объявления типа для функции my_func. Тип функции объявлен как Int => Int, что означает, что он принимает входной аргумент типа integer и генерирует выходное значение типа integer.
def construct(my_funcs:List[Int => Int], n:Int): List[Int] = // разработка
{ if (my_funcs.isEmpty) Nil
else my_funcs.head(n)::construct(my_funcs.tail, n)
}
Наконец, функция construct берет последовательность функций, применяемых к одному и тому же аргументу, и генерирует последовательность выходных значений. Например, construct (List (add7, int_square), 5) будет генерировать список List (12, 25). Программа с функцией construct возвращает нулевой список, если список функций пуст. В противном случае она вызывает рекурсивно из списка остальные функции и объединяет результат применения первой функции с остальной частью выходной последовательности, полученной путем применения остальных функций к этому же аргументу.
Рецензенты:
Соколов Б. В., д. т. н., профессор, руководитель лаборатории информационных технологий
в системном анализе и моделировании Санкт-Петербургского института информатики
и автоматизации РАН;
Пасмуров А. Я., д. т. н., доцент, senior member of IEEE, руководитель учебного центра ФГУП
«ЗащитаИнфоТранс» Министерства транспорта РФ, Санкт-Петербургский филиал.
» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок
Для Хаброжителей скидка 20% по купону — Орлов
habr.com