Podprogram wbudowany – podprogram standardowy, dostępny w konkretnym języku programowania do realizacji określonej operacji.
Podprogram wbudowany jest podprogramem standardowym, który charakteryzuje się w porównaniu podprogramami bibliotecznymi czy definiowanymi przez programistę, następującymi cechami wyróżniającymi:
Ponadto można zauważyć, że:
Użycie podprogramu wbudowanego w kodzie źródłowym, zwykle nie różni się od użycia pozostałych podprogramów (definiowanych, bibliotecznych), jednak jak zaznaczono wyżej, nie wymagają one najczęściej deklarowania przed ich użyciem. Wynika to z faktu, że z pewnym identyfikatorem reprezentującym dany podprogram, kojarzenie atrybutów, listy parametrów i typu ewentualnego rezultatu (w przypadku podprogramów o charakterze funkcji), zapewnione jest przez samą implementację.
W niektórych językach mogą występować pewne wyjątki od zasady braku deklaracji podprogramu wbudowanego. Np. w języku PL/I podprogramy wbudowane mogą być w ogólności stosowane bez ich deklaracji. Jednak jeżeli podprogram, charakteryzuje się tym, że nie posiada parametrów, a tym samym lista argumentów wywołania jest pusta, to albo musi taki podprogram być wywołany – bez deklaracji – z pustą listą, np. TIME(), albo wymaga deklaracji podprogramu z atrybutem BUTLIN, i wtedy wywołanie może zostać uproszczone do postaci identyfikatora, bez pary nawiasów, np. TIME[2].
Należy zauważyć, że zadeklarowanie innego obiektu, w tym innego podprogramu, o identyfikatorze identycznym jak nazwa podprogramu wbudowanego, jest w wielu językach dopuszczalne, ale skutkuje, bądź:
W pozostałych językach identyfikatory podprogramów wbudowanych są słowami zastrzeżonymi, np. Basic.
Języki programowania, w których występują podprogramy wbudowane to, np.:
Współcześnie definiowane języki lub implementacje starych języków, zwykle odchodzą od rozwiązania polegającego na definiowaniu podprogramów wbudowanych, na rzecz bibliotek standardowych, jako bardziej elastyczna forma tworzenia zestawu podstawowych operacji. Przykładem może być język Pascal[13], który w standardzie definiował podprogramy dotyczące we-wy, lecz późniejsze implementacje, np. Turbo Pascal[14], przeniosły takie podprogramy ze standardu języka do modułów. Tworzenie podprogramów bibliotecznych, zamiast wbudowanych, umożliwia alternatywnych zestawów podprogramów dla danego zagadnienia. W Tubro Pascalu, udostępniono oprócz modułu System zawierającego m.in. standardowe we-wy, także inne moduły, np. Crt, czy biblioteki Turbo Vision, dające bardziej zaawansowane sterowanie ekranem tekstowym[14].
Pewną specyficzną klasę podprogramów wbudowanych stanową również podprogramy wbudowane w aplikacje takie jak systemy obliczeniowe, projektowe itp., np. aplikacje pakietu MS Office, w których pewne wbudowane w te aplikacje podprogramy mogą być używane w języku VBA[15]. Inne przykłady to systemy takie jak MathCad, AutoCAD, dBase[16] itp.