Discrete Opamp SMPS design
With the spec you have said (+/-5% regulation and output no greater than 250mA) there are fairly simple design topologies that you can use. Consider the synchronous buck regulator - it drives a top transisitor and a bottom transistor and produces a square wave output whose mark-space ratio largely defines the output voltage: -

Output voltage  = Input voltage x mark-space ratio

This means you find an op-amp circuit that can produce a variable mark-space ratio signal (hell even a 555 can do this) and drive two MOSFETs from it - one a P channel up to the +tive rail and one an N channel down to the negative/ground rail. The hardest bit in this is driving the P channel MOSFET because it requires a level translation but I'm not going to all the work for you!!!

You also need to ensure that the square wave (variable duty cycle) that drives the MOSFETs is adjusted (for each MOSFET) to create a few tens of nano seconds "dead-band" because you don't want the top MOSFET turning on while the N channel is in the process of turning off and vice versa.

This is easily accomplished with a couple of logic gates and a small RC delay.

I've suggested a synchronous buck regulator because there are fewer things it has to deal with when you apply close-loop control via an op-amp. A non-synchronous buck uses a flyback diode and this means that to keep its output voltage constant, a variable load situation calls for cleverer stability in the design. A synchro buck doesn't much need to worry about the load varying because it follows the formula stated above largely.

Where both have issues is with a varying input voltage but this is usually slow moving so any half-decent control op-amp can do the job of keeping it stable. The beauty of a synch buck is that you can use the level of the input voltage to "pre-adjust" the mark-space ratio. Again this means that the op-amp that does the final sanitizing of the output voltage has to do very little and is really very unlikely to go unstable.

Going into instability is a problem that can sometimes be hard to solve so I'm suggesting the synch buck method because, with input voltage compensation (feed-forward it's called) you might get away without any negative feedback (given your moderate specification).