Greetings James and welcome to the forum. We don't do homework for you but we will help you.
The problem sounds simple enough on the surface, when we push a button we want the output to be the opposite of what it was, ie,
if button then output = not output
If only it were that simple. The first difficulty we encounter when trying to solve this problem is that the PLC can complete dozens of scans while a button is being pressed. Even if the operator is really fast, he is slower than the PLC. Even Wyatt Earp doesn't stand a chance. The output will change state ever scan and the final state of the output would be indeterminate. So what we need is a way to program that we don't want to respond to the button state, just the initial pressing of the button.
The DIFU, or differential up, instruction will turn on its addressed bit on the rising edge of the input. The bit remains on for only a single scan of the PLC. This is called a one shot. After that the bit will go false and remain false until the input goes false and then true again. One shots are incredibly useful and you will find that they have thousands of applications. Note that even though Omron calls it differential up, other PLC makers may call the equivalent a one-shot, or a one-shot-rising or a one-shot-falling (DIFD).
If input A has a push button wired to it, this rung will create a one shot pulse at bit B that will be true for one scan only when button A is pressed.
A
--] [----------+----+
|DIFU|
+----+
|B |
+----+
Lest I do all of your homework for you and you learn nothing, I'm not going to complete the ladder, rather, lets express what we want to have happen in words.
If b and not output then turn on the output.
If b and output then turn off the output.
This takes care of describing what happens when a pulse causes the output to change state. The rest of the time, the times when we don't have a pulse (ie, the time between the instant the button is pushed and the instant it is pushed again), we want the output to remain in whatever state it was in. We can express that this way:
If !b and output the leave the output on.
If !b and not output then leave the output off.
The first two statements can be expressed in Boolean math as
C = (B AND NOT C)
The second two statements can be expressed as
C = (NOT B AND C)
Combining the two we get
C = (B AND NOT C) OR (NOT B AND C)
I hope that helps.