Re: Re: NotebookGet/Read/EvaluateSelection Issues

*To*: mathgroup at smc.vnet.net*Subject*: [mg106787] Re: [mg106741] Re: NotebookGet/Read/EvaluateSelection Issues*From*: "David Park" <djmpark at comcast.net>*Date*: Sat, 23 Jan 2010 07:34:59 -0500 (EST)*References*: <hj98as$g52$1@smc.vnet.net> <hj9e1n$k6t$1@smc.vnet.net> <3969559.1264159220557.JavaMail.root@n11>

Your situation is a good example of what I have been arguing for some time. I get the impression that you are relatively new to Mathematica, or haven't used it much? It would be really nice is good students had a chance to learn Mathematica early so that when they got into university and had significant projects such as theses they wouldn't have to wrestle with Mathematica. It's not true that Mathematica is an application that you can take off the shelf and immediately apply to a significant project. There is a rather steep learning curve, even for very intelligent people. One solution would be to embark on a crash course and go over the basics. Another aid will be to keep asking questions on MathGroup but make them more specific. From your questions so far it appears that you are having difficulty in just writing working definitions and algorithms or Modules in Mathematica. There is no reason that If statements shouldn't work and using many loops is a little suspicious. (Are you comfortable with Functional programming techniques?) You can write packages in Version 5. (But Version 7 is MUCH nicer.) But trying to read results from a bunch of other notebooks is definitely not the way to do it. I would forget packages and multiple notebooks and organization for the moment and first establish if you can write, or have written, some of the routines that do the things you want. If you can do that, you can simply put them in a Routines section in a notebook and evaluate the section when you open the notebook. You could make the Routines section an Initialization section so that it would automatically be evaluated when the notebook is opened, or when you first try to evaluate some other statement. Do you know how to organize a notebook into sections? You should use multiple sections in one notebook before going to multiple notebooks. When you get routines that work within the notebook (and there is no reason you shouldn't be able to do that) then you can consider moving them to a package. Do you write usage messages for your routines? If you have done these things, then it is VERY simple to move them to a package. But you have to get developed and tested routines first. I just get the feeling that you are getting bogged down in trying to redesign how Mathematica works and trying to provide an interface and organization that is already much better provided by its standard usage. First things first and these are to make sure you understand basic syntax and usage and then develop some of your first routines in a single organized notebook. David Park djmpark at comcast.net http://home.comcast.net/~djmpark/ From: Paul [mailto:pkshreeman at gmail.com] On Jan 21, 6:33 am, Yves Klett <yves.kl... at googlemail.com> wrote: > Hi, > > packages (.m) might be very useful in your case. Since Version 6 > .m-files are handled nicely in the fronted. There is no end of threads > covering the use of packages. > > Regards, > Yves > > Paul schrieb: > > > > > My fellow Mathematica'ians... > > > I am having difficult time figuring out whether it's my programming or > > the bugs:... I have first notebook called xy.nb that simply has > > > y=x+3 > > > and then I have another notebook that has the following: > > > test=NotebookOpen[xy.nb]; > > NotebookRead[test]; > > x=7; > > SelectionMove[test,All,Notebook]; (*Seems I have to force selection= , > > even though there's only one cell in the entire notebook xy.nb?*) > > SelectionEvaluate[test]; > > Print["y equals to ",y] > > > Naturally, I'd expect the output to read, "y equals to 10" but the > > output is "y equals to y"...the variable "y" remains unevaluated or > > unassigned. If I re-evaluate the y (either redoing the whole thing > > with kernel still running, or manually calling variable "y" by typing > > in frontend, "y" and hitting shift-enter. > > > This is simple example of my project, I wanted to develop a modular- > > style programming instead of really long single notebook to do my > > Dissertation work..and be able to call certain functions in separate > > notebooks (optional mathematical calculations, for instance)..and keep > > all global variables intact to be used in all calculations (AND be > > immediately usable once evaluated!). Right now, I can't call xy.nb t= o > > do calculations, and take the value of "y" to do another type of > > calcuation since the value of "y" remains unassigned. > > > Thank you! Thank you for your reply. Unfortunately, the creation of the package doesn't help either. I use Mathematica 5...and I have tried using DumpSolve, Put/Get files, etc...the problem is that the notebook that I "call" has complex functions, including IF statements, Loops, etc...and the package (m.) doesn't seem to be able to generate correct IF statements. What I needed is the ability to call up on named notebook (file/package/whatever) that can do this full calculations (including the necessary logistics) then immeditately give me the solution to apply immeditately. The NotebookGet/EvaluateSelected only works if I complete the sequence and then manually type in request for the solution...for instance if I type "Print["Y equals to", y] manually after I completed the call evaluation cell, the results are correct. I need it to be automatic.