text:
Talk:Ada Programming/Object Orientation

== Be careful when changing characters

This remark goes to the changes made on 31 July 2017 by PokestarFan:

This "—" is not a legal character in Ada code outside of comments. Ada comments are started with "--".

Do not without good reason rearrange comments by shifting or combining lines.

Note on Terminology
A request.

It is perhaps tricky business talking about Ada O-O, C++ O-O, and informal O-O at the same time and not make things misleadingly imprecise. E.g., C++ has derived classes and base classes, but no subtypes; in particular, no Ada subtypes (that have a constrained subset of values), nor Ada base types. Discussing Ada O-O using "base type" for parent type or progenitor type thus confuses issues. One reason is that "base type" has been a defined term in Ada ever since, albeit meaning something different. There even is a  attribute, "denoting an unconstrained subtype of the type of S", LRM 3.5(15). You see? Also, this informal vocabulary may not work so well with multiple inheritance as defined in the respective language—to be used, after all—even if from the academic vernacular. Say, using the words “cast”, and “upcast” other than by contrasting with informal speech is almost certain to either mislead or be factually inadequate, thus misguiding programmers even if this style is conveniently used by some projects. But this is a book.

So, in this sense (also, as an apology for silently reverting a comment written using "red ink"), e.g., what exactly is an "inherited method"? When an implicitly inherited Ada subprogram, not overridden, but a user-defined primitive operation of the parent O-O type, it has nothing to to with an Ada base type. And it may be factually wrong to imply what it is by imposing some other language's rules, although what is the case might be contrasted with how a base class works in C++. The Ada parameter profile here does use the derived type['s subtype] by substitution (LRM 3.5(18)), even when there may be (view) conversions involved when calling.

So, I say that this page needs to have very clear definitions, some kind of implicit or explicit qualification of terms used, always, and no analogies, in order to be guiding properly. There are wikibook templates for referring to other places or the LRM. gb (discuss • contribs) 11:29, 22 April 2017 (UTC)

C++ vs. Ada: Class-wide parameters
Clarification to the revision 8 March 2012. The changes have been undone because they are in error.

package Pack is  type S is tagged ...; procedure P (X: S);       -- 1 procedure Q (X: S'Class); -- 2 type T is new S with ...; -- procedure P (X: T); -- 3 is implicitely defined, i.e. derived from 1. It may be overridden. -- Q is not derived, it's not a primitive operation. It cannot be overridden. end Pack;

Now assume there are declarations like these:

Specific_Object: Pack.T; ... Classwide_Object: Pack.S'Class := Specific_Object; -- must be initialised, may be of any type within the derivation hierarchy of S

Then you may call

Pack.P (Specific_Object);  -- calls P 3 or its overriding, static binding, no dispatching Pack.Q (Specific_Object);  -- calls Q 2, static binding, no dispatching (*) Pack.P (Classwide_Object); -- dispatches to the implicitly declared P 3 or its overriding Pack.Q (Classwide_Object); -- calls Q 2, static binding, no dispatching (**)

Now assume the body of Q holds a call like

procedure Q (X: S'Class) is begin P (X); end Q;

Then for either * or **, the call within Q to P dispatches to P 3.

Hope this helps.

C++ Conversion Attempt to Ada
The following (as of 2010-07-19) is a copy of code under the headline Encapsulation: public, private and protected members.

Quote:

In C++, the unit of encapsulation is the class; in Ada, the unit of encapsulation is the package. This has consequences on how an Ada programmer places the various components of an object type.

class C { public: int a;  void public_proc; protected: int b;  int protected_func; private: bool c;  void private_proc; };

In Ada it is necessary to split C into three types, one holding each of the public, protected and private parts:

package P is  type Public_Part is tagged record A: Integer; end record; function Construct return Public_Part'Class; procedure Public_Proc (This: in out Public_Part); private -- this part is visible only in child packages and in the body type Protected_Part is new Public.Public_Part with record B: Integer; end record; function Protected_Func (This: Protected_Part) return Integer; end P; package body P is  type Private_Part is new Protected_Part with record C: Boolean; end record; procedure Private_Proc (This: in out Private_Part); ...  function Construct return Public_Part'Class is   begin return Result: Private_Part do      ...; end return; end Construct; end P;

End Quote.

In my opinion, this Ada code is complete nonsense. You can declare a C++ object of class C with components a, b, c. You cannot declare an Ada object of Private_Part, only class-wide objects. But you cannot be sure that such a class-wide object has components B or C.

This looks like a contorted attempt to mimic C++ which completely fails. A better translation is perhaps the following (just a sketch):

package CPP is  type Public_Part is tagged record A: Integer; end record; procedure Public_Proc (This: in out Public_Part); type Complete_Type is new Public_Part with private; -- procedure Public_Proc (This: in out Complete_Type); -- inherited, implicitly defined private type Private_Part; type Private_Part_Pointer is access Private_Part; type Complete_Type is new Public_Part with record B: Integer; P: Private_Part_Pointer; -- should be controlled to avoid storage leaks end record; not overriding function Protected_Func (This: Complete_Type) return Integer; end CPP; package body CPP is  procedure Public_Proc (This: in out Public_Part) is begin ... end Public_Proc; type Private_Part is ...; not overriding function Protected_Func (This: Complete_Type) return Integer is begin ... end Protected_Func; end CPP;

 * I know nothing about Ada. However, I don't think readers would like to see the page printed with 'this is incorrect', so I hid it (I didn't remove it; you can still see it in edit mode). I hope you understand that any minute, someone could be ordering a copy of the book, and they might be unhappy to see that there's a note on there saying 'this is wrong'. You're better off replacing the wrong stuff with the right stuff, or removing the whole wrong thing once and for all. Kayau ( talk | email | contribs ) 10:05, 2 August 2010 (UTC)

Objects of class-wide types
The section *The class-wide-type* claims that “in fact, there are no objects of this class-wide type - an object always is of a specific child type”. Is this correct, formally? The RM says, in Note 29:

 * “Class-wide types are defined to have unknown discriminants …. This means that objects of a class-wide type have to be explicitly initialized …” [my emphasis]

So, Ada seems to define objects of a class-wide type? I would guess that even though these objects are of a specific type, they are of a class-wide type, too. — gb 18:46, 7 August 2007 (UTC)

I think that it's a matter of the definition of the term object. The glossary definition reads:

 * “An object is either a constant or a variable. An object contains a value.” ( annotation 2.a)

My interpretation is that in the situation at hand, the object is the named item (constant or variable) which is of class-wide type, and which always contains a value of a specific type. The confusion is because in that sentence the term object is being used in the OO sense, as the value contained in the Ada object. For further confusion, consider that a formal parameter can provide a view of an object containing a value, and that view can specify yet another type. DougP (talk) 21:35, 29 August 2008 (UTC)

Structure?
Note that objects' structure is not a good guide to understanding Ada's O-O style. Traditionally, the word "structure" may invoke certain notions of type compatibility which could easily confuse matters here: One can have untagged types that use different representations yet are convertible, e.g. differing in ; one can also have a tagged type derived from another with only a null extension added. So, in the first case, arguably, the “structure” is different, whereas in the second case, the “structure” does not change. If components are what is meant by structure, the argument about untagged types appears differently, but, still in view of null extensions, references to structure seem bound to be confusing whenever deriving a type does not actually add components.

With more emphasis, Ada types are the same if any only if they resolve to the same name. So, even when both  and are derived immediately from, if they (textually) add the same extension then they may have the exact same structure but still differ in name and, therefore, are different tagged types and are not convertible. gb (discuss • contribs) 19:34, 21 May 2017 (UTC)

How to deal with terminology?
The chasm between Ada's use of various words and other languages' use of those words is a thorny problem.

It seems to me that a book on programming Ada must use Ada's terminology. That makes the discussion difficult to follow for programmers familiar with other languages.

One approach is adding translations in situ. I'm not sure that providing each translation only once is enough, but providing a translation at every usage seriously clutters up the narrative. It also makes for more work for editors.

On the other hand, a separate glossary makes for difficult slogging for the person who is unfamiliar with Ada's terminology. Continuously switching between text and glossary is very disruptive to the reading and comprehension.

Is there a book-wide recommendation somewhere? Or does anyone have any suggestions? DougP (talk) 13:11, 30 August 2008 (UTC)

Rewrite needed?
I have a number of problems with the current page:
 * It appears to have been written for Ada 95 with a few additions for some of Ada 2005
 * It doesn't seem to address "OO for the Ada practitioner" at all
 * The "Ada for the OO practitioner" narrative is (probably unavoidably) incomplete and is aimed mainly (entirely?) at C++ programmers without consideration for the other OO languages
 * There are a number of minor factual errors
 * Terminology is inconsistent (see my note above)
 * The distinction between specific types and class-wide types is not made...
 * Which leads to not discussing class-wide operations vs. primitive operations...
 * Which in turn leads to not mentioning at all the significant issue of nested dynamic calls.

I'm considering making the attempt to rewrite this page, but it is a daunting task. It's also difficult to accomplish a full rewrite in a bunch of small update sessions. DougP (talk) 13:37, 30 August 2008 (UTC)

Demonstrating public/protected/private without dynamic memory allocation
The section Encapsulation: public, private and protected members demonstrates a technique for approximating C++'s public/protected/private via the use of a child package for "protected" and a record defined in the package body for "private," where the private extension is allocated dynamically and referred to by an access type in the "protected" record. It appears that this section did not originally use dynamic allocation, but was modified at the suggestion of this discussion, which includes the original example. Of course, the code from the discussion's suggestion was subsequently modified to use Controlled to manage the "private" record.

It's not necessary to use dynamic memory allocation to achieve the goals of the example in this section, and I suggest it be updated to show a better technique. I have created a possible alternative that is designed to achieve the same public/protected/private semantics as the current example. Here's a portion of the spec from my alternative:

package CPP is   -- -- Public API --   subtype Component is String (1..2); type Public_Part is abstract tagged record A : Component := " A"; end record; procedure Public_Proc (This : Public_Part;                          Indent : String) is abstract; --   -- Public Parent_Type Declaration --   type Parent_Type is new Public_Part with private; private --   -- Protected API --   type Protected_Part is abstract new Public_Part with record B : Component := " B"; end record; procedure Protected_Proc (This : Protected_Part;                             Indent : String) is abstract; --   -- Implementation of Parent_Type --   package Parent_Impl is       type Private_Part is new Protected_Part with private; overriding procedure Public_Proc (This : Private_Part;                                        Indent : String); overriding procedure Protected_Proc (This : Private_Part;                                           Indent : String); private type Private_Part is new Protected_Part with record C : Component := " C"; end record; procedure Private_Proc (This: Private_Part;                              Indent : String); end Parent_Impl; --   -- Protected Parent_Type Declaration --   type Parent_Type is new Parent_Impl.Private_Part with null record; end CPP;

I believe this accomplishes the same semantics without all the complexities/overhead of hitting the pool/heap. I think it also demonstrates two techniques that I found very useful in transitioning from C++ to Ada: 1) the private full declaration of a type can extend a different type than the partial public declaration if the private base derives the public base and 2) nested packages can be used to hide data from child packages.

