Algoritmi și structuri de date Niklaus Wirth. Curs „Algoritmi și structuri de date de căutare” de la ShAD

În procesul de construire a curriculum-ului proiectelor noastre educaționale, am întocmit o listă de cărți de specialitate recomandate pentru studiu la fiecare dintre discipline - în total peste 100 de titluri pentru întreaga perioadă de studiu. Să nu o ascundem și să vă prezentăm această listă, însoțită de scurte comentarii. Este dificil să încadrezi un astfel de volum de informații într-un articol, astfel încât revizuirea literaturii recomandate de Technopark este împărțită în patru părți - în funcție de numărul de semestre, cu o mică adăugire cărți utile, propus de elevi. Link-urile din comentarii către lecturi suplimentare interesante sunt binevenite.

Primul semestru este conceput pentru a „crește nivelul” cunoștințelor studenților. Conține subiecte precum algoritmi și structuri de date, programare C++ și un curs de prezentare generală a tehnologiilor web. Recenzia va începe cu cărți despre aceste subiecte. Majoritatea cărților prezentate sunt „clasice” atemporale, care sunt culegeri de concepte fundamentale.

Tehnologii web

Victor și Natalya au creat și dezvoltat împreună peste 22 de cursuri de formare timp de mulți ani, au predat cursuri la MIREA, MSTU. N.E. Bauman, precum și la Centrul de Tehnologia Informației.

Cartea „Rețele de calculatoare. Principii, tehnologii și protocoale” este recomandat de Ministerul Educației al Federației Ruse. Publicația este potrivită pentru cei care doresc să obțină cunoștințe de bază despre principiile construirii rețelelor de calculatoare, să înțeleagă caracteristicile tradiționale și tehnologii promițătoare locală şi rețele globale,explorați modalități de a crea și de a gestiona rețele mari compozite.

Cricket Lee este absolvent al Universității din California, Berkeley. După absolvire, s-a angajat la Hewlett-Packard, unde a lucrat timp de nouă ani. În 1997, a părăsit HP și a fondat Acme Byte & Wire, o companie de consultanță și instruire DNS. Timp de un an, Cricket a lucrat ca director de produse DNS la Verisign Global Registry Services. În martie 2003, s-a mutat la Infoblox, o companie care creează dispozitive DNS și DCHP, unde a preluat funcția de vicepreședinte.

Paul Albitz a primit o diplomă de licență în științe de la Universitatea din Wisconsin și o diplomă de master de la Universitatea Purdue. A lucrat la Hewlett-Packard la versiunile BIND pentru versiunile de sistem HP-UX 7.0 și 8.0. El a creat instrumentele folosite pentru a gestiona domeniul hp.com.

Cartea „DNS and BIND” este ca o Biblie pentru administratorii de sistem. Materialul este prezentat într-un limbaj simplu, accesibil. Publicația este dedicată BIND 9.3.2 și BIND 8.4.7. BIND 9.3.2 include îmbunătățiri de securitate și suport pentru IPv6, precum și ENUM, SPF și utilizarea numelor de domenii cu alfabet național.

Aici le vei găsi pe toate informatie necesara despre principii DNS funcționează, despre structura spațiului de nume de domeniu, despre instalarea și configurarea serverelor de nume, despre programarea folosind funcțiile bibliotecii client DNS și multe, multe altele.

Carte: „SQL pentru simpli muritori”

Scriitorul, profesorul și consultantul Martin Graber a creat o introducere cuprinzătoare în limbajul de interogare structurat cu decenii în urmă, care face SQL ușor de învățat și astăzi. SQL pentru Mere Mortals este un ghid pentru orice implementare a limbajului de interogare structurat care oferă o referință la SQL standard și, de asemenea, descrie proprietățile generale ale SQL non-standard.

Cartea va ajuta la îmbunătățirea eficienței lucrului cu tabele de date compuse prin utilizarea tehnicilor avansate pentru interogări simultane la mai multe tabele, formând subinterogări și interogări complexe. Cu această publicație puteți dobândi abilități practice în gestionarea bazelor de date relaționale.

Carte: „Bazele baze de date relaționale date"
De: Jennifer Widom, Jeffrey D. Ullman

Jennifer Widom este profesor asistent la departamentele de informatică și inginerie electrică de la Universitatea Stanford. participant activ cercetare în domeniul bazelor de date eterogene și semistructurate (DB-uri), metodelor de stocare a datelor și sisteme active DB.

Jeffrey D. Ullman este profesor la Universitatea Stanford și unul dintre fondatorii teoriei bazelor de date. El a acționat ca supraveghetor științific al unei întregi generații de studenți absolvenți care au devenit ulterior cercetători de top în teoria bazelor de date. Manualele sale despre compilatoare, teoria computațională și baze de date sunt considerate standarde educaționale.

Cartea „Fundamentals of Relational Databases” va fi utilă oricui studiază bazele de date. Acesta acoperă standardele SQL2, SQL3, ODMG, ODL/OQL, metoda tradițională de proiectare a bazelor de date și, de asemenea, analizează multe aspecte ale programării SQL.

Problemele de vizualizări ale utilizatorilor, constrângeri de integritate, declanșatoare, tranzacții, securitatea informatieiși recursiunea în SQL3.

Carte: „jQuery. Ghid detaliatîn JavaScript avansat"
Autori: Be'er Bibo, Yehuda Katz

Bear Bibo este un dezvoltator web cu peste 30 de ani de experiență în programare. Unul dintre autorii cărților „jQuery in Action”, „Ajax in Practice”, „Ajax: Prototype and Scriptaculous Libraries in Action”.

Yehuda Katz a creat site-uri web pentru New York Times, Allure Magazine, Architectural Digest și Yoga Journal. Participant echipa principală Proiectul jQuery, a participat la dezvoltarea Merb (o alternativă la Ruby on Rails).

Ediția „jQuery. Ghidul definitiv pentru JavaScript avansat" - foarte detaliat ghid de referință pe platforma de dezvoltare a aplicațiilor web, care descrie cum să accesați cu crawlere documentele HTML, să gestionați evenimente, să adăugați suport Tehnologii Ajaxîn paginile dvs. web, redați animații, interacționați cu alte instrumente, platforme și metode pentru crearea modulelor de extensie jQuery. Cartea este destinată celor care sunt deja familiarizați cu JavaScript și Ajax.

Carte: „Învățare Python”

Dacă știi ceva despre Python, atunci ești familiarizat cu Mark Lutz. Este unul dintre cei mai mari experți în Python din lume, autor al unora dintre cele mai vechi și mai populare publicații. Lutz folosește și promovează Python de mai bine de 20 de ani, petrecându-și mult timp predând și scriind cărți despre limbă.

Cea de-a patra ediție a „Learning Python” conține principalele tipuri de obiecte din limbaj, ordinea creării și lucrului cu ele și include, de asemenea, metode de lucru cu module și instrumente suplimentare orientate pe obiecte - clase. Sunt oferite descrieri ale modelelor și instrucțiunilor de tratare a excepțiilor, precum și o prezentare generală a instrumentelor de dezvoltare.

Materiale suplimentare:

  • ediția a 3-a" Învață Python The Hard Way” conţine cursuri bune Pentru studiu inițial Python și consolidarea materialului învățat: http://learnpythonthehardway.org/.
  • Ești nou în Django sau programare? Tot ce trebuie să știți despre Django: http://www.djbook.ru/rel1.7/
  • Un manual despre crearea de site-uri web pentru începători, care conține materiale simple și ușor de învățat: www.htmlbook.ru.

Algoritmi și structuri de date

Carte: "Informatică. Introducere de bază. Partea I"

