دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش:
نویسندگان: Marco T. Morazán
سری: Texts in Computer Science
ISBN (شابک) : 9783030850906, 3030850900
ناشر: Springer
سال نشر: 2022
تعداد صفحات: 688
زبان: English
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 11 مگابایت
در صورت تبدیل فایل کتاب Animated Problem Solving. An Introduction to Program Design Using Video Game Development به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب حل مسئله متحرک. مقدمه ای بر طراحی برنامه با استفاده از توسعه بازی های ویدیویی نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
این کتاب درسی در مورد حل مسئله سیستماتیک و استدلال سیستماتیک با استفاده از طراحی نوع محور است. دو تکنیک حل مسئله وجود دارد که در سراسر کتاب بر آنها تاکید شده است: تقسیم و غلبه و پالایش تکراری. Divide and Conquer فرآیندی است که طی آن یک مشکل بزرگ به دو یا چند مسئله کوچکتر که حل آنها راحت تر است، تقسیم می شود و سپس راه حل های قطعات کوچکتر برای ایجاد پاسخی برای مسئله ترکیب می شوند. پالایش تکراری فرآیندی است که در آن یک راه حل برای یک مشکل به تدریج بهتر می شود - مانند پیش نویس های یک مقاله. تسلط بر این تکنیک ها برای تبدیل شدن به یک حل کننده مشکل و برنامه نویس خوب ضروری است. کتاب در پنج بخش تنظیم شده است. بخش اول بر روی اصول تمرکز دارد. با نحوه نوشتن عبارات شروع می شود و متعاقباً منجر به تصمیم گیری می شود و به عنوان مبنایی برای حل مسئله عمل می کند. سپس بخش دوم دادههای ترکیبی با اندازه محدود را معرفی میکند، در حالی که بخش سوم دادههای ترکیبی با اندازه دلخواه مانند به عنوان مثال را پوشش میدهد. لیست ها، فواصل، اعداد طبیعی و درختان دودویی. همچنین بازگشت ساختاری را معرفی می کند، یک استراتژی پردازش داده قدرتمند که از تقسیم و غلبه برای پردازش داده هایی که اندازه آنها ثابت نیست استفاده می کند. بعد، قسمت چهارم به انتزاع می پردازد و نشان می دهد که چگونه می توان تکرارها را در راه حل های مسائل حذف کرد. همچنین برنامه نویسی عمومی را معرفی می کند که انتزاع بر نوع داده های پردازش شده است. این منجر به درک این موضوع می شود که توابع داده هستند و، شاید شگفت آورتر، اینکه داده ها توابع هستند، که به نوبه خود به طور طبیعی منجر به برنامه نویسی شی گرا می شود. قسمت پنجم برنامه نویسی توزیع شده را معرفی می کند، یعنی استفاده از چندین کامپیوتر برای حل یک مشکل. این کتاب این نوید را می دهد که تا پایان آن خوانندگان یک بازی ویدئویی چند نفره را طراحی و اجرا کنند که می توانند با دوستان خود از طریق اینترنت بازی کنند. با این حال، برای رسیدن به این هدف، در مورد حل مسئله و برنامه نویسی چیزهای زیادی وجود دارد که باید ابتدا یاد بگیرید. بازی با استفاده از پالایش تکراری توسعه یافته است. خواننده گام به گام در مورد برنامه نویسی و نحوه به کارگیری دانش جدید برای توسعه نسخه های بهتری از این بازی ویدیویی می آموزد. به این ترتیب، خوانندگان روندهای مدرنی را تمرین می کنند که احتمالاً در طول یک حرفه حرفه ای و فراتر از آن رایج هستند.
This textbook is about systematic problem solving and systematic reasoning using type-driven design. There are two problem solving techniques that are emphasized throughout the book: divide and conquer and iterative refinement. Divide and conquer is the process by which a large problem is broken into two or more smaller problems that are easier to solve and then the solutions for the smaller pieces are combined to create an answer to the problem. Iterative refinement is the process by which a solution to a problem is gradually made better–like the drafts of an essay. Mastering these techniques are essential to becoming a good problem solver and programmer. The book is divided in five parts. Part I focuses on the basics. It starts with how to write expressions and subsequently leads to decision making and functions as the basis for problem solving. Part II then introduces compound data of finite size, while Part III covers compound data of arbitrary size like e.g. lists, intervals, natural numbers, and binary trees. It also introduces structural recursion, a powerful data-processing strategy that uses divide and conquer to process data whose size is not fixed. Next, Part IV delves into abstraction and shows how to eliminate repetitions in solutions to problems. It also introduces generic programming which is abstraction over the type of data processed. This leads to the realization that functions are data and, perhaps more surprising, that data are functions, which in turn naturally leads to object-oriented programming. Part V introduces distributed programming, i.e., using multiple computers to solve a problem. This book promises that by the end of it readers will have designed and implemented a multiplayer video game that they can play with their friends over the internet. To achieve this, however, there is a lot about problem solving and programming that must be learned first. The game is developed using iterative refinement. The reader learns step-by-step about programming and how to apply new knowledge to develop increasingly better versions of the video game. This way, readers practice modern trends that are likely to be common throughout a professional career and beyond.
Preface 1 The Languages and the Parts of the Book 2 Acknowledgments Part I The Basics of Problem Solving with a Computer 1 The Science of Problem Solving 3 Getting Started 4 Computing New Values 5 Definitions and Interactions Areas Differences 6 Saving Your Work 7 Error Messages 7.1 Grammatical Errors 7.2 Type Errors 7.3 Runtime Errors 8 What Have We Learned in This Chapter? 2 Expressions and Data Types 9 Definitions 10 Numbers 11 Strings and Characters 12 Symbols 13 Booleans 13.1 Basic Boolean Operators in BSL 13.2 Predicates 14 Images 14.1 Basic Image Constructors 14.2 Property Selectors 14.3 Image Composers 14.4 Empty Scenes and Placing Images 15 What Have We Learned in This Chapter? 3 The Nature of Functions 16 The Rise of Functions 17 General Design Recipe for Functions 17.1 The Design Recipe in Action 18 Auxiliary Functions 18.1 Bottom-Up Design 19 Top-Down Design 20 What Have We Learned in This Chapter? 4 Aliens Attack Version 0 21 The Scene for Aliens Attack 22 Creating Aliens Attack Images 23 Shot Image 24 Alien Image 25 Rocket Image 25.1 Rocket Window Image Constructor 25.2 Rocket Fuselage Image Constructor 25.3 Rocket Single Booster Image Constructor 25.4 Rocket Booster Image Constructor 25.5 Rocket Main Body Image Constructor 25.6 Rocket Nacelle Image Constructor 25.7 Rocket ci Constructor 26 Drawing Functions 27 What Have We Learned in This Chapter? 5 Making Decisions 28 Conditional Expressions in BSL 29 Designing Functions to Process Data with Variety 30 Enumeration Types 31 Interval Types 32 Itemization Types 33 What Have We Learned in This Chapter? 6 Aliens Attack Version 1 34 The Universe Teachpack 35 A Video Game Design Recipe 36 Adding the Rocket to Aliens Attack 37 What Have We Learned in This Chapter? Part II Compound Data of Finite Size 7 Structures 38 The posn Structure 39 Going Beyond the Design Recipe 40 Revisiting in-Q1? 41 What Have We Learned in This Chapter? 8 Defining Structures 42 Defining Structures 43 Computing Structures 44 Structures for the Masses 45 What Have We Learned in This Chapter? 9 Aliens Attack Version 2 46 Data Definitions 47 Function Templates and Sample Instances 48 The run Function 49 Drawing the World 49.1 The draw-world Refinement 49.2 Drawing Aliens 50 The process-key Refinement 51 Processing Ticks 51.1 The process-tick Handler 51.2 The Design of new-dir-after-tick 51.3 The Design of Auxiliary Functions for new-dir-after-tick 51.3.1 Design of new-dir-after-down 51.3.2 Design of new-dir-after-left 51.3.3 Design of new-dir-after-right 51.3.4 Design of alien-at-left-edge? 51.3.5 Design of alien-at-right-edge? 51.4 The Design of move-alien 52 Subtyping 52.1 Checking Errors 53 The game-over? Handler 54 Computing the Last Scene 55 What Have We Learned in This Chapter? 10 Structures and Variety 56 A Bottom-Up Design 57 Code Refactoring 58 What Have We Learned in This Chapter? 11 Aliens Attack Version 3 59 Data Definitions 60 The draw-world Refinement 61 The process-key Refinement 62 The process-tick Refinement 62.1 The Refinement 62.2 The move-shot Design 63 The game-over? Refinement 63.1 The hit? Design 63.2 The draw-last-world Refinement 64 What Have We Learned in This Chapter? Part III Compound Data of Arbitrary Size 12 Lists 65 Creating and Accessing Lists in ISL+ 66 Shorthand for Building Lists 67 Recursive Data Definitions 68 Generic Data Definitions 69 Function Templates for Lists 70 Designing List-Processing Functions 71 What Have We Learned in This Chapter? 13 List Processing 72 List Summarizing 73 List Searching 74 List ORing 74.1 Determining If an Alien Is at the Left Edge 74.2 Determining If an Alien Is at the Right Edge 74.3 Determining If an Alien Has Reached Earth 75 List ANDing 75.1 All Even in a lon 75.2 Determining if a lon Is Sorted 76 List Mapping 76.1 Moving a List of Aliens 76.2 Moving a List of Shots 76.3 Returning a Different List Type 77 List Filtering 77.1 Extracting Even numbers 77.2 Removing Hit Aliens 77.3 Removing Shots 78 List Sorting 79 What Have We Learned in This Chapter? 14 Natural Numbers 80 Data Definition for a Natural Number 81 Computing Factorial 82 Computing Tetrahedral Numbers 83 Making Copies 84 What Have We Learned in This Chapter? 15 Interval Processing 85 Interval Data Definition 86 Revisiting Factorial 87 Creating an Army of Aliens 88 Largest Prime in an Interval 89 What Have We Learned in This Chapter? 16 Aliens Attack Version 4 90 New world Data Definition and Function Template 91 The draw-world Refinement 92 The process-key Refinement 93 The process-tick Refinement 93.1 The new-dir-after-tick Design 93.1.1 The new-dir-after-down Design 93.1.2 The new-dir-after-left Design 93.1.3 The new-dir-after-right Design 94 The game-over? Refinement 94.1 The draw-last-world Refinement 95 A Bug Despite Hundreds of Tests Passing 96 What Have We Learned in This Chapter? 17 Binary Trees 97 Binary Tree Data Definition 98 Traversing a Binary Tree 99 The Maximum of a (btof int) 100 Binary Search Trees 100.1 A (listof cr) Representation 100.2 A (btof cr) Representation 100.3 A (bstof cr) Representation 101 Abstract Running Time 102 The Complexity of Searching the Criminal Database 103 Balanced (bstof cr) 103.1 Creating a Balanced Binary Search Tree 103.2 Analysis 104 What Have We Learned in This Chapter? 18 Mutually Recursive Data 105 Designing with Mutually Recursive Data 105.1 Revisiting the Maximum of a (btof int) 106 Evaluating Arithmetic Expressions 107 Trees 107.1 Creating a Search Tree for Tic Tac Toe 107.2 Can Win Tic Tac Toe? 108 Project: Tic Tac Toe 108.1 Data Analysis 108.2 Design draw-world 108.3 Design process-mouse 108.4 Design process-tick 108.5 Design game-over? 109 What Have We Learned in This Chapter? 19 Processing Multiple Inputs of ArbitrarySize 110 One Input Has a Dominant Role 111 Inputs Must Be Processed Simultaneously 112 No Clear Relationship Between the Inputs 113 What Have We Learned in This Chapter? Part IV Abstraction 20 Functional Abstraction 114 A Design Recipe for Abstraction 115 Functions as Values 116 Abstraction Over List-Processing Functions 116.1 List Summarizing 116.2 List Searching 116.3 List ORing 116.4 List ANDing 116.5 List Mapping 116.6 List Filtering 116.7 List Sorting 117 Abstraction over Interval-Processing Functions 118 What Have We Learned in This Chapter? 21 Encapsulation 119 Local-Expressions 120 Lexical Scoping 121 Using Local-Expressions 121.1 Encapsulation 121.2 Readability 121.3 Furthering Functional Abstraction 121.4 One-Time Expression Evaluation 122 What Have We Learned in This Chapter? 22 Lambda Expressions 123 Anonymous Functions 124 Revisiting Function Composition 125 Curried Functions 126 Designing Using Existing Abstractions 126.1 Computing the Value of a Series 126.2 Approximating π 127 What Have We Learned in This Chapter? 23 Aliens Attack Version 5 128 Constants 129 Structure Definitions 130 Encapsulating and Refactoring Handlers 130.1 The draw-world Handler 130.2 The process-key Handler 130.3 The process-tick Handler 130.4 The game-over? Handler 130.5 The draw-last-world Handler 131 Refactoring run 132 What Have We Learned in This Chapter? 24 For-Loops and Pattern Matching 133 For-Loops 133.1 for-loops 133.2 for*-loops 134 Pattern Matching 134.1 Illustrative Example 134.2 Refactoring Using Pattern Matching 134.3 Designing Using Pattern Matching 135 What Have We Learned in This Chapter? 25 Interfaces and Objects 136 Interfaces 136.1 Improving the Human Interface 136.2 Services that Require More Input 137 A Design Recipe for Interfaces 138 Interfaces and Union Types 139 An Abbreviated (listof X) Interface 139.1 Step 1: Values and Services 139.2 Step 2: Interface and Message Definitions 139.3 Step 3: Class Function Template 140 The Empty (listof X) Class 140.1 Step 4: Signature, Purpose, Class Header, and Message-Passing Function 140.2 Step 5: Auxiliary Functions 141 The Non-Empty (listof X) Class 141.1 Step 4: Signature, Purpose, Class Header, and Message-Passing Function 141.2 Step 5: Auxiliary Functions 142 Step 6: Wrapper Functions and Tests 143 What Have We Learned in This Chapter? 26 Introduction to Distributed Programming 144 A Design Recipe for Distributed Programming 145 More on the Universe API 146 A Chat Application 146.1 The Components 146.2 Data Definitions 146.3 Communication Protocol 146.4 Marshalling and Unmarshalling 146.5 Component Implementation 146.5.1 Client 146.5.2 Server 146.6 Running the Chat Tool 147 What Have We Learned in This Chapter? 27 Aliens Attack Version 6 148 Refining the world Data Definition 149 The draw-world Refinement 150 The process-key Refinement 151 The process-tick Refinement 152 The game-over? Refinement 153 What Have We Learned in This Chapter? 28 Aliens Attack Version 7 154 Components 155 Data Definitions 156 Communication Protocol 156.1 Player-Sparked Communication Chains 156.2 Server-Sparked Communication Chains 156.3 Message Data Definitions 156.3.1 Marshaled Data Definition 156.3.2 To-Player Message Data Definition 156.3.3 To-Server Message Data Definition 157 Marshalling and Unmarshalling 158 Component Implementation 158.1 Player Component 158.1.1 The process-key Refinement 158.1.2 The process-message Design 158.2 Server Component 158.2.1 The add-player Handler 158.2.2 The rm-player Handler 158.2.3 The process-message Handler 159 A Subtle Bug 160 What Have We Learned in This Chapter? 29 Aliens Attack Version 8 161 The Components 162 Data Definitions 163 Communication Protocol 163.1 Player-Sparked Communication Chains 163.2 Server-Sparked Communication Chains 163.3 Message Data Definitions 164 Marshalling and Unmarshalling 165 Component Implementation 165.1 Player Component 165.1.1 The draw-world and game-over? Handlers 165.1.2 The process-key Handler 165.1.3 The process-message Handler 165.2 Server Component 165.2.1 The process-tick Handler 165.2.2 The process-message Handler 165.2.3 The add-player Handler 165.2.4 The rm-player Handler 166 A Subtle Problem 167 What Have We Learned in This Chapter? Part V Distributed Programming Part VI Epilogue 30 Advice for Future Steps 168 Advice for Computer Science Students 169 Advice for Non-Computer Science Students