|
well choosing better algorithm doesnt help?
in other word, what is good algorithm features?
|
|
|
|
|
Algorithm selection is a more complex topic. A course (or book) on data structures will also cover the most common algorithms used on these structures. These are also graduate courses specifically on algorithms.
(If you haven't already studied data structures, you should. It's one of the more important areas that you'll use on all but the most trivial programs.)
At the basic level, you need to avoid bad algorithm choices that waste time and/or space. For example, beginners often (inadvertently) use the Schlemiel Algorithm (http://en.wikipedia.org/wiki/Schlemiel_the_Painter%27s_algorithm[^]) which runs in N^2 time (for N items), for tasks that should run in N time.
|
|
|
|
|
Alan Balkany wrote: Start with designing the GUI.
Say what??
I always start with the data model design. I've found that starting with the GUI tends to influence bad practices in the data model or breaks even breaks it to the point where you need to toss it out and start from scratch.
|
|
|
|
|
Dave Kreskowiak wrote: Say what??
I very nearly spilled my coffee ...
|
|
|
|
|
There are many approaches and many problem types. There's no one correct approach for all problems, and each individual has their own style.
In each approach (GUI first or data model first), you can make discoveries that invalidate your previous design. Experience lets you anticipate more accurately the needs of the other half, while designing the first half.
In this case, I was answering a beginner's question. This person is unlikely to be dealing with a complex data model, and the needs of the GUI would probably be clearer, and would point the direction to go with the data model to support the GUI.
In my biased opinion, the primary purpose of an application is to satisfy the users' needs as well as possible, and letting the data-structure decisions steer you into a less-optimal GUI detracts from this.
|
|
|
|
|
ok very thanks ... so i need , practice, survey others codes, and start my projects with GUI?
|
|
|
|
|
Also study data structures and object-oriented programming.
|
|
|
|
|
|
No SPAM is welcome
/* LIFE RUNS ON CODE */
|
|
|
|
|
source.compiler wrote: well lemme explain whats my problem !
i thought writing codes is most simple part of developing ,but after some project which i did ,i found that need to change my coding style ! as you know for one porpuse is many way to achieve ! but i found always choose worst way !
There are a lot of ways to do something, and even we bicker about what is "best". And most of us here will have some "old code" somewhere from years ago that makes 'em go "wtf" today.
Always ask an explanation if there's an opportunity to do so.
source.compiler wrote: well is any book or reference to teach me how i choose best way? at least better way!
You might want to download FxCop; it checks your code using pre-set rules. Another sweet way of learning alternatives is to read existing code (I love meeting new brownfields!) and, again if possible, ask for explanation if something is interesting.
Get lots of practice. Start your own open-source project, so that you'll be forced to "maintain" your own code.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
so just exprience can show me better ways to writing codes?
|
|
|
|
|
Start thinking about how "programming" skills overlap with the non-programming things you do. Draw on your experience in the other areas of your life to help you improve. For example, work on your writing. Coding is composition and all the rules you learned about writing well apply to your programming: say what you mean; don't use a 10-cent word when a 5-cent word will do; don't mix metaphors (i.e., models); etc.
|
|
|
|
|
Yes.
The big advantage is that you'll learn the stuff you need right away, as opposed to learning a lot of abstract techniques that are unknown in a development-team where you might become part of.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
If your in a team code reviews can help if all parties are willing to put the time and effort in.
|
|
|
|
|
Hey there! I'm trying to write into a command prompt window (Not the debugger) from my C# GUI with no luck (I've looked at lots of examples), and I'm not sure where I am going wrong. The command prompt window will open, it will accept text if i type it in from my keyboard, but it won't accept it from my application.
I've tried with both the windows command prompt, and the custom one we are trying to write into. Long story short I am trying to access an AtmelAVR programmer from command line to automatically program devices in our assembly process. I can automatically program by command line when I enter the text myself, I just can't get out GUI to do it... I've attached my code below:
EDIT: Working in VS2010 on Windows 7
Any help is greatly appreciated!
<pre lang="c#">
Process PrgCommandPrmpt = new Process();
PrgCommandPrmpt.StartInfo.UseShellExecute = false;
PrgCommandPrmpt.StartInfo.FileName = "C:/Program Files (x86)/Atmel/Atmel Studio 6.0/extensions/Application/StudioCommandPrompt.exe";
PrgCommandPrmpt.StartInfo.RedirectStandardInput = true;
PrgCommandPrmpt.StartInfo.RedirectStandardOutput = true;
PrgCommandPrmpt.StartInfo.RedirectStandardError = true;
PrgCommandPrmpt.StartInfo.CreateNoWindow = true;
PrgCommandPrmpt.EnableRaisingEvents = false;
PrgCommandPrmpt.Start();
PrgCommandPrmpt.StandardInput.AutoFlush = true;
StreamWriter inputWriter = PrgCommandPrmpt.StandardInput;
StreamReader outputReader = PrgCommandPrmpt.StandardOutput;
StreamReader errorReader = PrgCommandPrmpt.StandardError;
myDelay5s();
tboxVerbose.AppendText("Doing stuff now!");
string CommandText = "cd..";
inputWriter.WriteLine("WHY DONT YOU WORK");
PrgCommandPrmpt.StandardInput.Write(CommandText);
inputWriter.Close();
|
|
|
|
|
|
Thanks for the reply; I hadn't seen that particular example, but it is doing the same as all the rest.
myStreamWriter.WriteLine(inputText);
then
myStreamWriter.Close();
The "Console.Writeline" writes to the debugger console which also works for me...
I write to the non-debugger console here:
inputWriter.WriteLine("WHY DONT YOU WORK");
inputWriter.Close();
I'm at a loss as to why it won't just work, it seems to be doing the exact same thing as the 10 or examples I've looked at...
EDIT: Grammar
modified 14-Feb-13 10:05am.
|
|
|
|
|
I just tested that sample and it works fine. I would suggest you check some of the options you have selected to ensure none of them is conflicting with what you are trying to do. You could also take that working sample and modify it to use the command you wish to run and see what happens.
|
|
|
|
|
I'm not sure that we are trying the same thing here. I loaded that example into a new app, and it doesn't write to the console either. I also get an error on this line about a NullReferenceException, presumably as the buffer is empty?
inputText = Console.ReadLine();
if (inputText.Length > 0)
What "Settings" are you referring to when you said I should check the settings?
|
|
|
|
|
If I change the application to a console application I can now run it without it crashing, but it still doesn't hand data out to the programmers command prompt.
|
|
|
|
|
Well I'm not sure what you are doing wrong. I just copied the code from the link I gave you, then wrote another program that reads and writes to the standard input and output stream, and it all worked. Maybe the fault lies with the program that you are trying to execute; what exactly does it do?
|
|
|
|
|
The program we are trying to write into is just a CMDPrompt that has been written to access the programming functions of the AtmelAVR programmer through command line. The commands we need to send resemble the one below:
atprogram -t avrispmk2 -i isp -xr -d ATmega328 -v chiperase
I'd say that ya maybe its the program, but we can't write into the windows command prompt (cmd.exe) either... The only place we can write to is the console debugger prompt.
|
|
|
|
|
In that case your approach is wrong. You need to set all these options into the StartInfo properties, or add them to the Process.Start method call, as described in the sample code here[^].
|
|
|
|
|
Interesting, This sounds promising. I'll make some changes and get back to you. Thanks for all the help.
|
|
|
|
|
ok, This all seems to point to the StartInfo settings, which I believe are correct already:
Process Temp = System.Diagnostics.Process.Start("CMD.exe");
Temp.StartInfo.UseShellExecute = false;
Temp.StartInfo.RedirectStandardInput = true;
Temp.StartInfo.RedirectStandardOutput = true;
Temp.StartInfo.RedirectStandardError = true;
Temp.Start();
Temp.StandardInput.WriteLine("Test");
Temp.Close();
So unless I've missed something, I don't think this is where the issue is.
|
|
|
|