Of course, I think all the examples so far -- including mine -- don't really achieve C++'s "protected," and are more similar to Java's "package private."

If anyone is interested, I am including my full example and its output. I've only been using Ada for a couple weeks, so my code would most certainly need the review of an expert.

SeanD (discuss • contribs) 21:59, 8 January 2013 (UTC)

Full Example
test_cpp.adb with Ada.Text_IO; use Ada.Text_IO; with CPP.Child; use CPP, CPP.Child; procedure Test_CPP is   As_Child : Child_Type; As_Parent : Parent_Type renames Parent_Type (As_Child); As_Parent_Class : Parent_Type'Class := As_Parent; begin Put_Line ("Test_CPP invoking As_Parent.Public_Proc"); As_Parent.Public_Proc (CPP.Indent_Inc); Put_Line ("Test_CPP invoking As_Child.Public_Proc"); As_Child.Public_Proc (CPP.Indent_Inc); Put_Line ("Test_CPP invoking As_Parent_Class.Public_Proc"); As_Parent_Class.Public_Proc (CPP.Indent_Inc); Put_Line ("Test_Cpp invoking As_Child.Dispatch_Protected"); As_Child.Dispatch_Protected (CPP.Indent_Inc); end Test_CPP;

cpp.ads package CPP is   Indent_Inc : constant String := "|  "; --   -- Public API --   subtype Component is String (1..2); type Public_Part is abstract tagged record A : Component := " A"; end record; procedure Public_Proc (This : Public_Part;                          Indent : String) is abstract; procedure Dispatch_Protected (This : Public_Part;                                 Indent : String) is abstract; --   -- Public Parent_Type Declaration --   type Parent_Type is new Public_Part with private; private --   -- Protected API --   type Protected_Part is abstract new Public_Part with record B : Component := " B"; end record; procedure Protected_Proc (This : Protected_Part;                             Indent : String) is abstract; --   -- Implementation of Parent_Type --   package Parent_Impl is       type Private_Part is new Protected_Part with private; overriding procedure Public_Proc (This : Private_Part;                                        Indent : String); overriding procedure Dispatch_Protected (This : Private_Part;                                               Indent : String); overriding procedure Protected_Proc (This : Private_Part;                                           Indent : String); private type Private_Part is new Protected_Part with record C : Component := " C"; end record; procedure Private_Proc (This: Private_Part;                              Indent : String); end Parent_Impl; --   -- Protected Parent_Type Declaration --   type Parent_Type is new Parent_Impl.Private_Part with null record; end CPP; cpp.adb with Ada.Text_IO; use Ada.Text_IO; package body CPP is   package body Parent_Impl is       procedure Public_Proc (This : Private_Part;                              Indent : String) is       begin Put_Line (Indent & "Private_Part.Public_Proc" & This.A & This.B & This.C); This.Protected_Proc (Indent & Indent_Inc); This.Private_Proc (Indent & Indent_Inc); end Public_Proc; overriding procedure Dispatch_Protected (This : Private_Part;                                               Indent : String) is       begin Put_Line (Indent & "Private_Part.Dispatch_Protected" & This.A & This.B & This.C); Protected_Part'Class (This).Protected_Proc (Indent & Indent_Inc); end Dispatch_Protected; overriding procedure Protected_Proc (This : Private_Part;                                           Indent : String) is       begin Put_Line (Indent & "Private_Part.Protected_Proc" & This.A & This.B & This.C); Private_Proc (This, Indent & Indent_Inc); end Protected_Proc; procedure Private_Proc (This : Private_Part;                              Indent : String) is       begin Put_Line (Indent & "Private_Part.Private_Proc" & This.A & This.B & This.C); end Private_Proc; end Parent_Impl; end CPP; cpp-child.ads package CPP.Child is   type Child_Type is new Parent_Type with null record; overriding procedure Public_Proc (This : Child_Type;                                     Indent : String); private overriding procedure Protected_Proc (This : Child_Type;                                        Indent : String); end CPP.Child; cpp-child.adb with Ada.Text_IO; use Ada.Text_IO; package body CPP.Child is   overriding procedure Public_Proc (This : Child_Type;                                      Indent : String) is    begin Put_Line (Indent & "Child_Type.Public_Proc" & This.A & This.B); Parent_Type (This).Public_Proc (Indent & Indent_Inc); Parent_Type (This).Protected_Proc (Indent & Indent_Inc); This.Protected_Proc (Indent & Indent_Inc); end Public_Proc; overriding procedure Protected_Proc (This : Child_Type;                                        Indent : String) is    begin Put_Line (Indent & "Child_Type.Protected_Proc" & This.A & This.B); Parent_Type (This).Public_Proc (Indent & Indent_Inc); Parent_Type (This).Protected_Proc (Indent & Indent_Inc); end Protected_Proc; end CPP.Child;