Volumul I al lucrării în patru volume a remarcabilului om de știință german Manfred Boy, câștigător al Premiului Leibniz în informatică, este dedicat Noțiuni de bază informații și diverse forme de prelucrare a acestora. Manfred oferă o explicație detaliată a algoritmilor (inclusiv clasificarea, descrierea și execuția acestora), tehnicile de programare și elementele limbajului orientat către mașină. Cartea conține explicații cuprinzătoare asupra problemelor de prezentare și prelucrare a informațiilor.

Carte: „Algoritmi algebrici. Cu exerciții și soluții”
Autori: Claude Kitte, Patrice Naudin

Doi matematicieni francezi, într-o carte plină de formule, răspund la întrebarea „ce poate fi calculat și cum?” Autorii menționează „Arta programării” (despre care vom vorbi cu siguranță mai târziu) ca principală sursă de inspirație. Cu siguranță există asemănări între ei.
Cartea poate fi recomandată oricui folosește și studiază algebra computerizată. Este dificil să găsești cea mai cuprinzătoare publicație despre calculul obiectelor matematice.

Carte: „Algoritmi și structuri de date”

De obicei, ei spun despre astfel de oameni: nu au nevoie de prezentare. Cu toate acestea, vom remarca pe scurt că Niklaus Wirth este un om de știință, inginer, laureat al Premiului Turing, unul dintre cei mai cunoscuți teoreticieni ai limbajelor de programare din lume, creator al limbajelor Pascal, Modula-2, Oberon.

Cărțile lui Wirth programare structuratăîn învăţământ sunt considerate un standard obligatoriu.

„Algoritmi și structuri de date” este un manual de desktop pentru programatori care oferă cunoștințele minime necesare despre algoritmi. Cartea detaliază subiecte algoritmice tradiționale, cum ar fi sortarea, căutarea, recursiunea, structuri dinamice date.

Carte: „Structuri de date și algoritmi”
De Alfred W. Aho, John E. Hopcroft, Jeffrey D. Ullman

Alfred Aho este un informatician canadian, unul dintre creatorii limbajului de scripting C-like AWK, autor și coautor a numeroase publicații și cărți despre diverse aspecte ale informaticii.

John Hopcroft - om de știință american, câștigător al Premiului Turing, cercetător aspecte teoretice informatică, în special analiza algoritmilor și teoria grafurilor.

Jeffrey Ullman este un cunoscut cercetător în domeniul tehnologiei informației, unul dintre autorii manualelor „clasice” despre compilatoare, teoria calculului și baze de date.

După cum vă puteți imagina, un astfel de trio de autori ar putea prezenta doar un tutorial fundamental care acoperă elementele de bază ale metodologiei moderne de dezvoltare a software-ului. Cartea nu va necesita cunoștințe profunde din partea dvs. - este suficient să înțelegeți cel puțin un limbaj de programare de nivel înalt (de exemplu, Pascal).

Cărți:
„Algoritmi fundamentali în C. Părțile 1-5. Analiză. Structuri de date. Triere. Căutare. Algoritmi pe grafice"
„Algoritmi în C++”

Un studiu aprofundat al conceptelor fundamentale ale algoritmilor a fost realizat de Robert Sedgwick, profesor la Universitatea Princeton, autorul a numeroase articole științifice și a unei serii de manuale despre algoritmi. „Algoritmi fundamentali în C” discută în detaliu căutarea în digrafe, non-digrafe și rețele, construirea arborilor de acoperire minimă și a celor mai scurte căi și calcularea fluxurilor în rețele cu diferite caracteristici. Se acordă multă atenție caracteristicilor de performanță ale algoritmilor, precum și derivării lor matematice.

„Algoritmi în C++” este atât o continuare, cât și o regândire a descrierii algoritmilor și structurilor de date, de data aceasta realizată în C++, deși informațiile furnizate sunt fundamentale și aplicabile programării în orice limbaj. În carte au fost adăugați algoritmi noi, ilustrații, comentarii etc.

Carte: „Structuri de date și algoritmi în Java”

Robert Laforet scrie cărți de programare de 30 de ani. Datorită cărților sale, nenumărați programatori au stăpânit tehnologiile de programare orientate pe obiecte.
Cartea Data Structures and Algorithms in Java acoperă elementele de bază ale utilizării algoritmilor, cu exemple scrise în Java, deși stăpânirea oricărui limbaj de programare este suficientă pentru a învăța. Cartea acoperă în detaliu subiecte precum sortarea, tipurile de date abstracte, listele legate, recursiunea, structurile de date arborescente, hashingul, piramidele și graficele.

Carte: „Analiza discretă”

Joseph Romanovsky este un reprezentant rar al autorilor autohtoni în selecția noastră. Profesor al Departamentului de Cercetare Operațională de la Universitatea de Stat din Sankt Petersburg, autor al unui număr de algoritmi eficienți pentru rezolvarea problemelor de optimizare, inclusiv implementarea computerizată a acestor algoritmi, a scris cursuri populare de prelegeri despre programare optimași programarea computerizată a algoritmilor de optimizare.

Manualul „Analiza discretă” a fost scris pe baza materialelor dintr-un curs de curs susținut de Joseph Romanovsky. Se concentrează pe legătura dintre conceptele de analiză discretă care apar în diferite ramuri ale matematicii și informatica modernă.

Carte: „Matematică concretă. Fundația de Informatică"
Autori: Ronald Graham, Donald Erwin Knuth, Oren Patashnik

Aproape un „document catehetic” despre algoritmi, având în vedere fundamente matematice analiza algoritmilor. Titlul „Matematică concretă” conține un joc de cuvinte: CONTINU și DISCRET. Cartea prezintă material despre operarea cu obiecte discrete, care este similar cu metodele tradiționale de analiză matematică.

Cartea conține peste 500 de exerciții diferite niveluri complexități, prezentate într-un stil informal și însoțite de „note marginale” de la editorii originali ai cărții, studenții de la Stanford. Îl recomandăm tuturor celor care studiază și aplică matematică discretă și informatică.

Carte: „Algoritmi. Construcție și analiză"
Autori: Thomas H. Corman, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein

Clifford Stein este profesor și specialist în informatică.

Ronald Lynn Rivest – expert în criptografie, autor algoritmi simetrici criptare RC2, RC4, RC, unul dintre autorii algoritmului RSA.

Charles Eric Leiserson este profesor la Massachusetts Institute of Technology, specializat în teoria calculului paralel, distribuit și aplicarea sa practică.

Thomas Corman este un profesor care predă la Dartmouth College și, de asemenea, servește ca director al instituției de redactare a programelor.

Cartea „Algoritmi. Construcție și Analiză” este o lucrare fundamentală în domeniul algoritmilor. Folosește exemple de pseudocod care pot fi înțelese de oricine are chiar și cele mai mici cunoștințe de programare și explică principiile de funcționare fără o rigoare matematică excesivă și necesită doar cunoștințe de bază.

Prima ediție a acestei cărți a devenit un ghid de referință standard pentru profesioniști și un manual pentru universități. Edițiile ulterioare au primit numeroase completări și multe exerciții și sarcini noi. A treia ediție conține arbori van Emde Boas și algoritmi multi-threaded.

Carte: „Arta de a programa. Volumul 1-4"

Profesorul Knuth este unul dintre cei mai respectați și citați autori de cărți de programare din lume. De asemenea, a scris o serie de cărți de renume mondial despre algoritmi și metode de bază ale matematicii computaționale. Donald Knuth a primit numeroase premii și premii, iar din 1996 a fost acordat un premiu numit după el pentru contribuția sa specială la dezvoltarea fundamentelor informaticii.

„Arta programarii” este o monografie fundamentală dedicată celor mai importanți algoritmi utilizați în informatică. Cartea este recunoscută drept una dintre cele mai bune 12 monografii de fizică și matematică ale secolului.

