Problēmu risinājumu definēšana datorzinātnēs

Ievads
Datorzinātne ir saistīta ar problēmu risināšanu. Datora izgudrojums ir devis mums vēl nebijušu spēju konceptualizēt un pārvarēt reālas un iedomātas problēmas. Pirms tam jums bija jānomet lidmašīna no debesīm, lai pārbaudītu, vai tā lidos. Vai arī apkopojiet laikapstākļu datus un veiciet prognozes, pamatojoties uz modeļiem. Tagad ir iespējams reālistiski modelēt scenārijus un izveidot risinājumu virtuāli pirms laikapstākļu balona nosūtīšanas vai pat vienu spārnu pievienošanas lidmašīnai. Šis raksts ir par to, kā definēt problēmas paziņojumu risinājumus, formulējot problēmu, formulējot modeli un precīzi noregulējot risinājumu.

Problēmas paziņojums

Pirmais solis problēmas risināšanā ir tās formulēšana. “Man jāsasniedz A ar rīkiem T, ņemot vērā ierobežojumus C.” Lai precizētu labas prakses jēdzienu, iesaistoties risinājuma izstrādē, aplūkosim reālu problēmu. Pieņemsim, ka jums ir jāizstrādā lietotne, kas izklaidēs bērnu, spēlējot minēšanas spēli. No pirmā acu uzmetiena tas šķiet vienkāršs uzdevums: dators + spēle = laimīgs bērns. Bet, pirms sākat, ir vērts noteikt dažas detaļas.

  • Kā bērns mijiedarbosies ar datoru?
  • Kāda līmeņa jautājumi būtu jāuzdod?
  • No kurienes rodas šie jautājumi?
  • Kā tie tiks uzglabāti?
  • Kā tiks pārbaudītas atbildes?
  • Kā programma sāksies un beigsies?

Šajā scenārijā problēmas ir saistītas gan ar aparatūru, gan programmatūru. Pirmkārt, vai bērns ir tādā vecumā, kad drošības pasākumi nav nepieciešami? Citiem vārdiem sakot, ir svarīgi, lai ideālais risinājums tiktu apsvērts, ņemot vērā to, kā tiks izmantots gala lietojums. Uzdāvinot mazulim dārgu klēpjdatoru, tas var būt miera rīts, bet tad tas var izmaksāt mēneša algu! Šī pati domāšana ir jāattiecina uz vizualizēto lietojumprogrammu. Vai jūsu atskaņotājs iesaistīsies jūsu lietojumprogrammā ar spēcīgu interneta signālu? Vai ir citi ierobežojumi, piemēram, izvadei jābūt saderīgai ar dažāda veida mobilajiem tālruņiem? Vai ir kāda noteikta operētājsistēma vai pārlūkprogramma, kas ir jāievēro? Šie un vēl citi jautājumi, kas jums jāapsver, pirms sākat izveidot lietotni.

Formulējiet modeli

Tagad, kad ir priekšstats par dažiem projekta ierobežojumiem, var piedāvāt iespējamos risinājumus. Iedomāsimies, ka bērns ir datoriem draudzīgā vecumā, lietojumprogramma ir jādarbina tikai klēpjdatorā, visa glabāšana tiks veikta lokāli (lai nerastos problēmas ar interneta savienojumu) un ievadi var veikt, izmantojot tastatūru komandrindā. Lieliski, tagad ir iespēja tālāk izpētīt projektu.

Kad ir noteikts projekta apjoms, ir pienācis laiks apsvērt, kas datoram ir jādara. Algoritmu var definēt kā precīzu instrukciju secību problēmas risināšanai. Var būt noderīgi vispirms vispārināt problēmu un pēc tam precīzāk izklāstīt nepieciešamo instrukciju secību pirms implantācijas kodēšanas. Tas ir kā algoritmiska pieeja problēmas risināšanai. Programmētājs bieži vien iegūst intuīciju par to, kādam vajadzētu izskatīties risinājumam, vispirms ieskicētu problēmu, izmantojot pseidokodu (par pseidokodu varat izlasīt vienā no iepriekšējiem maniem rakstiem). Tas var būt uz tekstu balstīts apraksts, kurā sīki aprakstītas prasības.

