Can I use the same Data Registry for both input and output pins?
Assuming the button is connected between GND and pin 10, without any pull-ups or pull-downs.

void setup () {
    //For the led output I know that I would do this
    DDRB = 0;             // set all pins on port B to INPUT
    DDRB |= _BV(DDB7);   // set PB7 to OUTPUT
    PORTB = 0;            // set all pins on port B to LOW
    PORTB |= _BV(PORTB4); // enable the pull-up resistor on PB4
}

void loop () {
    if( PINB &amp; _BV(PINB4) )
    {
        // if bit PINB4 is set, the button is not pressed
        PORTB &amp;= ~_BV(PORTB7); // turn off led
    }
    else
    {
        PORTB |= _BV(PORTB7); // turn off led
    }
}