Principala caracteristică a monografiei, realizată de-a lungul a 40 de ani, este calitatea excepțională a materialului prezentat, precum și profunzimea analizei problemelor luate în considerare.

Carte: „Combinatorică analitică”
Autori: Philippe Flajolet, Robert Sedgwick

Philippe Flajolet este un om de știință francez care a propus teoria combinatoriei analitice. Cele mai multe dintre lucrările sale de cercetare sunt dedicate metode generale analiza complexității computaționale a algoritmilor.

Combinatoria analitică este una dintre cele mai recente abordări ale problemei de a face predicții cantitative precise despre proprietățile structurilor combinatorii mari. Autorii (inclusiv deja familiarul Robert Sedgwick) oferă întregul domeniu de aplicare al matematicii de bază necesare și, de asemenea, iau în considerare cu atenție atât aplicațiile clasice, cât și cele moderne ale teoriei combinatoriei analitice. Cartea conține exemple ilustrative de aplicare, exerciții și note.

Carte: „Combinatorie pentru programatori”

Witold Lipski este un specialist polonez în programare, profesor la Universitatea din Paris și titular al unui doctorat. Cartea „Combinatorică pentru programatori” acoperă o gamă largă de algoritmi combinatori și teoretici grafici. Descrierea algoritmilor este dată în Pascal. Stilul de prezentare este de referință: enunțul problemei, algoritm de rezolvare, comentarii, complexitate, exemple.

Carte: „Șiruri, arbori și secvențe în algoritmi. Informatica si biologie computationala"

Profesorul Dan Gusfield predă la Universitatea Davis, California. Interesele sale includ cercetarea eficienței algoritmilor legate de optimizarea combinatorie. Gusfield este interesat în special de problemele combinatorii care apar în biologia moleculară computațională (în special bioinformatica și genomica).

Cartea „Șiruri, arbori și secvențe în algoritmi. Informatică și biologie computațională” va fi de interes nu numai pentru cei care sunt interesați de biologie, ci și pentru toți cei care doresc să se familiarizeze cu algoritmi moderni prelucrarea informatiilor practice.

Carte: „Metode și algoritmi pentru calcule pe șiruri”

Profesorul William F. (Bill) a sfătuit cu privire la utilizarea tehnologia calculatoarelorîn afaceri și organizații guvernamentale. Domeniul său principal de cercetare sunt algoritmii combinatori.

Cartea Methods and Algorithms for String Computation descrie algoritmi și metode fundamentale care calculează eficient modele în secvențe de șiruri. Acești algoritmi și metode sunt utilizați în domenii precum compresia datelor, criptografia, recunoașterea vorbirii, viziunea computerizată, geometria computațională, biologia moleculară etc. Cartea conține peste 500 de exerciții care explică și extind materialul.

Carte: „Trucuri algoritmice pentru programatori”

Henry Warren a lucrat la IBM timp de peste 40 de ani. A lucrat la o serie de sisteme militare de comandă și control și la proiectul limbajului de programare SETL. Din 1973, Warren a lucrat la compilatoare și arhitectură computer la IBM Research.

Cartea „Trucuri algoritmice pentru programatori” conține multe trucuri de aritmetică pe computer care vor fi extrem de utile dezvoltatorilor de biblioteci și compilatoare, precum și oricui dorește să creeze rapid cod eficient. Cartea prezintă exemple de lucru cu biți, octeți individuali și de calculare a diferitelor funcții întregi.

Carte: „Matematică discretă pentru programatori”

Fedor Aleksandrovich Novikov - Profesor asociat al Departamentului de Matematică Aplicată a Universității de Stat din Sankt Petersburg Universitatea Politehnicăși Departamentul de Tehnologii de Programare din Sankt Petersburg universitate de stat tehnologia informației, mecanică și optică. Manualul „Matematică discretă pentru programatori” conturează principalele secțiuni ale matematicii discrete și descrie cei mai importanți algoritmi privind structurile de date discrete.

Cartea este aprobată de Ministerul Educației și Științei Federația Rusă ca ajutor didactic pentru studenții instituțiilor de învățământ superior care studiază în domeniul formării specialiștilor atestați „Informatică și Informatică”.

Carte: „Matematică discretă pentru inginer”

Oleg Petrovici Kuznetsov - șef al sectorului Institutului de Probleme de Management al Academiei Ruse de Științe, Doctor în Științe Tehnice. Cartea „Matematică discretă pentru inginer” prezintă conceptele de bază ale teoriei mulțimilor, algebră generală, logica, teoria grafurilor, teoria algoritmilor si sistemelor formale, teoria automatelor. Publicația este de interes pentru inginerii specializați în domeniul controlului și proiectării automate, tehnologia calculatoarelor, tehnologia informației și transferul de informații.

Programare C++ avansată

Carte: „Tehnici de proiectare orientate pe obiecte. Modele de design"
Autori: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Erich Gamma este un programator din Elveția, un dezvoltator de top al cadrului pentru efectuarea de teste unitare în Java JUnit și mediul de dezvoltare software integrat multiplatformă (Eclipse). Am lucrat la IBM la un proiect de platformă scalabilă cu sursa deschisa de la pentru dezvoltare software (Jazz).

Programatorul Richard Helm a lucrat și la IBM, în centrul de cercetare al companiei, dezvoltând noi tehnologii.

John Vlissides a lucrat la Universitatea Stanford și, din 1991, la IBM Research. Este autorul mai multor cărți, multe articole și rapoarte despre tehnologii orientate pe obiecte, modele de design și modelare software.

Autorii, cunoscuți ca „gașca celor patru”, au oferit lumii o soluție elegantă la problemele comune întâlnite în OOP. Cartea constă din două părți: prima vorbește despre posibilitățile și dezavantajele OOP, a doua parte descrie 23 de modele clasice de design. Exemplele date în carte sunt scrise în limbajele de programare C++ și Smalltalk.

„The Gang” subliniază principiile utilizării modelelor de design și oferă un catalog al acestora. Cartea demonstrează rolul tiparelor în crearea arhitecturii sisteme complexeși arată cum, folosind modelele conținute în cartea de referință, designerul își poate dezvolta propriile aplicații.

Carte: „Refactorizare folosind modele”

Joshua Kerievsky a fondat compania Industrial Logic, dar suntem mai cunoscuți ca autorul unei cărți care acumulează experiența unui dezvoltator profesionist în utilizarea modelelor de design.

Kerievsky învață să evite atât proiectarea insuficientă, cât și cea excesivă, să depună eforturi pentru o analiză constantă a performanței codului, simplificând înțelegerea și întreținerea acestuia. Pe baza experienței sale și a altora, autorul examinează în detaliu diferitele semne de cod care necesită refactorizare, descrie ce fel de refactorizare cel mai bun mod potrivit pentru o anumită situație și descrie mecanica acesteia. Cartea prezintă 27 de refactorizări complexe.

Kiriewski se referă la cartea lui Fowler Refactoring. Îmbunătățirea codului existent”, prin urmare, pentru o înțelegere mai profundă a modului de introducere a modelelor în arhitectura unui program, se recomandă să citiți după „Refactorizarea folosind modele”. Nu aveți nevoie de cunoștințe suplimentare și, deși totul este în Java, acestea nu folosesc caracteristicile complexe ale limbajului. Cartea va fi utilă atât pentru programatori de nivel mediu, cât și pentru profesioniști.

Carte: „Limbajul de programare C++. Curs introductiv"
De Stanley B. Lippman, Josie Lajoie, Barbara Mu

Stanley B. Lippman a lucrat cu Björn Stroustrup la corporația de cercetare Bell Lab în primele etape ale dezvoltării C++. În 2001, Stanley Lippman a devenit arhitectul șef al Visual C++ la Microsoft. A mai lucrat pentru Emergent Game Technologies, NASA, Pixar și 2kQubits.