Output
Test_CPP invoking As_Parent.Public_Proc | Private_Part.Public_Proc A B C |  |  Private_Part.Protected_Proc A B C |  |  |  Private_Part.Private_Proc A B C |  |  Private_Part.Private_Proc A B C Test_CPP invoking As_Child.Public_Proc | Child_Type.Public_Proc A B |  |  Private_Part.Public_Proc A B C |  |  |  Private_Part.Protected_Proc A B C |  |  |  |  Private_Part.Private_Proc A B C |  |  |  Private_Part.Private_Proc A B C |  |  Private_Part.Protected_Proc A B C |  |  |  Private_Part.Private_Proc A B C |  |  Child_Type.Protected_Proc A B |  |  |  Private_Part.Public_Proc A B C |  |  |  |  Private_Part.Protected_Proc A B C |  |  |  |  |  Private_Part.Private_Proc A B C |  |  |  |  Private_Part.Private_Proc A B C |  |  |  Private_Part.Protected_Proc A B C |  |  |  |  Private_Part.Private_Proc A B C Test_CPP invoking As_Parent_Class.Public_Proc | Child_Type.Public_Proc A B |  |  Private_Part.Public_Proc A B C |  |  |  Private_Part.Protected_Proc A B C |  |  |  |  Private_Part.Private_Proc A B C |  |  |  Private_Part.Private_Proc A B C |  |  Private_Part.Protected_Proc A B C |  |  |  Private_Part.Private_Proc A B C |  |  Child_Type.Protected_Proc A B |  |  |  Private_Part.Public_Proc A B C |  |  |  |  Private_Part.Protected_Proc A B C |  |  |  |  |  Private_Part.Private_Proc A B C |  |  |  |  Private_Part.Private_Proc A B C |  |  |  Private_Part.Protected_Proc A B C |  |  |  |  Private_Part.Private_Proc A B C Test_Cpp invoking As_Child.Dispatch_Protected | Private_Part.Dispatch_Protected A B C |  |  Child_Type.Protected_Proc A B |  |  |  Private_Part.Public_Proc A B C |  |  |  |  Private_Part.Protected_Proc A B C |  |  |  |  |  Private_Part.Private_Proc A B C |  |  |  |  Private_Part.Private_Proc A B C |  |  |  Private_Part.Protected_Proc A B C |  |  |  |  Private_Part.Private_Proc A B C

Need to describe how to assigning to access to classwide type.
The description of polymorphism is inadequate in the place where this line occurs:

function Read_From_Disk return Array_Of_Persons is separate;

because it does not show how to assign to the access variables that comprise the elements of the array.

97.117.195.126 (discuss) 08:10, 2 May 2013 (UTC)

title: Talk:Ada Programming/Object Orientation


text:
User talk:193.188.105.230

Thanks for experimenting with Wikibooks. Your test worked, and has now been removed. Please use Sandbox for any other tests you want to do, since testing material in modules will normally be removed quickly. Please see the welcome page if you would like to learn more about contributing to our project. Thanks.

If you really did want answers to your questions, you might want to ask them on Talk:Active Server Pages. Webaware talk 08:12, 9 July 2007 (UTC)

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: User talk:193.188.105.230


text:
User talk:122.162.157.240

Thanks for experimenting with Wikibooks. Your test worked, and has now been removed. Please use Sandbox for any other tests you want to do, since testing material in modules will normally be removed quickly. Please see the welcome page if you would like to learn more about contributing to our project. Thanks. Webaware talk 10:00, 9 July 2007 (UTC)

title: User talk:122.162.157.240


text:
User talk:210.187.82.226

Thanks for experimenting with Wikibooks. Your test worked, and has now been removed. Please use Sandbox for any other tests you want to do, since testing material in modules will normally be removed quickly. Please see the welcome page if you would like to learn more about contributing to our project. Thanks. Webaware talk 10:01, 9 July 2007 (UTC)

title: User talk:210.187.82.226


text:
User talk:202.54.152.227

Thanks for experimenting with Wikibooks. Your test worked, and has now been removed. Please use Sandbox for any other tests you want to do, since testing material in modules will normally be removed quickly. Please see the welcome page if you would like to learn more about contributing to our project. Thanks. Webaware talk 11:05, 9 July 2007 (UTC)

title: User talk:202.54.152.227


text:
User talk:212.219.92.45

Dora Nichov 12:37, 9 July 2007 (UTC)

title: User talk:212.219.92.45


text:
User talk:79.74.102.24

Dora Nichov 12:37, 9 July 2007 (UTC)

title: User talk:79.74.102.24


text:
User talk:PatríciaR

Hello, welcome to Wikibooks!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add this page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

Good luck! -- Herby talk thyme 12:45, 9 July 2007 (UTC)

title: User talk:PatríciaR


text:
User talk:Bdieseldorff

Welcome message
Hello, welcome to Wikibooks!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add this page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

Good luck!

