Here is an example of a simple button short code:
<?php
function my_button_shortcode( $atts ) {
    // Parse the input attributes and assgn default values for the 
    // attributes that are not specified on the shortcode
    $a = shortcode_atts( array(
        'id' => '',
        'url' => '#',
        'class' => '',
        'text' => ''
    ), $atts );
    // Open the anchor tag and add role=button for better accessibility
    $btn_html = '<a role="button"';
    // Add the href(link) attribute
    $btn_html .= ' href="' . $a['url'] . '"';
    // Add id attribute to output if specified
    if ( !empty( $a['id'] ) ) {
        $btn_html .= ' id="' . $a['id'] . '"';
    }
    $btn_classes = 'button';
    // Add class attribute to output
    $btn_html .= ' class="button ' . ( !empty(a['class']) ? $a['class'] : '' ) . '"';
    // Close opening anchor tag
    $btn_html .= '>'.
        // Add button text
        $a['text'].
        // Add closing anchor tag
        '</a>'."\n";
    return $btn_html;
}
add_shortcode( 'button', 'my_button_shortcode' );
This shortcode can be used by typing [button url="/my-other-page" id="my-other-page-button" class="dark" text="Click me!"] into the editor and will output the following HTML:
<a role="button" href="/my-other-page" id="my-other-page-button" 
class="button dark">Click me!</a>