Josie Lajoie a contribuit la munca de compilare C++ la IBM Canada și, de asemenea, a prezidat Grupul de lucru ANSI/ISO Core C++ Language.

Barbara Moo are aproape 30 de ani de experiență în programare. Ea a lucrat pentru AT&T timp de 15 ani, a colaborat cu Björn Stroustrup și a condus echipa de dezvoltare C++ timp de câțiva ani.

Cartea acestor experți nu se limitează în mod clar la subtitlul sec „curs introductiv”, ci este un ghid cuprinzător pentru învățarea limbii. Cartea acoperă atât elementele de bază ale structurii programului C++, inclusiv utilizarea comenzilor preprocesorului și a fișierelor de antet, cât și structuri mai complexe (excepții, clase, șabloane de funcție și de clasă, supraîncărcarea operatorilor, moștenirea multiplă etc.).

Pe măsură ce C++ evoluează, cartea este actualizată în consecință. Pe lângă conceptele fundamentale, noua versiune a cărții oferă cele mai eficiente tehnici care permit cititorului să creeze programe proprii chiar înainte de familiarizarea în profunzime cu trăsăturile limbii.

Carte: „STL. Ghid de buzunar»

Ray Lishner este cunoscut în principal în comunitatea Delphi ca autor al cărților „Secretele lui Delphi 2”, „Hidden Paths of Delphi 3” și al multor articole pentru reviste precum „Delphi Informant”, „Dr. Dobb's Journal". Dar vă recomandăm cealaltă carte - „STL Pocket Reference". Aceasta este într-adevăr o carte de referință pentru un subset al bibliotecii standard C++. Cartea descrie biblioteca STL în forma sa modernă - algoritmi, iteratoare și containere. biblioteca standard C++, precum și un număr de Alte elemente Oferă un scurt rezumat al funcțiilor, claselor și șabloanelor care alcătuiesc STL.

Carte: „Cod perfect. Master-class"

Steve McConnell este un programator, editor și expert în dezvoltare de software. El a câștigat de două ori Jolt Excellence Award pentru cea mai bună carte de dezvoltare software a anului. În ceea ce privește influența sa asupra industriei, el a fost comparat cu Bill Gates și Linus Torvalds.

Cea mai faimoasă lucrare a lui McConnell este Code Perfect. Conținând sute de exemple care ilustrează adevărata artă a programarii, această carte promovează principii solide de dezvoltare a software-ului. Autorul a sintetizat experiența în dezvoltarea de software comercial și cercetarea academică într-o metodologie pentru crearea unui cod perfect.

Code Perfect este o carte pe care orice programator ar trebui să o citească. Și este recomandabil să faceți acest lucru de mai multe ori.

Carte: „C++ și STL. Ghid de ajutor"
Autori: David R. Musser, Gilmer J. Durge, Atul Saini

David R. Musser este un profesor care a lucrat cu STL încă de la început: prima implementare a bibliotecii a fost dezvoltată cu participarea sa directă. De asemenea, a lucrat pentru ca STL să fie inclus în standardul ANSI/ISO C++.

Gilmer J. Durge, președintele Toltec Software Services Inc., are o experiență vastă în dezvoltarea de aplicații în C++, inclusiv șapte ani la General Electric Corporate R&D.

Atul Saini este președintele Fiorano Software Inc., un producător de software de mesagerie de mare viteză dezvoltat în C++. El a fost primul care a văzut potențialul comercial al STL și a oferit companiei sale să vândă biblioteca chiar înainte de a deveni parte a standardului C++.

Cartea „C++ și STL. Ghid de ajutor" include un scurt tutorial, descriere detaliata fiecare element al bibliotecii și un număr mare de exemple. Cartea conține o descriere cuprinzătoare a iteratorilor, algoritmilor generici, containerelor, obiectelor funcționale etc. De asemenea, explică cum să integrezi STL cu alte tehnici de programare orientată pe obiecte.

Cărți:
"Soluţie sarcini complexeîn C++"
„Noi probleme provocatoare în C++”
„Standarde de programare în C+”

Herb Sutter este un expert recunoscut în C++. A început să lucreze la Microsoft ca evanghelist al platformei Visual C++ .NET și a progresat la poziția de arhitect software C++/CLI. Timp de 10 ani a fost organizatorul și secretarul comitetului de standardizare ISO C++. Publicat regulat de mulți ani sarcini non-trivialeîn C++ într-o serie numită Guru al săptămânii. Ulterior, Sutter a publicat versiuni extinse ale multor probleme în primele sale două cărți, Solving Hard Problems in C++.

Vă recomandăm trei dintre cărțile sale, destinate cititorilor cu o cunoaștere destul de profundă a limbii. Metodele moderne de proiectare și programare în C++ sunt discutate sub formă de probleme și soluțiile acestora. Cărțile concentrează mulți ani de experiență în dezvoltarea C++: sunt luate în considerare metode, tehnici și modalități specifice de programare, se acordă o atenție deosebită problemei designului, care ar trebui să asigure fiabilitatea, securitatea, performanța și mentenabilitatea maximă a software-ului creat.

Carte: „Algoritmi în C++”

Despre Robert Sedgwick am vorbit deja mai sus. Algoritmii în C++ acoperă algoritmi fundamentali, structurile de date, sortarea și căutarea și algoritmii grafici care joacă un rol din ce în ce mai important într-o varietate de aplicații, cum ar fi conectivitatea la rețea, proiectarea circuitelor, planificarea, procesarea tranzacțiilor și furnizarea de resurse.

Cartea descrie în detaliu matrice, liste legate, șiruri de caractere, arbori și alte structuri de date de bază. Atenția cititorului este concentrată pe tipurile de date abstracte (ADT), programarea modulară, clasele OOP și C++ sunt furnizate peste 100 de algoritmi pentru sortare, selecție, implementări de ADT-uri de cozi de prioritate și implementări de ADT-uri de tabel de simboluri (pentru căutare).

Cărți:
„Limbajul de programare C++”
„Programare. Principii și practică de utilizare a C++"

Este imposibil să ne imaginăm o selecție de cărți despre C++ fără manuale ale autorului limbajului. Björn Stroustrup este o adevărată legendă, iar Limbajul de programare C++ este una dintre cărțile cele mai citite în domeniul său. Cărțile lui Stroustrup se remarcă prin măiestrie neîntrecută în domeniu documentatie tehnica. Acesta este un canon necondiționat cu privire la capacitățile limbii.

Prima ediție a cărții „Limbajul de programare C++” a fost publicată în urmă cu 29 de ani. A doua a fost publicată în 1991, a treia în 1997. O versiune îmbunătățită a celei de-a treia ediții, lansată cu copertă cartonată, a fost numită „Ediție specială” și diferă de numerele anterioare ale celei de-a treia ediții în două aplicații suplimentare(„Localizarea” și „Siguranța excepțiilor și biblioteca standard”), aproximativ 1 mie de corecții și clarificări, precum și un index alfabetic extins. A patra ediție a cărții, care include C++11, a fost lansată în 2013.

Dacă programați în C++, atunci trebuie să citiți această carte chiar acum.

Carte: „Refactorizarea. Îmbunătățirea codului existent”
Autori: Martin Fowler, Kent Beck, John Brant, William Updike, Don Roberts

Programatorul Kent Beck a creat metodologii de dezvoltare software, cum ar fi programarea extremă și dezvoltarea bazată pe teste. El este unul dintre pionierii în introducerea modelelor de proiectare software, crearea unei metodologii de dezvoltare bazată pe teste și uz comercial Limbă de vorbă mică. Împreună cu Erich, Gamma a creat cadrul de testare JUnit.