You might also be interested to read our Cookbook policy page and talk to other Cookbook editors. Webaware talk 13:50, 9 July 2007 (UTC)

title: User talk:Bdieseldorff


text:
User talk:Bruta

Welcome message
Hello, welcome to Wikibooks!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add this page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

Good luck!

You might also be interested to read our Cookbook policy page and talk to other Cookbook editors. Webaware talk 14:00, 9 July 2007 (UTC)

title: User talk:Bruta


text:
Internet and Society

This book provides a multidisciplinary view of the Internet and its interaction with society.

The principal perspectives that will be covered are:
 * technology (the basic infrastructure of the web, its architecture and statistics)
 * economics (the role that the Internet is playing and has played in economies)
 * legal (legal issues, especially copyright, patent, trademark, but also libel, censorship, etc.)
 * culture (online communities, cultural production)

Table of Contents

 * 1) /Introduction/
 * 2) /Technological Infrastructure/
 * 3) /Demographics/
 * 4) /Dangers/
 * 5) /Economics and the Internet/
 * 6) /The Internet and the Law/

title: Internet and Society


text:
Internet and Society/Introduction

This wikibook is being developed for the CS33b Internet and Society course which is offered at Brandeis University. It will be written and revised by the students and instructors of the course, but others are of course welcome to contribute. Given the rapid evolution of the interent, we expect this book to be a continually evolving work, always under construction.

title: Internet and Society/Introduction


text:
User:Caiguanhao

Is

 * A boy born in 1989
 * Living with parents
 * A Chinese
 * A student

Has

 * A personal website
 * A laptop
 * A Google account

Doesn't have so far

 * A girl friend
 * An iPhone
 * (more...)

Wishes

 * To travel all over the world
 * To live in Europe

Loves

 * Creating new pages in Wikimedia Projects
 * Translate English into Chinese
 * Talk with foreigners who speak Chinese or Simple English
 * Peace
 * Mozilla Firefox
 * Freedom

Hates

 * Internet Explorer
 * Walking
 * Waiting
 * Bitter taste
 * War
 * Learning something uninteresting
 * Politics

cy:User:Caiguanhao de:User:Caiguanhao es:User:Caiguanhao it:User:Caiguanhao nl:User:Caiguanhao pa:User:Caiguanhao pl:User:Caiguanhao pt:User:Caiguanhao ro:User:Caiguanhao zh:User:Caiguanhao

title: User:Caiguanhao


text:
Electrodynamics/Notation

This book uses a consistent notation for its equations. We will describe the symbols we use here, as well as other ways that those concepts are notated in other books.

 * $$\nabla$$: Gradient operator
 * $$\nabla$$2: Laplacian operator
 * $$\Box$$: d'Alembertian operator
 * A: Area
 * A: Magnetic potential field
 * B: Magnetic field
 * c: Speed of light
 * D:
 * E: Electric Field
 * Fe: Electric force vector
 * Fm: Magnetic force vector
 * F: Field Tensor
 * G: Magnetic Field Tensor
 * H:
 * I: Current, in amperes
 * j: Electric current
 * j: Electric current density
 * k: Coulomb's Constant
 * K: Magnetic Constant
 * l: length
 * L: Lorentz transformation matrix
 * M: Magnetization field
 * n: Normal vector
 * φ: Electric potential function
 * r: Scalar distance
 * r, θ, z: Cylindrical coordinates
 * r, θ, ρ: Spherical coordinates
 * r: Distance vector
 * R: Rotation matrix
 * σ: Charge density
 * TE: Electric stress tensor
 * TM: Magnetic stress tensor
 * V: Volume
 * x, y, z: Cartesian Coordinates

title: Electrodynamics/Notation


text:
German/Appendices/Numbers

Cardinal numbers
When referring to a single cardinal number, the article "die" is used - for example, "die zwei". When a number is used with a noun, the article of the noun is used, such as "der erste Computer". Numbers are not capitalised. Zero is "null". • 2

Numbers from 13 through 19 are similar to English. Compare English "fourteen" with German "vierzehn".

 * 13. dreizehn
 * 14. vierzehn
 * 15. fünfzehn
 * 16. sechzehn
 * 17. siebzehn (note the removal of the "en" at the end of "sieben")
 * 18. achtzehn
 * 19. neunzehn

As we get larger than nineteen, the numbers pick up a predictable pattern. Each multiple of 10 is simply the name of the first digit with the suffix "zig", such as "vierzig" meaning 40. A big exception to this rule is 20, which is "zwanzig". Numbers in between multiples are added to the beginning and connected with "und", such as "sechsundvierzig" meaning 46.

 * 20. zwanzig
 * 30. dreißig ("dreissig" in Switzerland and Liechtenstein)
 * 40. vierzig
 * 50. fünfzig
 * 60. sechzig (note the removal of the "s" at the end of "sechs")
 * 70. siebzig (note again the removal of the "en")
 * 80. achtzig
 * 90. neunzig

Hundreds are formed a bit differently. 100 is "hundert", but 101 is "hunderteins". Cardinals are simply tacked on to the end. Thousands are the same way.

 * 100. (ein) hundert
 * 120. hundertzwanzig
 * 146. hundertsechsundvierzig
 * 459. vierhundertneunundfünfzig
 * 1532. tausendfünfhundertzweiunddreißig
 * 10,267. zehntausendzweihundertsiebenundsechzig

Millions are also the same, but the Germans use the British long scale - i.e. "million" is the same ("eine Million"), but the short American "billion" is "eine Milliarde" and the short "trillion" is "eine Billion". "Million" has the plural form "Millionen".
 * 1,000,000. eine Million
 * 1,500,250. Millionfünfhunderttausendundzweihundertfünfzig
 * 2,000,000. zwei Millionen
 * 3,000,000,000. drei Milliarde
 * 6,000,000,000,000. sechs Billion

Ordinal numbers
Ordinal numbers (first, second, third, etc.) are simply a matter of adding "te" to the end of the cardinal. The only exceptions are "first", which is "erste", and "third", which is "dritte". Larger numbers such as "thirteenth" ("dreizehnte") are not affected by this exception.

• 2

Fractions and decimals
Fractions are also as simple as adding a suffix - in this case, "tel". The only exception is "half" ("halb").

 * 1/2. ein Halb
 * 1/3. ein Drittel (the irregularity from the ordinal number carries over)
 * 1/4. ein Viertel
 * 1/5. ein Fünftel
 * 1/6. ein Sechstel
 * 1/7. ein Siebtel (note again the removal of the "en")
 * 1/8. ein Achtel (note again only one "t")
 * 1/9. ein Neuntel
 * 1/10. ein Zehntel

Decimals are the same as in English. The comma (das "Komma") is used instead of the decimal point. Numbers are spoken in the form "zwei Komma vier" (2,4). The expression "null Komma nichts" (0,0, literally "zero point nothing") means "in a flash".
 * 1/2 = 0,25
 * 7 3/4= 7,75

title: German/Appendices/Numbers


