Programmēšanas praksē ir gadījumi, kad programmas izpildes gaitā daudzreiz tiek veiktas vienas un tās pašas operācijas, bet to ieejas parametri ir dažādi. Tipveida aprēķinu un dažu specifisku datu apstrādes operāciju izpildi var atvieglot, lietojot programmēšanas valodas Pascal sastāvā ietilpstošās procedūras un funkcijas. Tās ir atsevišķas mazas programmas, kas daudz neatšķiras no pamatprogrammas. Procedūras un funkcijas ir izdevīgi izmantot, jo pamatprogrammas izpildes laikā tās var atkārtoti izmantot mainot ieejas parametrus. Šādas autonomas programmas daļas, kas realizē noteiktus algoritmus un kurām var pieslēgties no dažādām programmas vietām sauc par apakšprogrammām. Var teikt, ka procedūras un funkcijas ir apakšprogrammas, kuras var izsaukt, kad vien tās ir nepieciešamas. Ar to palīdzību tiek realizēts strukturālās programmēšanas princips, ka lielu programmu var sadalīt mazākās, noformējot tās kā funkcijas un procedūras. Procedūras var labot un testēt atsevišķi un neatkarīgi, bet pēc tam izmantot galvenajā programmā vai arī citā procedūrā.
Funkcijas un procedūras veido, lai sasniegtu kādu no mērķiem:
kopējs uzdevums tiek sadalīts mazākos un vienkāršākos uzdevumos;
programmas apjoms tiek samazināts, lietojot tipveida programmēšanas darbības, kuras izveido vienreiz kā atsevišķu procedūru vai funkciju;
programmēšanas moduļu universalizācija – kāda uzdevuma risināšana tiek vispārināta, lai to varētu lietot citu uzdevumu risināšanai.
Būtiska atšķirība starp funkciju un procedūru ir tā, ka funkcijai ir ne tikai nosaukums, bet arī kāda vērtība,
piemēram:
X:=Sin(A);
procedūra tiek izsaukta un lietota vienā vai vairākos uzdevumos, un izpildes rezultāts tālāk tiek nodots galvenejai programmai,
piemēram:
Writeln(‘Tas ir joks’);…