William Updike și-a scris teza de doctorat despre refactorizarea cadrelor orientate pe obiect (la Universitatea din Illinois), care a servit drept bază pentru prima publicație majoră pe această temă.

Cartea „Refactoring. Îmbunătățirea codului existent” vorbește despre procesul de refactorizare, descrie principiile studiului aprofundat al codului în vederea îmbunătățirii acestuia. Cartea include peste 70 de tehnici de refactorizare, fiecare dintre acestea descriind motivația și tehnica pentru transformarea codului testat pe teren cu exemple în Java.

„Trebuie citit” pentru toți dezvoltatorii.

Carte: „Referința completă pentru C++”

Shildt este un scriitor, om de știință și programator care a făcut parte din comitetul ANSI care a adoptat standardele C și comitetul ISO care a adoptat standardele C++. Autor al interpretului Little C - un exemplu de analizator recursiv de sus în jos.

Referința completă C++ conține toate cuvintele cheie, funcțiile, clasele și proprietățile limbajului care respectă standardul ANSI/ISO. Acesta acoperă toate aspectele limbajului, inclusiv baza sa - limbajul C.

Cartea dă informatie scurta despre microcalculatoarele moderne interne și străine pentru uz individual. Principalele versiuni ale BASIC, cel mai comun limbaj de programare pentru computere personale (PC), micro și multi-calculatoare domestice (Elektroiika-60, Elektronika-, DZ-28, Iskra-226, sisteme de calcul interactive DVK-1, DVK- 2 etc.) sunt descrise. Sunt prezentate elementele de bază ale programării în BASIC. Atenția principală este acordată suportului general matematic, algoritmic și software pentru calculele PC. Cartea de referință include o bibliotecă extinsă programe de aplicațieîn BASIC (mai mult de 300 de programe), oferind implementarea metodelor numerice de bază, calculul majorității funcțiilor speciale și soluționarea unui număr de probleme practice în diverse zone stiinta si Tehnologie.

Pentru ingineri, lucrători științifici și tehnici și studenți.

Dyakonov V.P. Manual de algoritmi și programe în BASIC pentru calculatoare personale: Director. - Moscova. Editura Nauka. Ch. ed. fizica si matematica lit., 1989.- 240 p. - ISBN 5-02-014530-0.

Prefaţă
Cum se utilizează directorul
Capitolul 1. Principalele caracteristici și capacități ale computerelor personale
§ 1.1. Tipuri moderne calculatoarele personale și capacitățile acestora
§ 1.2. Calculatoare personale de buzunar
§ 1.3. Calculatoare personale din clasa de mijloc (calculatoare de acasă)
§ 1.4. Calculatoare profesionaleși microsisteme de calcul personal
§ 1.5. Echipamente periferice ale calculatoarelor personale

Capitolul 2. BASIC este principalul limbaj de programare pentru computerele personale
§ 2.1. Alfabetul și operatorii de bază ai limbajului BASIC
§ 2.2. Modificări de bază ale limbajului
§ 2.3. Operații aritmetice și algebrice, lucrând în modul calculator
§ 2.4. Programare elementară în BASIC
§ 2.5. Întrebări speciale de programare în limbajul BASIC
§ 2.6. Traducerea programelor dintr-o versiune a limbajului BASIC în alta

Capitolul 3. Algoritmi si programe calcule elementare
§ 3.1. Operatii cu numere reale
§ 3.2. Operații și funcții cu numere și variabile complexe
§ 3.3. Calculul polinoamelor de putere și al funcțiilor raționale fracționale
§ 3.4. Calculul polinoamelor ortogonale
§ 3.5. Operații cu matrice
§ 3.6. Calcul factoriali și combinatorice
§ 3.7. Transformări de coordonate și analiză vectorială

Capitolul 4. Algoritmi si programe pentru implementarea metodelor numerice de baza
§ 4.1. Soluție de sisteme ecuatii lineare
§ 4.2. Interpolare și extrapolare
§ 4.3. Rezolvarea ecuațiilor neliniare și transcendentale
§ 4.4. Rezolvarea sistemelor de ecuații neliniare
§ 4.5. Soluţie ecuații algebrice cu coeficienți reali și complexi
§ 4.6. Căutați extreme ale funcțiilor uneia și mai multor variabile
§ 4.7. Diferențierea numerică și calculul coeficienților de sensibilitate
§ 4.8. Calculul integralelor definite
§ 4.9. Calculul integralelor definite ale unei forme speciale
§ 4.10. Rezolvarea sistemelor de ecuații diferențiale
§ 4.11. Sinteza armonică
§ 4.12. Calculul valorilor proprii și al vectorilor matrici

Capitolul 5. Analiză spectrală, statistică, de corelație și regresie
§ 5.1. Analiza spectrală bazată pe transformată Fourier discretă
§ 5.2. Tipuri speciale de analiză spectrală
§ 5.3. analize statisticeși pregătirea histogramelor
§ 5.4. Implementarea metodei Monte Carlo
§ 5.5. Analiza corelației
§ 5.6. Analiza regresiei(aproximarea funcțiilor folosind metoda celor mai mici pătrate)
§ 5.7. Netezirea datelor experimentale

Capitolul 6. Calcularea funcțiilor speciale
§ 6.1. Metode de calcul al funcțiilor speciale
§ 6.2. Integral funcții exponențiale
§ 6.3. Sinus și cosinus integral
§ 6.4. Funcții gamma (inclusiv incomplete)
§ 6.5. Funcții Bessel (inclusiv cele modificate)
§ 6.6. Funcții aerisite
§ 6.7. Integrale Fresnel
§ 6.8. Integrale eliptice
§ 6.9. Funcțiile Struve, Anger și Weber
§ 6.10. Funcții hipergeometrice
§ 6.11. Dilogaritm
§ 6.12. Funcții Kelvin
§ 6.13. Funcțiile Debye și Sievert
§ 6.14. Integrale de probabilitate și funcții conexe
§ 6.15. Câteva funcții statistice

Capitolul 7. Programe de aplicare pentru calcule tehnice și economice
§ 7.1. Calcule electrice tipice
§ 7.2. Calculul elementelor inductive
§ 7.3. Calculul elementelor capacitive și condensatoarelor
§ 7.4. Calculul liniilor de transport și a întârzierilor
§ 7.5. Calculul amplificatorului
§ 7.6. Calculul filtrelor active
§ 7.7. Calculul dispozitivelor electronice neliniare și cheie
§ 7.8. Calcule în mecanică și termodinamică
§ 7.9. Calcule financiare si economice

Anexa 1. Pregătirea pentru funcționarea sistemului de pregătire a programelor bazat pe microcalculatorul Elektronika-DZ-28
Anexa 2.

Numerele de eroare și conținutul acestora pentru sistemele de pregătire a programelor bazate pe microcomputerul Elektronika-DZ-28
Anexa 3. Pregătirea PC-ului FX-702P pentru funcționare
Anexa 4. Numerele de eroare și conținutul acestora pentru PC-ul FX-702P
Anexa 5. Implementare software unele metode numerice de aplicare specială
§ P5.1. Construirea unui polinom din rădăcinile sale reale
§ P5.2. Inversarea matricei, calculul determinantului și soluția sistemelor de ecuații liniare cu diferiți vectori de termeni liberi
§ P5.3. Rezolvarea unui sistem de ecuații liniare folosind metoda reflexiei
§ P5.4. Rezolvarea unui sistem de ecuații liniare folosind metoda iterațiilor simple
§ P5.5. Rezolvarea unui sistem de ecuații liniare folosind metoda Seidel
§ P5.6. Rezolvarea unui sistem de ecuații liniare cu o matrice supradeterminată
§ P5.7. Calculul aproximativ al soluției normale a unui sistem de ecuații liniare cu o matrice singulară
§ P5.8. Rezolvarea unui sistem de ecuații neliniare folosind metoda iterațiilor simple
§ P5.9. Calculul spectrului de răspuns al unui sistem neliniar cu o caracteristică de transfer specificată analitic la influența armonică
§ P5.10. Regresie pentru 16 tipuri de dependențe pereche y (x)
§ P5.11. Aproximare spline, interpolare și extrapolare
§ P5.12. Pachet software cu operatori matrici
§ P5.13. Aproximarea funcțiilor după Cebyshev
Bibliografie
Index de subiect