text:
Internet and Society/Technological Infrastructure

 * 1) /Network Infrastructure/
 * 2) /Search Technology/
 * 3) /Exercises/


text:
Cookbook:Maple Syrup Planked Salmon

| Fish

Maple syrup planked salmon mixes the hint of sweetness from the maple syrup with the rich smoky flavour imparted from the cedar plank. Using organic ingredients enhances taste.

Ingredients

 * 4 salmon steaks or individual fillets (preferably wild-caught)
 * 4 tbsp (60 ml) fresh lemon juice, divided
 * 2 tsp (10 ml) pure maple syrup
 * 2 tbsp (30 ml) grapeseed oil (or other neutral oil)
 * 1½ tsp (7 g) chipotle powder (chipotle barbecue sauce may be substituted for this)
 * 1 tsp (5 g) crushed dried rosemary
 * 2 scallions, thinly sliced for garnish
 * Salt

Special equipment

 * Cedar plank(s) large enough to hold salmon without crowding (these must be untreated cedar planks with no preservatives or chemicals)
 * Grill
 * Spray bottle of water for controlling flare-ups

Procedure

 * 1) Completely immerse cedar planks in water for several hours or overnight.
 * 2) Heat grill to medium-high.
 * 3) Mix 2 tablespoons (30 ml) lemon juice, the oil, rosemary, maple syrup, and half of the chipotle powder in a small bowl. Coat the salmon with the mixture and let rest at room temperature for 20 minutes.
 * 4) Mix the remaining lemon juice with the remaining chipotle powder with a fork and set aside as a garnish.
 * 5) Place plank(s) on grill and close lid. Allow plank to heat for a couple minutes.
 * 6) Lightly sprinkle salt on plank(s).
 * 7) Put salmon on plank, keeping fish at least an inch from the edge of the plank (in the case of fillets, place skin-side down). Reduce heat to low and close lid.
 * 8) Grill for roughly 15 minutes without turning or moving salmon until desired "doneness" is reached. Generally, salmon should be cooked until the flesh loses its transparency and the meat can easily be broken with a fork. Spray with water to douse any flames that light on the sides of the plank.
 * 9) When cooked, place the salmon on a serving platter and sprinkle with the scallions.
 * 10) Immerse the cedar plank in water as a safety precaution.
 * 11) Serve the salmon with the optional lemon juice/chipotle sauce.

title: Cookbook:Maple Syrup Planked Salmon


text:
Cookbook:Hamburger Deluxe

 * Meat recipes

Hamburger deluxe turns a hamburger into a whole new experience. This recipe evolved over a couple of decades with ingredients being added or deleted as tastes changed.

Hamburgers

 * ¾ lb (350 g) lean ground beef
 * ¼ lb (110 g) ground lamb
 * 1 egg
 * ½ cup (125 ml) rolled oats
 * 2 cloves garlic, minced
 * 1 tablespoon (15 ml) grapeseed oil (or other lightly flavoured oil)
 * 1 tablespoon (15 ml) Dijon mustard
 * 1 teaspoon (5 g) ground cumin
 * ½ teaspoon (2 ml) Worcestershire Sauce
 * 1 tablespoon (15 ml) chipotle BBQ Sauce, or a healthy pinch of chipotle powder
 * ½ teaspoon (2–3 g) salt

Topping

 * Cheese, smoked cheddar is best, but any cheddar or your favourite cheese will do
 * Sour cream
 * Plain cream cheese, sliced thinly
 * 1 Vidalia onion, coarsely chopped (Spanish onion will do)
 * ¼ pound (110 g) button mushrooms, sliced thin
 * 1 tablespoon butter
 * Fresh ground black pepper to taste
 * Favourite hamburger condiments
 * 4 hamburger buns

Special equipment

 * Grill

Procedure

 * 1) Sauté onions and mushrooms in butter until lightly brown, then set aside.
 * 2) Mix all of the hamburger ingredients together until well-mixed, and let rest for 15 minutes.
 * 3) Heat grill to medium-high.
 * 4) Divide hamburger mix into 4 equal balls.
 * 5) Form patties by slapping the burgers back and forth from one palm to the other until they are about an inch thick.
 * 6) Grill burgers to desired doneness, turning every few minutes and adding cheese after the last flipping of the burgers
 * 7) Serve on the buns, with the onion/mushroom mixture, a dollop of sour cream, and a thin slice of cream cheese.

Notes, tips, and variations

 * The suggestion to flip the meat a number of times comes from a book concerning the science of cooking. The theory is that the juices in meat rise to the surface of the meat and are then lost during grilling. By turning the meat regularly, you reduce the capacity of the juices to rise out of, and run off, the meat.
 * The egg and oats combine to bind the hamburgers and help prevent them from falling apart on the grill.

title: Cookbook:Hamburger Deluxe


text: Template:Goodbook/Latin

title: Template:Goodbook/Latin


text:
Talk:Muggles' Guide to Harry Potter/Magic/Obliviate

Hah, this one's unintentionally hilarious because (right now, anyway) it's blank. You didn't see anything, Muggle! 72.72.242.224 20:22, 9 July 2007 (UTC)


text:
User:Arsharpe/sandbox/moved to

Entry 1

Entry 2

Entry 3

title: User:Arsharpe/sandbox/moved to


text:
Citroën Berlingo Electrique/Service Manual

This service manual is created and maintained by Berlingo Electrique users.

Vehicle production numbers
The vehicle production numbering system used on the Berlingo contains a replacement part number and the manufacturing country. The number is found on the driver's door hinge pillar and the format is as follows.

For Example:

08849FV

10445EQPAxx

08849 = Replacement Part Number and represents the number of production days (where 330 days/year) FV = Manufacturing Country

On Board Diagnostic Format
The Berlingo Electrique uses the OBD-II (http://en.wikipedia.org/wiki/On-board_diagnostics)

Simulation of Drive Train
A good simulation of the vehicle drive train is given at (http://www.docstoc.com/docs/44374842/Modeling-and-Simulation-of-different-Hybrid-Electric-Vehicles-in)

Data-sheets

 * The best information seems to be from http://www.berlingo-e.co.uk and click "Manuals".


text:
User talk:Kathryn.rebecca42

Hello, welcome to Wikibooks!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add this page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

If all that seems too much to wade through, you're welcome to ask any question at all on the New Users Page of the Staff Lounge. Just hit the "+" sign on the top of that page, and enter your question! -- Herby talk thyme 18:22, 12 July 2007 (UTC)

Hello, and welcome to Wikibooks.

I note you've been doing a lot of editing on the Muggle's Guide. We do appreciate it. However... we would like to keep the links pointing internally within the Wikibooks volume, rather than having them point out to Wikipedia.

For instance, the link to the Vanishing Cabinets that you added: you set that to Vanishing Cabinet. To keep that within the Muggles' Guide book, that being in a book chapter, you could have set the link to Vanishing Cabinet, and that would have pointed to our internal writeup on that subject.

If you need pointers on setting up the links, please feel free to ask. And thanks again for your interest. Chazz (talk) 20:38, 9 July 2007 (UTC)

Muggles' Guide Deathly Hallows themes
Very nicely done. Thank you for that. Chazz (talk) 20:27, 10 August 2007 (UTC)

your user page
Hope you don't mind me tweaking it -- I noticed an apostrophe out of place, and put it back to get rid of a redlink there. If I have offended, please feel free to chastise me. Chazz (talk) 15:41, 18 October 2007 (UTC)

 * It's odd how real life seems to get in the way that way, isn't it? Though I believe law school is likely more important than Wikibooks.

 * Dumbledore: Yeah, a lot of jaws dropped when that came out – that was part of the recent book tour, I think the last US stop, where Rowling came out with that. While I didn't pick up on it either, it suddenly made Dumbledore's ignorance of Grindelwald's true nature make sense. Even in the one letter that got published there, we can see that Dumbledore is rationalizing some aspects of Grindelwald's nature, and that sort of worship didn't make a huge amount of sense... but if Dumbledore was infatuated with Grindelwald, then it works. I'm thinking that we mention the infatuation just as a separate fact in the Greater Picture sections where it is slightly important, and leave it out of the rest of the write-up. Chazz (talk) 15:48, 24 October 2007 (UTC)

Welcome back!
Long time no edit!

One thing I should mention: as we gear up for the PDF and print versions of the book, we have modified all of our internal links to be fully-qualified, e.g. Ashwinder. I suspect you've already noticed that.

As a result of this, however, we are now keeping a full list of all the pages in the book on the Contents page. When you add a new page, apart from the link on the topic page (e.g. Magic), you should also put a link on the Contents page so that it will get included into the PDF and print versions. Also, the PDF converter breaks down on redlinks, so it is best to not include a page unless we are certain that we have time to actually at least put a framework of the page in there. I've already done this for your new Ashwinder and Augurey pages.

Again, welcome back, and happy editing! Chazz (talk) 17:22, 5 March 2008 (UTC)

title: User talk:Kathryn.rebecca42


text:
User talk:Michaelx153

--AdRiley 20:47, 9 July 2007 (UTC)

title: User talk:Michaelx153


text:
User:Michaelx153

i need to know how to shoot and aim using the mouse

title: User:Michaelx153


text:
User talk:12.40.135.194

Hi there. I have removed the change you made to the p category page as it wasn't the correct way to change this page. What were you trying to do? Perhaps I can help. --AdRiley 21:02, 9 July 2007 (UTC)

title: User talk:12.40.135.194


text:
User talk:203.162.27.90

Thanks for experimenting with Wikibooks. Your test worked, and will soon be removed. Please use Sandbox for any other tests you want to do, since testing material in modules will normally be removed quickly. Please see the welcome page if you would like to learn more about contributing to our project. Thanks.  – Mike.lifeguard  | talk 22:55, 9 July 2007 (UTC)

title: User talk:203.162.27.90


text:
User talk:Lawrence Posada

Hello, welcome to Wikibooks!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add this page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

If all that seems too much to wade through, you're welcome to ask any question at all on the New Users Page of the Staff Lounge. Just hit the "+" sign on the top of that page, and enter your question! – Mike.lifeguard  | talk 22:59, 9 July 2007 (UTC)

title: User talk:Lawrence Posada


text:
User talk:Wolf Mystique~enwikibooks

Hello, welcome to Wikibooks!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add this page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

If all that seems too much to wade through, you're welcome to ask any question at all on the New Users Page of the Staff Lounge. Just hit the "+" sign on the top of that page, and enter your question!

 – Mike.lifeguard  | talk 23:00, 9 July 2007 (UTC)

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Wolf Mystique. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Wolf Mystique~enwikibooks that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:54, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 05:39, 19 April 2015 (UTC)

title: User talk:Wolf Mystique~enwikibooks


text:
User:Flubeca~enwikibooks

Please visit my main page at http://en.wikipedia.org

title: User:Flubeca~enwikibooks


text:
User talk:Schwarzbichler

Hello, welcome to Wikibooks!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add this page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

If all that seems too much to wade through, you're welcome to ask any question at all on the New Users Page of the Staff Lounge. Just hit the "+" sign on the top of that page, and enter your question! Mattb112885 (talk to me) 00:44, 10 July 2007 (UTC)

title: User talk:Schwarzbichler


text:
User talk:Ctwig7sj

Hello, welcome to Wikibooks!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Staff lounge, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add this page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

If all that seems too much to wade through, you're welcome to ask any question at all on the New Users Page of the Staff Lounge. Just hit the "+" sign on the top of that page, and enter your question! Mattb112885 (talk to me) 00:45, 10 July 2007 (UTC)

title: User talk:Ctwig7sj


text:
Suicide/Drowning

Drowning is death as caused by suffocation when a liquid causes interruption of the body's absorption of oxygen from the air leading to asphyxia. The primary cause of death is hypoxia and acidosis leading to cardiac arrest.

Near drowning is the survival of a drowning event involving unconsciousness or water inhalation and can lead to serious secondary complications, including death, after the event. Cases of near drowning are often given attention by medical professionals.

Secondary drowning is death due to chemical or biological changes in the lungs after a near drowning incident.

The body's reaction to submersion
Submerging the face in water triggers the mammalian diving reflex. This is found in all mammals, and especially in marine mammals such as whales and seals. This reflex is designed to protect the body by putting it into energy saving mode to maximize the time it can stay under water. The effect of this reflex is greater in cold water than in warm water and has three principal effects: The reflex action is automatic and allows both a conscious and an unconscious person to survive longer without oxygen under water than in a comparable situation on dry land.
 * Bradycardia, a slowing of the heart rate of up to 50% in humans.
 * Peripheral Vasoconstriction, the restriction of the blood flow to the extremities to increase the blood and oxygen supply to the vital organs, especially the brain.
 * Blood Shift, the shifting of blood to the thoracic cavity, the region of the chest between the diaphragm and the neck, to avoid the collapse of the lungs under higher pressure during deeper dives.

The reaction to oxygen deprivation
A conscious victim will hold his or her breath (see Apnea) and will try to access air, often resulting in panic, including rapid body movement. This uses up more oxygen in the blood stream and reduces the time to unconsciousness. The victim can voluntarily hold his or her breath for some time, but the breathing reflex will increase until the victim will try to breathe, even when submerged.

The breathing reflex in the human body is weakly related to the amount of oxygen in the blood but strongly related to the amount of carbon dioxide. During apnea, the oxygen in the body is used by the cells, and excreted as carbon dioxide. Thus, the level of oxygen in the blood decreases, and the level of carbon dioxide increases. Increasing carbon dioxide levels lead to a stronger and stronger breathing reflex, up to the breath-hold breakpoint, at which the victim can no longer voluntarily hold his or her breath. This typically occurs at an arterial partial pressure of carbon dioxide of 55 mm Hg, but may differ significantly from individual to individual and can be increased through training.

The breath-hold break point can be suppressed or delayed either intentionally or unintentionally. Hyperventilation before any dive, deep or shallow, flushes out carbon dioxide in the blood resulting in a dive commencing with an abnormally low carbon dioxide level; a potentially dangerous condition known as hypocapnia. The level of carbon dioxide in the blood after hyperventilation may then be insufficient to trigger the breathing reflex later in the dive and a blackout may occur without warning and before the diver feels any urgent need to breathe. This can occur at any depth and is common in distance breath-hold divers in swimming pools, refer to shallow water blackout for more detail. Hyperventilation is often used by both deep and distance free-divers to flush out carbon dioxide from the lungs to suppress the breathing reflex for longer. It is important not to mistake this for an attempt to increase the body's oxygen store. The body at rest is fully oxygenated by normal breathing and cannot take on any more. Breath holding in water should always be supervised by a second person, as by hyperventilating, one increases the risk of shallow water blackout because insufficient carbon dioxide levels in the blood fail to trigger the breathing reflex.

The reaction to water inhalation
If water enters the airways of a conscious victim the victim will try to cough up the water or swallow it thus inhaling more water involuntarily. Upon water entering the airways, both conscious and unconscious victims experience laryngospasm, that is the larynx or the vocal cords in the throat constrict and seal the air tube. This prevents water from entering the lungs. Because of this laryngospasm, water enters the stomach in the initial phase of drowning and very little water enters the lungs. Unfortunately, this can interfere with air entering the lungs, too. In most victims, the laryngospasm relaxes some time after unconsciousness and water can enter the lungs causing a "wet drowning". However, about 10-15% of victims maintain this seal until cardiac arrest, this is called "dry drowning" as no water enters the lungs. In forensic pathology water in the lungs indicates that the victim was still alive at the point of submersion; the absence of water in the lungs may be either a dry drowning or indicates a death before submersion.

Unconsciousness
A continued lack of oxygen in the brain, hypoxia, will quickly render a victim unconscious usually around a blood partial pressure of oxygen of 25-30mmHg. An unconscious victim rescued with an airway still sealed from laryngospasm stands a good chance of a full recovery. Artificial respiration is also much more effective without water in the lungs. At this point the victim stands a good chance of recovery if attended to within minutes. In most victims the laryngospasm relaxes some time after unconsciousness and water fills the lungs resulting in a wet drowning. Latent hypoxia is a special condition leading to unconsciousness where the partial pressure of oxygen in the lungs under pressure at the bottom of a deep free-dive is adequate to support consciousness but drops below the blackout threshold as the water pressure decreases on the ascent, usually close to the surface as the pressure approaches normal atmospheric pressure. A blackout on ascent like this is called a deep water blackout.

Cardiac arrest and death
The brain cannot survive long without oxygen and the continued lack of oxygen in the blood combined with the cardiac arrest will lead to the deterioration of brain cells causing first brain damage and eventually brain death from which recovery is generally considered impossible. A lack of oxygen or chemical changes in the lungs may cause the heart to stop beating; this cardiac arrest stops the flow of blood and thus stops the transport of oxygen to the brain. Cardiac arrest used to be the traditional point of death but at this point there is still a chance of recovery. The brain will die after approximately six minutes without oxygen but special conditions may prolong this (see 'cold water drowning' below). Freshwater contains less salt than blood and will therefore be absorbed into the blood stream by osmosis. In animal experiments this was shown to change the blood chemistry and led to cardiac arrest in 2 to 3 minutes. Sea water is much saltier than blood. Through osmosis water will leave the blood stream and enter the lungs thickening the blood. In animal experiments the thicker blood requires more work from the heart leading to cardiac arrest in 8 to 10 minutes. However, autopsies on human drowning victims show no indications of these effects and there appears to be little difference between drownings in salt water and fresh water. After death rigor mortis will set in and remains for about two days, depending on many factors including water temperature.

Secondary drowning
Water, regardless of its salt content, will damage the inside surface of the lung, collapse the alveoli and cause edema in the lungs with a reduced ability to exchange air. This may cause death up to 72 hours after a near drowning incident. This is called secondary drowning. Inhaling certain poisonous vapors or gases will have a similar effect.

title: Suicide/Drowning


text:
Category:Maple recipes

Recipes involving maple syrup and its derivatives.

title: Category:Maple recipes


text:
User talk:71.135.56.33

Please do not create the page Dransy anymore. You are probably looking for the Muggles' Guide to Harry Potter. --Whiteknight (Page) (Talk) 01:35, 10 July 2007 (UTC)

title: User talk:71.135.56.33


text:
User talk:Roanne

please stop creating the page Dransy. It is not a book and does not belong there. You probably want to create a new page in the Muggles' Guide to Harry Potter. --Whiteknight (Page) (Talk) 01:37, 10 July 2007 (UTC)

title: User talk:Roanne


text:
Talk:TI-Basic Z80 Programming/Necessary Items

Does anyone know where I can download the TI Edit computer program that was mentioned in this article. If not, I need to find another program that can edit TI Basic on a computer.


text:
Electrodynamics/Lorentz Force

Paulo Lacombe Spring 2018 In order to find the force acting on a charged particle inside a magnetic and/or electric field we need to use the Lorentz force rule. When adding a charged particle to a field the field must exert a force on the particle based on the magnitude and direction of the field and the particle.

Because the Lorentz force involves both an electric and magnetic field it is considered part of electromagnetism. Lorentz force also completes the net forces acting on a particle together with other forces such as gravitational force.

Complete Formula

 * $$\mathbf{F} = q(\mathbf{E} + \mathbf{v} \times \mathbf{B})$$

F is the force acting on the particle

q is the charge of the particle

E is the electric field

v is the velocity

B is the magnetic field

x is the cross product. In this case the result is the vector cross product between the particle velocity and the magnetic field.

Electric Force
$$\mathbf{F} = q * \mathbf{E}$$

Magnetic Force
$$\mathbf{F} = q(\mathbf{v} \times \mathbf{B})$$

Analysis
Based on the equation we can conclude that the electric force on the particle is in the same direction as the electric field as long as the particle is positive, the force is in the opposite direction if the particle is negative. The magnetic force will be perpendicular to the velocity and magnetic field, in other words the normal to the magnetic force and the velocity. This force generally causes the particle to move in a spiral as long as the magnetic force is not parallel to the velocity. In that case the force would be equal to zero.

In order to determine the of the magnetic force in a physical manner we can use the Right Hand Rule. By placing your four main fingers in the direction of the magnetic field and your thumb in the direction of the velocity, the direction of the force is pointed out of your palm as shown in the diagram.

Problem 1
Find the magnitude and direction of the magnetic force on the antiproton.

$$\vec{v}_p=v<0,-1,0>$$ $$\hat{r}={\vec{r} \over |r|}={<-d,-d,0> \over \sqrt{(-d)^2+(-d)^2}}={1 \over \sqrt{2}}<-1,-1,0>$$

$$\vec{B_p}={\mu_0 \over 4\pi}*{q\vec{v_p}\times\widehat{r} \over r^2}={\mu_0 \over 4\pi}*{e<0,-v,0>\times{1\over\sqrt{2}}<-1,-1,0> \over 2d^2}$$

$$\vec{B_p}={\mu_0ev\over 8\pi\sqrt{2}d^2}*<0,0,-1>$$

$$\vec{F_B}={\mu_0ev\over 8\pi\sqrt{2}d^2}*<1,0,0>\times<0,0,-1>={\mu_0ev\over 8\pi\sqrt{2}d^2}*<0,1,0>$$

History
The Lorentz Force was first derived by Hendrik Lorentz in 1895. It separated the particle from the fields around it putting it into a matter category. This allowed Lorentz to characterize charged particles with both electric and magnetic forces. Even though the Lorentz Force law is an important building block to electromagnetism it cannot account for all electromagnetic phenomenon. For example, it only considers the field acting on a charged particle, ignoring the field created by the particle itself. Therefore, if we were to analyze the forces on a system with both a magnetic and electric field as well as more than one charged particle we would need more equations to calculate the behavior of the charged particles.

One common use of the Lorentz Force law is in particle accelerators. As the name suggest a particle accelerator is an apparatus used to speed up a particle in order to study the behavior of particles in different scenarios. The most famous particle accelerator is the LHC, or large hadron collider in Europe. The LHC uses electromagnetic forces to speed up particles and collide them analyzing the radiation emitted from each collision. Using electromagnetic forces in a loop means that particle accelerators can speed up particles to incredible speeds nearing the speed of light.

title: Electrodynamics/Lorentz Force


text:
Using POSper/User guide

Sales Workflow
Choose the sales window from the left hand menu options.

Using a Barcode Scanner
Simply scan the barcode. Each item scanned which has an entry in the stock table will add an entry to the sales ticket. When all of the items have been scanned, press the equals '=' sign on the screen and the payment options dialog will appear. The dialog has options for cash, cheque, ticket, card, and free. Choose the relevant option e.g. cash and type in the amount handed over by the customer. POSper will calculate the change. Press the printer button to print the receipt and open the till. Press OK to complete the transaction and return to the sales screen.

Using a Keyboard or the On Screen Keypad
This functions much as the barcode scanner does. Simply type in the barcode number and POSper will lookup the barcode item in the stock table. Then when return on the keyboard or the button with the barcode symbol on the screen is pressed, the item will be added to the sales ticket.

Using the Catalog
POSper maintains a catalog of current stock items, if icons have been added in the stock management screen they are displayed on the bottom right of the sales screen using images loaded into the database at the time of the stock update. If the images are not added to the stock items, the default icon is used.

To use these icons to make a sales transaction, select the category the stock item is in. Type in the number of items to be sold on the on screen keypad, press the multiply button '*' and only then choose the item itself from the catalog window. If only one item is to be sold, don't bother with the number or the multiply button, simply press the item's screen icon. The required number of items will be added to the sales ticket. When all of the items are added, complete the transaction as per the barcode scanner.

Selling General items which don't have barcodes/stock entries
Previously add a "General Item" entry to the stock database with an icon and with £0.00 as the price. When selling such an item, choose the general item from the catalog to add the item to the sales ticket. Then select the "General Item" on the sales ticket and press the pencil button to change the price and number of units being sold.

Reports
If you need reports that are not available in POSper you'll have to make your own. But don't worry. It's not hard. 1) Gather info about your database from POSper's sidebar: System:Configuration>Database. You'll need all the information under the Database heading, including the password. (Btw, you'll have to create another username if you intend to have POSper open at the same time as when you run reports.) 2) What kind of report do you want? The easiest way, believe it or not, is to use the command line. 3) What do you want to be on the report? You can change out any of the SELECT statements below for ones from here. sources: http://sourceforge.net/forum/forum.php?thread_id=1258240&forum_id=434921

