00001 /* $Revision: 1.4 $ $Date: 2006/09/09 06:24:16 $ $Author: dgl $ $Name: $ $Id: MusimatTutorial.cpp,v 1.4 2006/09/09 06:24:16 dgl Exp $ */ 00002 00046 // The Musimat Tutorial � 2006 Gareth Loy 00047 // Derived from Chapter 9 and Appendix B of "Musimathics Vol. 1" � 2006 Gareth Loy 00048 // and published exclusively by The MIT Press. 00049 // This program is released WITHOUT ANY WARRANTY; without even the implied 00050 // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00051 // For information on usage and redistribution, and for a DISCLAIMER OF ALL 00052 // WARRANTIES, see the file, "LICENSE.txt," in this distribution. 00053 // "Musimathics" is available here: http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=10916 00054 // Gareth Loy's Musimathics website: http://www.musimathics.com/ 00055 // The Musimat website: http://www.musimat.com/ 00056 // This program is released under the terms of the GNU General Public License 00057 // available here: http://www.gnu.org/licenses/gpl.txt 00058 00059 #ifndef __GNUC__ 00060 #include "stdafx.h" 00061 #endif 00062 #include <iostream> 00063 00064 #include "MusimatTutorial.h" 00065 00066 #ifndef __GNUC__ 00067 int _tmain(int argc, _TCHAR* argv[]) 00068 #else 00069 int main(int argc, char* argv[]) 00070 #endif 00071 { 00072 // Plant your first breakpoint on the line below containing 00073 // B0100(). Then run the program, which will stop just 00074 // before executing that function. To start the tutorial, use the 00075 // debugger's "step into" command to step into the function. 00076 B0100(); // Introduction to Musimat -- The programming language for "Musimathics" 00077 00078 // When you get here, you've finished stepping through B0100(). 00079 // To continue the tutorial, use the debugger's "step into" command to 00080 // step into the next function. 00081 B0101(); // B.1.1 Basic Elements 00082 00083 // Use the debugger's "step into" command to continue the tutorial 00084 // by stepping into each of the following functions. 00085 // For some sections, there may be additional functions for you 00086 // to visit within each file. 00087 B0102(); // B.1.2 Statements and Expressions 00088 B0103(); // B.1.3 Data Types 00089 B0104(); // B.1.4 Constants 00090 B0105(); // B.1.5 Variables 00091 B0106(); // B.1.6 Reserved Words 00092 B0107(); // B.1.7 Lists 00093 B0108(); // B.1.8 Operators and Operands 00094 B0109(); // B.1.9 Assignment 00095 B0110(); // B.1.10 Relations 00096 B0111(); // B.1.11 Logical Operations 00097 B0112(); // B.1.12 Operator Precedence and Associativity 00098 B0113(); // B.1.13 Type Promotion and Type Coercion 00099 B0114(); // B.1.14 Accessing List Elements 00100 B0115(); // B.1.15 Functions 00101 B0116(); // B.1.16 Conditional Statements 00102 B0117(); // B.1.17 Compound Statements 00103 B0118(); // B.1.18 Iteration 00104 B0119(); // B.1.19 User-Defined Functions 00105 B0120(); // B.1.20 Invoking Functions 00106 B0121(); // B.1.21 Scope of Variables 00107 B0122(); // B.1.22 Pass by Value vs. Pass by Reference 00108 B0123(); // B.1.23 Type Conversion 00109 B0124(); // B.1.24 Recursion 00110 B0125(); // B.1.25 Recursive Factorial 00111 B0126(); // B.1.26 Fibonacci Numbers 00112 B0127(); // B.1.27 Other Built-in Functions 00113 B0128(); // B.1.28 Comments 00114 B0129(); // B.1.29 Representing Text 00115 B0200(); // B.2 Music Datatypes in Musimat 00116 B0201(); // B.2.1 Pitch 00117 B0201a(); // Equal-Tempered Frequency 00118 B0201b(); // Pythagorean Chromatic Scale 00119 B0201c(); // Natural Chromatic Scale 00120 B0201d(); // Sruti Scale 00121 B0202(); // B.2.2 Rhythm 00122 B0203(); // B.2.3 Tempo 00123 B0204(); // B.2.4 Loudness 00124 B0300(); // B.3 Unicode (ASCII) Character Codes 00125 B0400(); // B.4 Operator Associativity and Precedence in Musimat 00126 00127 Return 0; 00128 } 00129 00130