Létezik-e tetszőleges feladathoz megoldó program? Legyen
. Definiáljuk
-et a
következőképpen:
és
. Nyílvánvaló,
hogy
,
tehát
megoldása
-nek. Vagyis tetszőleges feladathoz könnyen tudunk megoldó programot csinálni.
Ebből kiindulva azt gondolhatnánk, hogy a programozás nagyon egyszerű feladat, ami
persze nem igaz. A programozás feladata azonban ennél összetettebb. Egy programot
adott programokból, rögzitett szabályok szerint kell összeraknunk, azaz egy
programnyelv eszközeit kell használnunk.
2.7. Definíció (PROGRAMOZáSI FELADAT).
Legyen
. Programozási feladatnak nevezzük az
hármast, ahol
egy feladat;
a megengedett programok halmaza,
;
a megengedett programkonstrukciók halmaza,
egy vagy több
-n értelmezett programhoz rendel egy
-n értelmezett programot.
2.8. Definíció (PROGRAMOZáSI FELADAT MEGOLDáSA).
Az
programozási feladatnak az
program megoldása, ha
a megengedett programokból a megengedett konstrukciókkal előállítható és megoldása
-nek.
A programozási feladat két értelemben is általánosítható: egyrészt kibővíthető a program működésére vonatkozó feltételekkel, ezzel a könyv második felében foglalkozunk , másrészt nem követeljük meg az azonos állapotteret, ehhez általánosítjuk a megoldás fogalmát, illetve bevezetjük a típusspecifikáció, típus, megfelelés és a típuskonstrukciók fogalmát.
Az, hogy milyen programkonstrukciókat engedünk meg, sokmindentől függ, mi a következőkben csak a legegyszerűbbekkel fogunk foglalkozni, mivel ezek is elégségesek egy programozási feladat megoldásához.
Már most felhívjuk a figyelmet arra a fontos szempontra, hogy valójában nagyon gyakran nem azt az utat követjük, hogy meglevő programokból rakjuk össze a megoldó programot, hanem a feladatot bontjuk fel rész feladatokra, úgy, hogy az ezeket megoldó programokból "automatikusan" megkapjuk az eredeti feladatot megoldó programot.