Reporting from the Command Line
[note: remember SQL is case sensitive...even in windows...] For postgres installations: To run in Windows, save this as filename.bat and simply double-click it: "c:\Program Files\PostgreSQL\8.1\bin\psql.exe" -U username -d posper -c "SELECT * FROM stockdiary;" To create a file that you can import into (for example) excel, add this to the end: -o filename For MySql installations: mysql -u username -p --execute="SELECT * FROM stockdiary;" posper You'll need to replace "username" with a real username and "posper" with the database name (posper is default). You will be prompted for a password after you hit enter.

Postgres' pgAdmin
Extremely Easy. Once the server connection has been added, go to tools, Query Tool. You simply need to paste the query into the box.

Making Printable Reports with iReports
Download iReports here: http://sourceforge.net/projects/ireport/ (more here)

PHPMyAdmin
(more here)

Notice: message.nosave
After completing a sale you get a message box and this error: (with or without the psql/postgresql words) net.adrianromero.data.loader.DataException: org.postgresql.util.PSQLException: ERROR: duplicate key violates unique constraint "tickets_pkey"

explanation:
There are sales stored in the database with the same ticket ID that the ticket you are trying to save (pressing =).

solution:
PostgreSQL:

If the result of: select max(TICKETID) FROM TICKETS is greater than: SELECT last_value from ticketsnum Do this: SELECT setval('ticketsnum', (select max(TICKETID) FROM TICKETS))

