2.6Programozási feladat

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.