PREFAŢĂ

Progresul în economie, industrie, știință și tehnologie, precum și în educație depinde acum în mare măsură de implementare în masă tehnologia calculatoarelor. Nu este o coincidență că sarcina de a crește „alfabetizarea informatică” a populației a devenit o sarcină de stat și politică. Soluția sa este posibilă datorită dezvoltării intensive a unei noi generații de instrumente de calcul - microcalculatoare pentru uz individual sau computere personale (PC-uri).

Deja acum, multe zeci de mii de astfel de computere sunt utilizate în țara noastră - de la microsisteme de calcul domestice desktop pentru uz individual (pe baza microcalculatoarelor Elektronika-60, Elektronika-DZ-28, Elektronika-TZ-59, Iskra-226, etc.) și sisteme de calcul interactive (DVK-1, DVK-2, DVK-3) către computere de buzunar străine (Pocket Computers FX-702P, PC-1211, RS-1500 etc.). Producția de computere de acasă ieftine și produse în masă (Home Computers) precum Agat, Elektronika-BK-0010 etc. este în curs de stăpânire.

Cu toate acestea, până acum, nici măcar flota existentă de astfel de computere nu este folosită suficient de eficient. Motivul principal Acest lucru se datorează faptului că utilizatorii de PC-uri sunt în principal non-profesioniști în domeniul tehnologiei computerelor și al matematicii computaționale. Ei sunt puțin familiarizați cu funcționarea computerelor, limbajele și elementele de bază ale programării lor și diverse metode numerice. Practic nu există încă literatură în care toate aceste probleme, ținând cont de specificul utilizării personale a computerelor, să fie luate în considerare simultan. Multe PC-uri sunt furnizate utilizatorilor cu descrieri foarte scurte (și destinate profesioniștilor), adesea fără biblioteci de programe de aplicație. Ca rezultat, computerul se transformă adesea într-o „cutie neagră” pe biroul utilizatorului, ale cărei capabilități misterioase rămân nedezvăluite.

Directorul se adresează categoriei largi de utilizatori de computere menționate mai sus. În pregătirea sa, au fost luate în considerare specificul stadiului actual de utilizare a PC-urilor în URSS, adică utilizarea PC-urilor în principal pentru a automatiza soluția de rutină științifică, tehnică, statistică și sarcini economice. Prin urmare, și ținând cont și de volumul limitat al cărții de referință, se acordă puțină atenție sarcinilor de joc, utilizării computerelor în viața de zi cu zi și rezolvării complexe. sarcini de informare(prelucrarea graficelor, editarea textului etc.). Descrierea unor astfel de aplicații ar trebui să facă obiectul unei literaturi speciale.

Structura cărții de referință este similară cărții publicate anterior a autorului, dedicată calculelor folosind microcalculatoare programabile (PMK). Mai mult, o parte semnificativă a cazurilor de testare este păstrată. Acest lucru, potrivit autorului, va ușura categorie de masă Utilizatorii PMK stăpânesc echipamente de calcul noi, mult mai puternice - PC-uri.

Cartea de referință descrie pe scurt principalele tipuri de PC-uri interne și străine, ale acestora echipamente periferice iar limbajul principal de programare este BASIC Sunt luate în considerare o serie de versiuni tipice de BASIC, de la simplu la extins, care conțin comenzi pentru procesarea variabilelor simbolice, adresare indirectă și trasarea graficelor. Sunt prezentate elementele de bază ale programării în BASIC și ale traducerii programelor dintr-o versiune de BASIC în alta.

Atenția principală în cartea de referință este acordată descrierii software-ului general aplicat matematic, algoritmic și PC, concepute în primul rând pentru calcule științifice, tehnice și statistice. În comparație cu descrierea algoritmilor, complexitatea problemelor în curs de rezolvare a fost semnificativ extinsă. Deci, cartea de referință descrie programe universale pentru rezolvarea sistemelor de ecuații liniare și diferențiale (inclusiv cu selectie automata pas de integrare), integrarea numerică cu o precizie dată, calculul tuturor rădăcinilor polinoamelor cu coeficienți reali și complexi etc. Gama de funcții speciale care pot fi calculate a fost extinsă semnificativ. Ultimul capitol oferă o serie de programe de aplicație pentru rezolvarea problemelor din anumite domenii specifice ale științei și tehnologiei. Desigur, aceste programe nu epuizează soluțiile la întreaga varietate de astfel de probleme. Atunci când folosesc toate capacitățile computerelor personale, acestea pot rezolva probleme științifice și tehnice complexe, inclusiv proiectarea navelor spațiale.

Directorul se adresează lucrătorilor științifici și tehnici, inginerilor, tehnicienilor și studenților universităților și școlilor tehnice. Deoarece este prima dată când este pregătit un astfel de ghid de referință, autorul este conștient de faptul că cartea nu este lipsită de deficiențe și va accepta cu recunoștință sfaturi și comentarii cu privire la conținutul ei. Autorul își exprimă profundă recunoștință recenzentului doctor în științe tehnice, profesorul S. V. Cheremnykh, candidat la științe tehnice, profesor asociat T. A. Samoilova, T. A. Kalaeva și tuturor colegilor care l-au asistat pe autor în pregătirea programelor și manuscrisului. Solicitările pentru carte trebuie trimise la adresa: 117071 Moscova V-71, Leninsky Prospekt, 15. Redacția principală de literatură fizică și matematică a editurii Nauka.

V. P. Dyakonov

Descărcați o carte Dyakonov V.P. Manual de algoritmi și programe în BASIC pentru calculatoare personale. Editura „Science”, Moscova, 1989

Această carte va fi produsă în conformitate cu comanda dumneavoastră folosind tehnologia Print-on-Demand. În manualul clasic al laureatului Turing, Niklaus Wirth, subiectele algoritmice tradiționale - sortarea și căutarea, recursiunea, structurile dinamice de date - sunt studiate cu atenție folosind exemple atent selectate. S-a făcut din nou traducerea în limba rusă, toate raționamentele și programele au fost verificate și corectate, unele dintre exemple, în acord cu autorul, au fost revizuite pentru a le clarifica cât mai mult logica. Exemplul de notație este acum Oberon/Component Pascal - cel mai avansat descendent direct al vechiului Pascal. Toate programele au fost testate și funcționează în versiunea populară a lui Oberon - sistemul Blackbox și sunt disponibile în sursă pe CD-ul inclus împreună cu sistemul în sine și materiale suplimentare. Majoritatea materialului din carte constituie cunoștințele minime necesare despre algoritmi nu numai pentru programatorii profesioniști, ci și pentru orice alți specialiști care folosesc activ programarea în munca lor. Cartea poate fi folosită ca material didactic...

Editura: „DMK Press” (2010)

Biografie

Niklaus Wirth s-a născut pe 15 februarie 1934 la Winterthur, la periferia orașului Zurich (Elveția). Părinți: Walter și Hedwig Wirth. Tatăl lui Nicklaus era profesor de școală.

În copilărie, Niklaus Wirth a fost interesat de modelarea aeronavelor și de construcția de rachete pasiunea sa pentru electronică și sistemele de control a programelor a început odată cu dezvoltarea dispozitivelor; telecomandă pentru modele. A intrat la Facultatea de Electronică de la Institutul Federal Elvețian de Tehnologie (ETH), unde a obținut o diplomă în inginerie electrică în patru ani. Și-a continuat studiile la Universitatea din Laval (,) și a primit o diplomă. Apoi a fost invitat în (SUA), unde, sub îndrumarea profesorului Husky, și-a susținut disertația, al cărei subiect era limbajul de programare Euler - o extensie prin intermediul limbajului.

Teza lui Wirth a fost remarcată de comunitatea dezvoltatorilor de limbaje de programare, iar în același 1963 a fost invitat la Comitetul de Standardizare Algol IFIP (Federația Internațională de Informatică), care a dezvoltat nou standard limba Algol, care a devenit ulterior. Împreună cu Wirth, a apărat în comitet linia dezvoltării cu moderație versiune modificată Algol, lipsit de deficiențele limbii sursă și completat cu un minim de instrumente cu adevărat necesare. Wirth și Hoar au prezentat comitetului limbajul Algol-W (W pentru Wirth), care a fost doar o astfel de reelaborare a lui Algol, dar nu a primit sprijin. La finalul lucrărilor comisiei, Wirth a fost printre cei care au criticat Algol-68, vorbind despre lipsa de fiabilitate și redundanța extremă a acestuia. În paralel, de-a lungul anilor, Wirth a lucrat ca asistent la,. Împreună cu Jim Wales, a dezvoltat și implementat limbajul PL/360, destinat programării pe platformă - un limbaj asemănător algolului, care a introdus o serie de caracteristici dependente de sistem legate de arhitectura IBM/360.

În prezent, întreaga trilogie clasică a lui Wirth a fost tradusă în limbă de către studenții săi și este disponibilă pentru descărcare de pe Internet sub forma

Note

Legături

  • Traducerea articolului lui N. Wirth „Idei bune: o privire prin oglindă”

ALGORITMI + STRUCTURI DE DATE = PROGRAME

Monografia unui renumit specialist elvețian despre programarea sistemului, familiar cititorilor sovietici din traducerea cărții sale „Programare sistematică. Introducere." (M.: Mir. 1977). Conține o descriere și o analiză a algoritmilor și metodelor de bază pentru construirea de programe. Cartea poate fi, de asemenea, folosită ca ghid pentru utilizarea limbajului Pascal în problemele software de calculator.

Pentru cercetători, profesori, studenți absolvenți și studenți specializați în software de calculator.

Prefața editorului de traduceri

Prefaţă

1. Structuri fundamentale de date

1.1. Introducere

1.2. Conceptul de tip pentru date

1.3. Tipuri simple date

1.4. Tipuri simple standard

1.5. Tisă limitată

1.6. Matrice

1.7. Postări

1.8. Postari cu variante

1.9. O multime de

1.10. Reprezentând tablouri, înregistrări și seturi

1.11. Fișier serial

Exerciții

Literatură

2. Sortarea

2.1. Introducere

2.2. Sortare Arrays

2.3. Sortarea fișierelor secvențiale

Exerciții

Literatură

3. Algoritmi recursivi

3.1. Introducere

3.2. Când să nu folosiți recursiunea

3.3. Două exemple de programe recursive

3.4. Algoritmi de backtracking

3.5. Problema opt regine

3.6 Problema căsătoriei stabile

3.7. Problema alegerii optime

Exerciții

Literatură

4. Structuri informatice dinamice

4.1. Tipuri de date recursive

4.3. Liste liniare

4.4. Structuri arborescente

4.5. Copaci puternic ramificați

4.6. Transformări cheie (aranjament)

Exerciții

Literatură

5. Structura limbii și traducătorii

5.1. Definiția și structura limbajului

5.2. Analiza propunerii

5.3. Construirea unui graf sintactic

5.4. Construirea unui program de analiza gramaticală pentru un dat

sintaxă

5.5. Construirea unui program de gramatică bazat pe tabel

5.6. Conversia BNF într-o structură de date care controlează

analiza gramaticală

5.7. Limbajul de programare PL/0

5.8. Program de analiză gramaticală pentru PL/0

5.9. Recuperare din erori de sintaxă

5.10. Procesor PL/0

5.11. Formarea de echipe

Exerciții

Literatură

Anexa A

O mulțime de caractere ASCII

Anexa B

Diagrame de sintaxă Pascal

Indexul programului

Indicator

Indexul programului

1.1. Calcularea puterilor a două 30

2.6. sortarea cochiliei 89

1.2. Scanerul 42

2.7. Cernerea 93

1.3. Citind numar real 63

2.8. Piramida sort 95

1.4. Tipărirea numărului real 65

2.9. Divizia 97

Triere

simplu

2.10. Sortare rapidă 99

incluziuni 79

2.11. Versiune non-recursivă a fast

Triere

binar

sort 100

incluziuni 80

2.12. Găsirea elementului k-lea 105

2.3. Sortare simplă de selecție 82

2.13. Sortare simplă de îmbinare

Metoda de sortare

bule

2.! 4. Sortare naturală

2.5. Sortarea agitatorului 86

fuziunea 121

2.15. Sortare echilibrată

4.6. Construirea unui copac optim

fuziunea 126

căutare 274

2.16. Sortare multifazată 138

4.7. Căutați, activați și ștergeți în

2.17. Distribuția seriei inițiale

Arborele B 290

folosind o piramidă 145

Constructie

3.1. curbele Hilbert 157

cruce

3.2. curbele Sierpinski 161

folosind

3.3. Mutarea cavalerului 167

aranjamente 308

3.4. Opt matci (o soluție)

Gramatical

sintaxa din exemplul 5 334

3.5. Opt regine (toate soluțiile) 174

Gramatical

3.6. Căsătorii durabile 180

limba (5.12) 343

3.7. Proba optimă 184

5.3. Traducător pentru limbă (5.13) 345

4.1. Lista 204

5.4. Analizare pentru PL/0

4.2. Sortarea topologică 218

Constructie

perfect

5.5. Analiza gramaticală pentru PL/0

arbore echilibrat 227

cu recuperarea erorilor

4.4. Căutare cu incluziuni 236

Constructie

5.6. Traducător pentru PL/0 380

referințe încrucișate 240

Adelson-Velsky 248

Indicator

Alegere simplă 81

Adresa 44, 48

Schimb simplu 83

Absolut 374

Pyramidalnaya 90

De bază 374

Cu divizia 96

Întoarceți 374

Fuziunea naturală 115

ruda 374

Fuziune multifazată 137

Algol-60 17, 320

Simplu 109

Algoritm pentru includerea într-un arbore B 285

N echilibrat -

În arborele BB 296

pista 122

În arborele echilibrat 254

Ștergeri din arborele B 288

La lista 200

Lemn echilibrat

al n-lea calcul factorial

Sortare agitatoare 85

Analiza gramaticală 324

Algoritmi recursivi 9

Vedere liniară 203

Cu retur 9, 168

Găsirea mediei 103

Analiza algoritmilor de sortare 79,

Pe lemn cu incluziunea 233

80, 82, 85, 88, 94, 100, 113

Clădiri Bush 300

Echilibrare 288

Tipuri de incluziune

Bănci de date 58

binar 79

Tobe magnetice 57

Simplu 78

Bariera 79, 203, 233

În trepte descrescătoare

BB-tree vezi B-tree binar

(sortarea cochiliei) 87

Arborele B 282

B-arbore binar 295

- - simetric 298 litere latine 24 Buffer 54

Beyer 282, 289, 295, 298

Opțiuni în intrări 35 Greutatea arborelui 264 Ramura 223

Reveniți 9, 168, 325

Voltaire 13

Recuperarea erorilor 373 Timp de brevet 58 Modificare selectivă 28 Aliniere 46 Expresie 17

Indexul 27

Înălțimea copacului 220

Gauss 169 Hilbert 156

Adâncimea arborelui 220 Distribuție orizontală 134

Gottlieb 267

Analiza gramaticală 10, 328

Descrescătoare 323

- - orientat spre obiectiv 328 Graficul de recunoaștere 328

- sintactic 328

- - determinist 332 Grafice 19 Date 11

Dijkstra 7, 12

Arborele 10, 19, 219

AVL-echilibrat 248

Binar 223

Degenerat 220

- perfect echilibrat 226

- lexicografic 238

Optimal 263

Caută 231

- foarte ramificat 223

Sortarea 91

- comandat 220

Fibonacci 249 2-3 ​​​​arborele 295

Diagrama de dependență 361 Disjuncție logică 23 Discuri magnetice 57 Tip discriminant 36 Lungimea căii 220

Ponderat 261

Extern 220

- - acces serial intern 220 53

Drept 58

- aleatoriu 25 Privind înainte 55, 68 Antetul listei 314

Problema căsătoriei durabile 174

- vreo opt regine 169

Despre mișcarea cavalerului 164

- alegerea optimă 182

- găsirea medianei 103

- construirea unui program scolar

Înregistrarea 8, 31, 48

- cu opțiuni 36 Notație fără paranteze 377

Infix 230

poloneză 377

Postfix 230

Inteligență artificială 163 Iterația 9, 99, 154 Hartă (Index) 123, 128 Quantile 105

Cheia 76, 303

Conversie cheie 303 Taste cu lungime variabilă 318

Biciul 77, 86, 134, 144, 264

Inele 19 Concatenare 51, 52, 54 Constanta 17 Constructor 20

Intrări 32

Matricea 26

Dependență contextuală 322 Conflict 304 Rezolvarea conflictului 304 Conjuncție logică 23 Coordonate 15, 31, 36

Carteziană 15, 36 Rădăcina arborelui 220

Factorul taxei 312

- utilizarea memoriei 46

curba Hilbert 156

Sierpinsky 158

Arbuști 299

Landis 248, 249

Magnetic 108

Frunza copac 220

Lorin 77 Lukasiewicz377 McVitie 179 McCraith 289

Mantisa 15

Matricea 19, 25, 44

Matrice 29 Mașină PL/0 373 Mediană 101, 103 Metasimboluri 320

Metoda de înjumătățire 28

Bulele 84

- tabele împrăștiate 307 Se îmbină 40

Trecerea 40

Diferența 40

Adaosul 40

- înmulțire 40 Setul 15, 19, 38 Set de putere 38

Set aparținând 40

Morris 306

Notație 52 Regiunea de debordare 306 Traversare arbore 229

Operator opțiunea 37

- aderările 34, 286

Proceduri 190

Condițional 190

Ciclul 29

Cu parametrul 190

Cu o prefață 190 de operații booleene 23

Fișierele de mai sus 54

Relații 40

- conversie 20 Operațiuni I/O 62 Operațiune 17, 18, 19 Descriere 17

Testarea patratică 307

Linear 306

Adresare deschisă 306 Coada 198 Erori induse 373

Memorie pentru programul 373

Operațional 295

Pascal 8, 11, 16, 19, 62

Variabila tampon 55 Variabile 17, 23 Reordonarea listei 209 Piramida 91

PL/0 331, 349 PL/1 20

Subtree 223 Căutare binar 28 -- în lista 202

Mediane 103

- pe lemn cu incluziunea 233

- auto-organizare bazată pe liste

Câmpul 48 Câmpul de atribut 36

Ordinea arborelui B 282

Parțial 211

- numere 15 Secvență 16, 19, 52 Descendent 220 Rafinare pas cu pas 11, 67, 344 Reguli de înlocuire 320

Generatoare 320

Construcția graficului 329

fictiv 132

Regula „nu intrați în panică” 363

Sierpinski 158

Oferte 319

Simbolul 23, 40, 319

Conversie (tipuri) 24

Începători 320

Cheile 303

Gol 24

Priorități operaționale 40

Personaje externe 363

Misiunea 19, 21, 189

Reluează 363

Problemă linie goală 326

Non-terminal 320

Programul de lucru 373

Terminalul 320

Acționat de masă 328

Managerii 393

Cernerea 92

Scanerul 40, 341

Așteptați cu nerăbdare un personaj fără

Îmbinare 109

întoarce 323

Două faze 115

Pasajul 109

Natural 115

Conform listei 201

Kaskadnoe 149

Procedura 190

Căi multiple 122

Calea externă 222

O singură fază 110

Intern 220

Simplu 109

Bitul 15, 44

Echilibrat 110, 122

Programul școlar 41

Trei benzi 109

Recunoașterea propoziției 322

Dimensiunea cuvintelor 44

Distribuția orizontală 134

Dicționar de frecvență 203

Dinamica memoriei 51, 193

Cuvântul de memorie 44

Aranjamentul 303

Acces aleatoriu 25

Se repetă 318

Offset 48, 374

Implementarea 47, 50

Coroutine 144

Registrul adreselor de comandă 374

Sortați 9, 74, 77

Echipe 374

Rapid 96

Partea superioară a stivei 374

Incluziuni 77

Editare 67

Binar 80

Recursiune 9, 99, 150

Simplu 78

Indirect 151

Extern 75

Direct 151

Internă 75

Arborele SBB 298

Alegerea 77

Legătură dinamică 374

Simplu 81

Segmentul 57

Matrice 75

logic 58

Metoda cu bule 84

fizic 58

Schimb 83

Simplu 83

Selector 20, 37

Pyramidalnaya 91

Intrări 32

Fuziunea 109

Array 26 Seria 115

Polifaza 128

Maxim 115

Simplu 109

fictiv 132

Folosirea lemnului 89

Topologic 211

Ambalaj 47, 49

Durabil 79

Nivelul 220

Dosarele 75

Dosarul 14, 19, 53

Shella88

Indexat 58

i-sort 88

Mai multe niveluri 57

Lista 10, 198

Personal 14

Bidirecțional 315

Cu acces direct 58

Ciclic 314

Element fals 79

Comparația 19

Floyd 92

Metode de sortare a tablourilor 105

Arborele Fibonacci 249

Numerele 131

Teancul 99, 374

Fixare 378

Șir de biți 49

Backus-Naurov formularul 320

curent 69

Infix 377

Structuri dinamice de date 10

Postfix 377

Avansat 8, 51

Formula lui Euler 247

fundamental 8

Funcția 17

asemănător unui copac 219

Ackerman188

Metode de structurare 19

Transformări 24

Diagramele programului 56

Aranjamente 304

Tabel împrăștiat 307

Comanda 75

Aranjamente 305

Factorial 150

Programe bazate pe tabel

Caracteristica 49

Turnurile din Hanoi 186

Tucker 266

Hoor 7, 8, 12, 96, 103

Hu 266

Tip de bază 18

Centroid 267

Date 17

Lanțul 115

Regular 26

Scalar 19

Cifre arabe 15, 24

Compozit 30

Binar!5

Standardul 19

Roman 15

Indici 26

Numerele reale 15

Recursiv 314

Complexul 31

Traducător 10, 17, 40, 319

Natural 150

Difuzare 40

virgulă flotantă 15

Scoaterea din lemn 241

Factorial 153

Din lista celor 200

Goluri de la 15

Nod de copac interior 220

Numărul armonic 83

Special 222

Cardinalul 18, 20, 39, 49, 50

Wilson 179

Intrare lizibilă 59

Williams 91

Indicatori 10

Sortarea Schenker 85

Walker 263

Euristică 267 Euler