MySQL:

if the result of: SELECT max(TICKETID) FROM TICKETS is greater than: SELECT ID FROM TICKETSNUM Do this: UPDATE TICKETSNUM set ID = (select max(TICKETID) FROM TICKETS)

title: Using POSper/User guide


text:
Using POSper/Developer guide

Contents

 * Stable/Release guides
 * Bleeding edge guides

title: Using POSper/Developer guide


text:
Using POSper/Developer guide/Database-Miscellaneous Details

The two tables that store the sales are: TICKETS (TICKETID, DATENEW, HOST, PERSON, PAYMENT, MONEY INTEGER) PRODUCTSOUT (TICKETID, TICKETLINE, PRODUCT, UNITS, PRICE) One sale is one record in the table TICKETS and one or more records in the table PRODUCTSOUT.


text:
Using POSper/Developer guide/Database Diagram

This diagram describes up to revision 423

To edit this diagram, download the xml description and open it with DBDesigner. http://fabforce.net/dbdesigner4/

Note that some of the table names and fields are slightly wrong due to DBDesigner4 issues, such as refusing the use of certain table/field names (eg user, password, data) and in other cases insisting on an exact field name that it won't let you change (eg for foreign keys).


text:
Bicycles/Equipment and Accessories/Fenders

Fenders, also known as mudguards in some English-speaking countries, are a very useful accessory for riding in wet weather. They block spray from the road, preventing a lot of water and dirt from hitting you and your bicycle. This makes riding more comfortable and reduces the amount of grit that gets in bearings, etc., increasing component lifetime. Large full coverage fenders provide the best performance. Smaller, shorter fenders can be easier to install, but will block less spray from the road. Fenders come in different sizes for different size wheels. On some frames with little clearance between the frame and tires, fitting fenders can be difficult.