Ģenerējiet jautājumu;
Saņemiet lietotāja ievadi;
Salīdziniet ievadi ar atbildi;
Atgriezt rezultātu;

Soļu izklāšana sarakstā ir labs pirmais solis.

Tagad var apsvērt, kā ģenerēt vecumam atbilstošu jautājumu. Dinamiska jautājumu ģenerēšana no tiešsaistes enciklopēdijas vai cita tiešsaistes avota var būt laikietilpīga. Varat arī norādīt jau apkopoto jautājumu un atbilžu avotu.

Otrkārt, kā tiek ņemta lietotāja ievade? Ir noskaidrots, ka tastatūra ir dzīvotspējīga, bet cik spējīgs ir bērns rakstīt? Risinājuma salīdzināšana ar tekstu piedāvā savus izaicinājumus. Vai tai ir jābūt tiešai atbilstībai, vai būtu jāņem vērā pareizrakstība, pieturzīmes un lielo burtu lietojums? Potenciāli jautājumi varētu būt ar atbilžu variantiem. Izpratnes palielināšana par visiem šiem apsvērumiem ir mērķis, lai skaidri izklāstītu problēmas izklāstu, nevis meklētu risinājumu.

Risinājuma pielāgošana

Pārdomājot, jūs nosakāt, ka triviāla zināšanu pieeja radīs pārāk daudz šķēršļu, tāpēc projekts tiek definēts kā skaitļu minēšanas spēle. Tas ir piemērots visu vecumu lietotājiem, un nav nepieciešams izmantot ārējos avotus. Un tai vajadzētu būt piemērotai ieviešanai ar lielāko daļu programmēšanas valodu.

Ģenerēt nejaušu skaitli

Saņem lietotāja ievadi un saglabā vērtību

Salīdzini lietotāja ievadi ar atbildi

Atgriez rezultātu

Izklāstot vispārīgās prasības, iespējams aizpildīt sīkākus punktus. Tālāk ir sniegta pseidokoda plūsmas diagramma, kas var sniegt papildu ieskatu par to, kā vislabāk izveidot risinājumu.

Flowchart of pseudocode that gives insight into how to frame the solution

Pārbaudot blokshēmu, tiek identificēti papildu apsvērumi. Vai programma darbosies tikai vienu reizi? Ko var pievienot, lai uzlabotu lietotāja pieredzi? Kļūmes ziņojuma izdrukāšana var nebūt lielisks rezultāts. Tā vietā varētu piedāvāt citu iespēju uzminēt. Papildu apsvērumi varētu būt labs veids, kā nodrošināt uzvednes, kuras varētu izmantot, lai novirzītu lietotāju uz pareizo atbildi. Un jums vajadzētu izlemt, kas notiks, ja lietotājs programmā ievadīs numuru, kas nav numurs.

Flowchart of pseudocode outlining possible outcomes of a right and wrong guess.

Tagad, kad ir izklāstīti dažādi nosacījumi, ir iespējams izvēlēties valodu un ieviest risinājumu. Izmantojot sistemātisku pieeju problēmu risināšanai, jūs identificējāt dažas iespējamās problēmas pirms projekta sākuma un varējāt pievienot dažus kursa labojumus. Izvērtējot risinājumu, projekts tagad var mainīt darbības jomu. Tā vietā, lai izveidotu spēli bērnam, programma var izveidot vidi, lai bērns pats varētu izveidot spēli, izmantojot skaidrus aprakstus kā ceļvedi.

Secinājums

Datori ir lielisks programmu modelēšanas veids un risinājuma ieviešanas līdzeklis. Programmētājs ir atbildīgs par sistemātisku pieeju risinājumu izstrādē. To pašu procedūru, ko izmanto, lai identificētu labu projektu bērnam, var piemērot, veidojot pieteikumu darbam. Šie labie darba ieradumi ir obligāti jāiedibina jau karjeras sākumā un jāsaglabā, attīstoties kodēšanas prasmēm.

Loading

Noderīgs raksts? Dalies ar citiem: