2015. június 3., szerda

Lifelong learning and understanding the world around us...


I am to do more than arguing that informatics is a fascinating scientific discipline with interesting applications in almost all areas of everyday life. We pose the following questions: What are the educational requirements demanded from school subjects? Can we answer this question as satisfactory as we can do it, for instance, for mathematics, physics or chemistry? Does the teaching of informatics enrich education in ways other subjects cannot or do not sufficiently contribute? Answering the questions above can not only be helpful for the discussion with politicians about integrating proper informatics and not only ICT skills in the educational systems, but it can also help us as teachers to focus on the fundamentals and on sustainable knowledge. Follow-up Questions: How does A prepare the pupils for dealing with jobs and duties in society? Does the teaching A contribute to the understanding of our world and, if yes, in which way and the what extent? What is the contribution of teaching A to the development of the way of thinking and the ability to solve various kinds of tasks and problems? How important is the teaching of for the ability  successfully study at a school?  If one deals with the problem of teaching a subject A in schools, one has to beable to answer the following three fundamental questions: 1. Does the teaching of A contribute to the understanding of our world and if yes, in which way and to what extent? How does A prepare the pupils for dealing with jobs and duties in society? How important is the teaching of A for the ability to succeccfully study at a university? Do universities expect some fundamental knowledge of the discipline . What is the contribution of teaching A to the development of the way of thinking and the ability to solve various kinds of tasks and problems. In the following three sections, we aim to give at least partial answers to these questions regarding the subject of informatics. Before we deal with the three questions posed above, let us explain why we do not deal with imparting ICT skills in this article. Clearly, ICT skills have become important not only for studying, but also for future employments. Therefore, these skills need to be taught at school. However, in this article we focus on the unique, sustainable and lasting knowledge that informatics can provide. Mobile phones are becoming small, powerful computers. Do we consider introducing the subject of using mobile phones into school education? We hope that this will not be the case. We do not intend to answer these rhetorical questions; the only aim in posing them is to expose the extent of public misunderstanding about computer science. Let us only note that experience has shown that teaching the use of a computer does not necessarily justify a new, special subject in school. There are two main points in the relation between teaching core informatics and imparting ICT skills. First of all, none of our three principal questions posed above can be answered satisfactory if one reduces informatics to a computer driving licence. Secondly, reducing teaching of informatics to educating the usage of concrete software systems (word processor, spreadsheet, etc.) is the main reason for the current very bad image of informatics. Following our experience and some investigation in countries that replaced the teaching of informatics by imparting ICT skills, the pupils do not consider informatics as a science, they find it boring and not challenging enough to choose it as a subject for the study at a university. There is no other way out than to teach computer science in such a way that it is at least as attractive and deep as other natural sciences and mathematics.   The following two discoveries of computer science are of this kind. The limits of automation and the concept of algorithms All possible tasks (problems) can be partitioned into two classes, namely algorithmically solvable and algorithmically unsolvable tasks. Due to the introduction of the notion of the algorithm by A. Turing we got an instrument for classifying computing problems into those solvable by computers and others unsolvable by computers. We discovered the existence of a rigorously defined limit of automation. Quantitative laws of information processing and the concept of computational complexity To perform a computation or to process information in order to solve a concrete task requires some amount of work. There exist quantitative laws of information processing. For each task of information processing, one can investigate the amount of computer work sufficient and neces- sary in order to solve the task. We discovered that more computational resources help us to solve more tasks and that there are arbitrarily hard tasks with respect to the amount of work required. Thousands of prac- tical computing problems cannot be solved because the amount of work necessary is beyond the physical capabilities of our universe. The core scientific topic of informatics is to recognize how much information one can extract from the given data by a reasonable amount of work. Both fundamental concepts mentioned above do not only reveal us the existence of some natural laws of information processing. Similar to physics, these concepts are also crucial for many of today’s applications. For instance, the current e-commerce, based on public-key cryptography, would not exist without the fundamental concepts of algorithms and computational complexity. Examples of how to introduce these concepts in an appropriate way for secondary schools is presented in numerous books. Another important issue about computational complexity is the fact that many computing problems can be solved efficiently, but it is a challenge to discover an efficient algorithm for them and this subject of informatics is very fruitful. A classical problem from cryptology that is not practically solvable using a naive approach is for example the calculation of powers with very large exponents. But with an ingenious trick, the so-called fast exponentiation, this is efficiently doable. In Appendix A we present an approach we used in the textbook Ein- führung in die Kryptologie to introduce the fast modular exponentiation to secondary-school students. We conclude that informatics has a nontrivial scientific depth that is fascinating and can challenge young people with its goals and problems. Informatics expands science also by giving new dimensions to the fundamental categories of science such as determinism, nondeterminism, randomness, proof, simulation, correctness, efficiency etc. Many of its discoveries are surprising and attractive to young people. For instance,  xchanging a deterministic control by a randomized one, whose decisions are partially influenced by random bits, can essentially decrease the amount of work necessary to reach the intended goals. We only need to get more experience with teaching these topics understand ably in our schools. There is no doubt that, in our society based on knowledge which is extracted daily from a huge amount of data, one cannot understand the world around us without some fundamental knowledge of informatics. The same is true for the control of technical devices in the technical world created by man.  Because the amount of data is growing fast, one needs a well-structured way of saving it as well as efficient algorithms for searching, processing and communicating it. Many scientific disciplines, not only the natural sciences, generate knowledge from the data they collected by experiments, measurements, and assessments. To extract knowledge from the given data often requires a huge amount of computer work. This can only be done if one is able to develop specific efficient algorithms for these tasks or to ask computer scientists for their support. But this cannot be achieved without the ability to describe the problems exactly. Of a similar importance is the application of simulations. In order to forecast some development, we create models and run simulations on them. This originally basic research instrument of physics, chemistry and engineering became a fundamental tool in sciences like economics, sociology, psychology, etc., which avoided the use of exact mathematical methods for a long period of time. Without simulations, many research projects would be unthinkable. Nobody discusses whether mathematics has to be a part of school education or not. But informatics is the scientific discipline making  athematics to a technology. Due to this, mathematics is applied everywhere. Programming is a part of informatics with a growing importance. All technical systems are controlled by programs and therefore all students of technical sciences need to master programming. Slowly, but surely, this becomes true also for several areas of the natural sciences and even for humanities. Programming is not only the ability to implement given methods into programs. Much more important is the ability to use abstractions to describe problems, to analyse them and to find methods for solving them. Definitely, we conclude that teaching informatics in school is not only a contribution for the study of related topics at university. The knowledge about the capabilities and limits of computer science and the way of working in informatics is at least as useful for the study at a university as any other classical subject of high school curricula. To teach the discoveries of informatics, its methods, and ways of thinking and acting contributes to education at least in the same amount as teaching mathematics or other classical subjects. Additionally, teaching informatics brings new elements to the schools that we are missing already for a long time. Informatics contributes to science with new fundamental concepts and terms like algorithm, computational complexity, efficiency, verification, simulation, information security, etc., and gives a deeper insight on some fundamental notions of science such as determinism, nondeterminism, and randomness, to name a few. Teaching informatics has became important to successfully study at a university in many scientific disciplines. More and more scientific disciplines expect and will expect fundamental knowledge of informatics and especially the ability to apply it in their own discipline. The way of thinking and working in informatics enriches the human way of thinking and can essentially contribute to the success of young people in their life, whatever they will do in the future.

2015. május 11., hétfő

A brief history of modern Hungary

Hungary traces its history back to the hungarians, an alliance of semi-nomadic tribes from southern Russia and the Black Sea coast that arrived in the region in the ninth century. After centuries as a powerful medieval kingdom, Hungary was part of the Ottoman and then Habsburg empires from the 16th century onwards, emerging as an independent country again after World War I. The Hungarian language belongs to the Finno-Ugric family and is one of the handful of languages spoken within the European Union that are not of Indo-European origin. A landlocked country, Hungary is home to Lake Balaton, the largest in central Europe, and to a large number of spa towns and hot springs. At a glance International: Hungary joined NATO in 1999 and the EU in 2004. The EU has expressed concerns over what it sees as Hungary's failure to respect European democratic standards since 2010 It has especially rich traditions in folk and classical music and was the birthplace of numerous outstanding performers and composers, including Franz Liszt, Bela Bartok and Zoltan Kodaly.  Hungary became co-equal partner with Austria in a dual monarchy in the mid-19th century after an unsuccessful revolt against the Habsburgs in 1848. After a period of turmoil following World War I, an independent kingdom of Hungary was established under the authoritarian regency of Admiral Miklos Horthy.  The redrawing of European borders that took place after World War I left about five million ethnic Hungarians living in neighbouring countries. Their status remains a sensitive issue and has complicated Hungary's relations with its neighbours. Following World War II, in which Admiral Horthy had allied himself with Germany, Hungary fell under communist rule. An uprising in 1956 was crushed by Red Army forces, but Hungary did later become the first Eastern European country to gain some economic freedom. Hungary played an important part in accelerating the collapse of communism across Eastern Europe when it opened its border with Austria in 1989, allowing thousands of East Germans to escape to the West. Just a few months later the Berlin Wall was history. Hungary's post-communist economic transition was achieved relatively smoothly. Within four years of the collapse of communism nearly half of the country's economic enterprises had been transferred to the private sector, and by 1998 Hungary was attracting nearly half of all foreign direct investment in Central Europe. Ten years later, the picture looked rather less rosy. A high level of both private and state borrowing left the country particularly vulnerable to the credit crunch of 2008, and in October of that year the government was forced to appeal to the International Monetary Fund and the European Central Bank for massive loans in a bid to stave off economic collapse.




2015. május 9., szombat

Algoritmus leírása


Folyamatábra

Struktogram
Programozási feladattípusok (programozási tételek), a feladatmegoldás speciális kérdései. 
 A vizsgálni kívánt sorozatot megadhatjuk elemei felsorolásával vagy elemei kiszámítási módjával.
 
Feladattípusok

összegzés (a sorozat  elemeinek  összege,   szorzata, uniója stb.),
maximum-kiválasztás (a sorozat maximális, vagy   minimális értékű elemének kiválasztása),
megszámolás (adott tulajdonságú elemek száma a  sorozatban),
kiválogatás (sorozat  adott  tulajdonságú   elemeinek megadása),
Feladattípusok
kiválasztás (a vizsgált sorozat egy adott   tulajdonságú elemének megadása, ilyen elem  biztosan   szerepel a sorozatban),
eldöntés (van-e a vizsgált sorozatban  adott   tulajdonságú elem),
keresés (a vizsgált sorozat  egy adott   tulajdonságú elemének megadása, ilyen elem lehet, hogy nincs a sorozatban),
Feladattípusok
unió (két sorozatként ábrázolt halmaz egyesítése),
metszet (két sorozatként  ábrázolt halmaz közös  elemei),
összefuttatás (két rendezett sorozat egyesítése),
szétválogatás (egy sorozat kétféle tulajdonságú  elemeinek különválasztása),
Feladattípusok
rendezés (rendezetlen sorozat  elemeinek  átrendezése növekvő vagy csökkenő sorrendbe),
visszalépéses keresés (sorozatokból egy-egy elem meghatározása).


Összegzés: Ez a feladattípus egy sorozathoz egy értéket rendel.
A sorozat elemeinek összegét, szorzatát, unióját stb. kell előállítani.
A feladatok egy részénél az így kiszámított  értékkel esetleg még egyszerű műveletet kell végezni (pl.  osztani  az átlagszámításnál).
Az összegzés általános algoritmusa
Eljárás:
      S:=kezdőérték
      Ciklus I=1-től N-ig
         S:=S művelet A(I)
      Ciklus vége
   Eljárás vége.
Példa (egy 100 elemű tömb elemeinek összege)
Procedure osszegzes;
begin
  osszeg:=0;
      for i:=1 to 100 do
         osszeg:=osszeg+a[i];
end;
Maximum-kiválasztás
Ebben a feladatkörben adott egy N elemű sorozat.
A feladat ezen sorozat legnagyobb elemének meghatározása  (néha  csupán az értékére van szükség).
Hasonló feladat - csupán a < relációt kell >-ra cserélni - a minimum-kiválasztás.
A maximum-kiválasztás általános algoritmusa (1.)
Eljárás:
  MAXIMUM := A(1)
  SORSZAM := 1
Ciklus I=2-től N-ig
    Ha MAXIMUM < A(I) akkor   MAXIMUM := A(I)
   SORSZAM := I 
Ciklus vége
Eljárás vége.
Példa (Egy 100 elemű tömb legnagyobb elemének kiválasztása)
Procedure maximum;
begin
  max:=a[1];
  sorsz:=1;
  for i:=2 to 100 do
  begin
      if max < a[i] then
     begin
     max := a[i];
      sorsz:=i;
     end;
   end;
end;
A maximum-kiválasztás általános algoritmusa (2)
Eljárás:
   SORSZAM := 1
   Ciklus I=2-től N-ig
      Ha A(SORSZAM) < A(I) akkor SORSZAM := I
    Ciklus vége
    MAXIMUM  := A(SORSZAM)
Eljárás vége.
Példa (egy 100 elemű tömb legnagyobb elemének kiválasztása
Procedure maximum2;
begin
   sorsz:=1;
   for i:=2 to 100 do
      if a[sorsz] < a[i] then sorsz:=i;
    max:=a[sorsz];
end;

Megszámolás
A következő feladatok megoldása során egy  sorozathoz  egy számot rendelünk hozzá.
Rendelkezésünkre áll egy N elemű  sorozat és egy, a sorozat elemein értelmezett T tulajdonság.
Az a feladatunk, hogy a  T  tulajdonsággal  rendelkező  elemeket számoljuk meg.
Ügyeljünk arra, hogy az összegzés céljára szolgáló változó értékét kezdetben 0-ra kell állítani!
A megszámolás általános algoritmusa
Eljárás:
   DB:=0
   Ciklus I=1-től N-ig
      Ha A(I) T tulajdonságú akkor DB:=DB+1
   Ciklus vége
Eljárás vége.
Példa (Egy 100 elemű tömb elemei közül hány pozitív van)
Procedure pozitiv;
begin
   darab:=0;
   for i:=1 to 100 do
      if a[i] > 0 then darab:=darab+1;
end;

Kiválogatás
Ennél a feladattípusnál egy N elemű A sorozat összes T tulajdonsággal rendelkező elemét kell meghatározni.
Az eredmény egy B(M) sorozat lesz, ahol 0<=M<=N. 
M=0,  ha az A(N) sorozat egy eleme sem, M=N, ha az A(N) sorozat minden eleme T tulajdonságú.
A kiválogatás általános algoritmusa
Eljárás:
   M:=0
   Ciklus I=1-től N-ig
      Ha A(I) T tulajdonságú akkor M:=M+1 : B(M):=A(I)
   Ciklus vége
Eljárás vége.
Példa (egy száz elemű tömb pozitív elemeit gyűjtsük egy másik tömbbe)
Procedure pozitivtomb;
begin
   darab:=0;
   for i:=1 to 100 do
      if a[i] > 0 then
      begin
         darab:=darab+1;
         b[darab]:=a[i];
      end;
end;

Kiegészítés
A megoldásban gyakran - ha további  feldolgozásukra  nincs szükség - nem gyűjtjük ki az elemeket, hanem azonnal kiírjuk:
Eljárás:
  Ciklus I=1-től N-ig
     Ha A(I) T tulajdonságú akkor Ki: I,A(I)
   Ciklus vége
Eljárás vége.
Példa (egy 100 elemű tömb pozitív elemeinek kiíratása)
Procedure pozitivki;
begin
  for i:=1 to 100 do
     if a[i] > 0 then writeln(i,’ ., ‘,a[i]);
end;

Kiválasztás
Adott egy N elemű sorozat és egy, a sorozat elemein értelmezett T tulajdonság. Azt is tudjuk, hogy a  sorozatban  van legalább egy T tulajdonságú elem.
A feladat az első ilyen elem sorszámának meghatározása.
A kiválasztás algoritmusa
Eljárás:
   I:=1
   Ciklus amíg A(I) nem T tulajdonságú
      I:=I+1
   Ciklus vége
   SORSZAM:= I
Eljárás vége.
Példa (egy tömbben biztosan található első pozitív elem meghatározása)
Procedure elsopoz;
begin
   i:=1;
   while a[i] <= 0 do
   begin     
      i:=i+1;
   end;
   sorsz:=i;
end;
Eldöntés
Ez a feladattípus egy sorozathoz logikai értéket rendel.
A logikai érték "igaz"-at vesz fel,  ha  a  sorozatban  létezik adott (T) tulajdonságú elem, és "hamis"-at vesz fel, ha ilyen tulajdonságú elem nincs a sorozatban.
Az eldöntés általános algoritmusa
Eljárás:
   I:=1
   Ciklus amíg I<=N és A(I) nem T tulajdonságú
      I:=I+1
   Ciklus vége
   VAN:=(I<=N)
Eljárás vége.
Példa (egy 100 elemű tömbben van-e pozitív)
Procedure vanepoz;
begin
   i:=1;
   while (i <= 100) and (a[i] <= 0) do
   begin
      i:=i+1;
   end;
   van:=(i <= 100);
end;
Keresés
A keresés feladattípus egy sorozathoz egy elemet rendel.
A feladat lényege, hogy a sorozatban egy adott tulajdonságú (T) elemet kell meghatároznunk (magát az elemet vagy a sorozatbeli sorszámát szokás kérni).
Nem biztos, hogy a sorozatban van ilyen elem.
Keresés
A keresés hatékonyságát lényegesen  befolyásolhatja,  hogy rendezett vagy rendezetlen sorozatban keresünk: logaritmikus, illletve lineáris keresést használunk.
Amelyik feladatban lehet, használjuk ki a sorozat rendezettségét!

A lineáris keresés általános algoritmusa
Eljárás: lineáris keresés
   I:=1
   Ciklus amíg I<=N és A(I) nem T tulajdonságú
      I:=I+1
   Ciklus vége
   VAN:=(I<=N)
   Ha VAN akkor SORSZÁM:=I
Eljárás vége.
Példa (egy 100 elemű tömbben hányadik az első pozitív, ha van)
Procedure linearisker;
begin
   i:=1;
   while (i <= 100) and (a[i] <= 0) do
   begin
      i:=i+1;
   end;
   van:=(i<=100);
   if van then sorsz:=i;
end;

A logaritmikus keresés általános algoritmusa
Eljárás: logaritmikus keresés
      Be: X
      AlsoH = 1   FelsoH = n
      Ciklus vége
         K = (AH+FH)/2 egész része
         Ha X<A(K) akkor FH=K-1
         Ha X>A(K) akkor AH=K+1
      Ciklus amíg A(K)=X vagy AH>FH
      VAN:=(A(K)=X)
      Ha VAN akkor SORSZÁM:=K
   Eljárás vége.
Példa (egy 100 elemű rendezett tömbben keressük meg  egy tetszőleges elem sorszámát)
Procedure logaritmker;
begin
      readln(x);
      AlsoHatar:=1;
      FelsoHatar:=100;
      repeat
         Kozep:= (AlsoHatar+FelsoHatar) div 2;
         if x<a[Kozep] then FelsoHatar:=Kozep-1;
         if x>a[Kozep] then AlsoHatar:=Kozep+1;
      until (a[Kozep]=x) or AlsoHatar>FelsoHatar;
      van:=(a[Kozep]=x);
      if van then sorszam:=Kozep;
   end;

Alkalmazás
Gyakrabban találkozhatunk azonban olyan feladatokkal  a  gyakorlatban, ahol több programozási tétel együttes használatára van szükség.
Szerepel több olyan feladatsor, amelyben az adatok  azonosak, s velük kapcsolatban különböző kérdésekre  kell  választ adni.
Ezek jól használhatók önálló feladatmegoldásra.
Alkalmazás
A következő feladat megoldásánál a már  megismert  feladattípusok (összegzés, eldöntés, kiválasztás,  keresés,  megszámolás, maximumkiválasztás és kiválogatás) közül kell kiválasztani azokat, amelyekkel a kívánt eredmény elérhető.
Példa
Adott egy N elemű sorozat, valamint egy a sorozat  elemein értelmezett T tulajdonság.
Adjuk meg a sorozat minimális  értékű T tulajdonságú elemeit!
Adott N személyi számból álló sorozat [A(N)]. Adjuk meg az 1968-ban született legfiatalabb ember sorszámát  és  személyi számát!
Adjuk meg az összes ezen a napon született ember adatait is!
Alkalmazott tételek
Kiválogatás tétele: 1968-ban született emberek.
   B(I)= A(I) 2. és 3. számjegye.
Minimum-kiválasztás tétele: legkésőbbi  hónapban  és  napon született ember.
   C(I)= B(I) 4-7. számjegye.
Kiválogatás tétele: ugyanezen a napon született emberek.
Megoldás
Procedure szemelyiszam;
begin
      min:=1231;
      minsor:=0;
      for i=1-től n do
         if b[i]=68 then
                if c[i]<=min then
                begin
                    min:=c[i];
                    minsor:=i;
                end;
      if minsor>0 then
                for i=1 to n do
                if b[i]=68 and c[i]=min then writeln(a[i],’, ‘,i);
end;
Unió
Eddig olyan feladattípusokkal foglalkoztunk, ahol egy  sorozathoz egy értéket, vagy egy  sorozatot  rendeltünk  hozzá.
Ebben a részben viszont több sorozat adott, amelyből egy  sorozatot kell valamilyen szempont szerint előállítani.
A matematikából ismerjük két halmaz egyesítésének  (uniójának)  fogalmát.
Unió
A két halmaz egyesítéséből származó halmazba azok az  elemek tartoznak, amelyek legalább az egyikben szerepelnek.
Ebben, és a következő alfejezetben a  halmazt  speciálisan ábrázoljuk: az elemeit felsoroljuk egy sorozatban.
Ezt a sorrendet felhasználjuk a halmaz elemeinek bejárására.
Unió
Például, ha
      az "A" sorozat elemei: e, b, a, f, d, c és
      a  "B" sorozat elemei: j, f, b, h, d,
      akkor a két sorozat uniójába ("C") az  e, b, a, f, d, c, j, h
      elemek tartoznak.
Az unió általános algoritmusa
Eljárás:
      Ciklus I=1-től N-ig
         C(I):=A(I)
      Ciklus vége
      K:=N
      Ciklus J=1-től M-ig
         I:=1
         Ciklus, amíg I<=N és B(J)<>A(I)
            I:=I+1
         Ciklus vége
         Ha I>N akkor K:=K+1 : C(K):=B(J)
      Ciklus vége
   Eljárás vége.
Példa (egy 100 és egy 30 elemű sorozat uniója)
procedure unio;
begin     
   for i:=1 to 100 do c[i]:=a[i];
   k:=100;
   for j:=1 to 30 do
   begin
      i:=1;
      while (i<=100) and (b[j]<>a[i]) do i:=i+1;
      if i>n then
      begin
          k:=k+1;
         c[k]:=b[j];
       end;
    end;
end;
Metszet
A metszetképzés fogalmával találkoztunk már  a  matematika órán a halmazműveletek tanulása során.
Két halmaz metszetébe azok az  elemek  tartoznak,  amelyek mindkettőben szerepelnek.
   Például, ha
      az "A" halmaz elemei: e, b, a, f, d, c és
      a  "B" halmaz elemei: a, j, f, b, h, d,
      akkor a két halmaz metszetébe ("C") a  b, f, d  elemek tartoznak.
A metszet általános algoritmusa
Eljárás:
      K:=0
      Ciklus I=1-től N-ig
         J:=1
         Ciklus amíg J<=M és A(I)<>B(J)
            J:=J+1
         Ciklus vége
         Ha J<=M akkor K:=K+1 : C(K):=A(I)
      Ciklus vége
   Eljárás vége.
Példa (egy 100 és egy 30 elemű halmaz közös elemei)
Procedure metszet;
begin    
k:=0;
      for i:=1 to 100 do
      begin
         j:=1;
         while (j<=30) and (a[i]<>b[j]) do j:=j+1;
         if j<=30 then
         begin 
            k:=k+1;  c[k]:=a[i];
         end;
      end;
   end;
Összefuttatás
Az alapelve megegyezik az unióképzéssel, de feltételezzük, hogy a két sorozat rendezett,  és  azt  szeretnénk,  hogy  az egyesítés során keletkezett sorozat is rendezett legyen.
   Például, ha
      az A sorozat elemei: A, B, C, D, E, F és
      a B sorozat elemei:  B, D, F, H, J,
      akkor a két sorozat összefuttatásával keletkezett sorozatba az A, B, C, D, E, F, H, J elemek tartoznak.
Az összefuttatás általános algoritmusa
Eljárás:
      I:=1 : J:=1 : K:=0
      Ciklus amíg I<=N és J<=M
         K:=K+1
         Elágazás
            A(I)<B(J) esetén C(K):=A(I) : I:=I+1
            A(I)=B(J) esetén C(K):=A(I) : I:=I+1 : J:=J+1
            A(I)>B(J) esetén C(K):=B(J) : J:=J+1
         Elágazás vége
      Ciklus vége
   Eljárás vége.
Példa (egy 100 és egy 30 elemű rendezett sorozat összefuttatása)
Procedure osszefuttatas;
begin
      i:=1;j:=1;k:=0;
      while (i<=100) and (j<=m) do
      begin
         k:=k+1;
         if a[i]<b[j] then begin c[k]:=a[i]; i:=i+1; end else
         if a[i]=b[j] then begin c[k]:=a[i]; i:=i+1;j:=j+1; end
         else begin c[k]:=b[j];j:=j+1 end;
      end;
end;

Szétválogatás
Ebben a részben egy sorozat elemeit választjuk külön  vagy egy sorozaton belül két részre, vagy két különböző  sorozatba aszerint, hogy egy adott T tulajdonsággal  rendelkeznek-e  az elemek, vagy nem.
Például, ha az A sorozat elemei 1, 2, 3, 4, 5, 6, 7, 8, 9, és a T tulajdonság:  a  számok  párossága,  akkor  a  sorozat elemeinek szétválogatásával a 2, 4, 6, 8, és az 1, 3, 5, 7, 9 sorozatok keletkeznek.
A szétválogatás általános algoritmusa
Eljárás:
      J:=0 : K:=0
      Ciklus I=1-től N-ig
         Ha A(I) T tulajdonságú akkor  J:=J+1 : B(J):=A(I)  különben K:=K+1 : C(K):=A(I)
      Ciklus vége
   Eljárás vége.
Példa (100 szám szétválogatása paritás alapján)
Procedure szetvalogatas;
begin
      j:=0;k:=0;
      for i:=1 to 100 do
         if a[i] mod 2=0 then begin j:=j+1;b[j]:=a[i]; end
         else begin k:=k+1; c[k]:=a[i]; end;
      end;
end;

Rendezések
Közvetlen beszúrással
Közvetlen kiválasztással
Buborék-rendezés (közvetlen csere)
Keverő rendezés
megjegyzés: Ennél sokkal több rendezési algoritmus létezik!
Közvetlen beszúrás
Minden lépésben a második elemtől egyesével kiemeljük a csökkenő sorozat szerinti első elemet, és beszúrjuk a megfelelő helyre
Ábra
Algoritmus
Procedure kozvetlenbeszuras;
begin
   for i:=2 to n do
   begin
       elem:=a[i];
       j:=i-1;
       while (j>0) and (elem<a[j]) do
       begin
          a[j+1]:=a[j];
          j:=j-1;
       end;
       a[j+1]:=elem;
    end;
end;
Közvetlen kiválasztás
A sorozat soron következő legkisebb elemének kiválasztása, majd beszúrása a megfelelő helyre.
Ábra
Algoritmus
Procedure kozvetlenkivalasztas;
begin
   for i:=1 to n-1 do
   begin
      k:=i; elem:=a[i];
      for j:=i+1 to n do
          if a[j]<elem then
          begin
             k:=j; elem:=a[j];
          end;
      a[k]:=a[i]; a[i]:=elem;
   end;
end;
Közvetlen csere (buborék)
Az alkalmas elempárok összehasonlítása és felcserélése során jutunk az összes elem rendezéséhez.
Ábra
Algoritmus
Procedure buborek;
begin
   for i:=2 to n do
   begin
      for j:=n downto i do
         if a[j-1]>a[j] then
         begin
            elem:=a[j-1];
            a[j-1]:=a[j];
            a[j]:=elem;
         end;
   end;
end;
Keverő rendezés
Az előző módszer elég rossz hatásfokú, ha kevés rossz helyen tartózkodó elem van, mert akkor is elvégzi az összes összehasonlítást.
A keverő rendezés ezen úgy javít, hogy váltogatja az összehasonlító menetek irányát.
Ábra
Algoritmus / 1
Procedure kevero;
begin
   l:=2; r:=n; k:=n;
   repeat
      for j:=r downto l do
         if a[j-1]>a[j] then
         begin
             elem:=a[j-1];
             a[j-1]:=a[j];
             a[j]:=elem;
             k:=j;
         end;
      l:=k+1;
Algoritmus / 2
for j:=1 to r do
         if a[j-1]>a[j] then
         begin
             elem:=a[j-1];
             a[j-1]:=a[j];
             a[j]:=elem;
             k:=j;
         end;
       r:=k-1;
   until l>r ;
end;

Visszalépéses keresés (backtrack)
A visszalépéses keresés ( backtrack )  a  problémamegoldás igen széles területén alkalmazható algoritmus,  amelynek  lényege a feladat megoldásának megközelítése rendszeres próbálgatással.
Néha ez a legjobb megoldás!
Visszalépéses keresés (backtrack)
Adott N sorozat, amelyek rendre M(1),  M(2),...M(N)  elemszámúak.
Ki kell választani mindegyikből egy-egy elemet  úgy, hogy az egyes  sorozatokból  való  választások másokat  befolyásolnak.
Ez egy bonyolult keresési  feladat,  amelyben  egy adott tulajdonsággal rendelkező szám N-est kell megadni  úgy, hogy ne kelljen az összes lehetőséget végignézni.
Visszalépéses keresés (backtrack)
Először megpróbálunk az első sorozatból  kiválasztani  egy elemet, ezután a következőből, s ezt  addig  csináljuk,  amíg választás lehetséges.
X(I) jelölje az I. sorozatból kiválasztott elem sorszámát!
Ha még nem  választottuk, akkor értéke 0 lesz.
Ha nincs jó választás, akkor visszalépünk az előző  sorozathoz, s megpróbálunk abból egy másik  elemet  választani.
Visszalépéses keresés (backtrack)
Visszalépésnél természetesen törölni kell a választást  abból a sorozatból, amelyikből visszalépünk.
Az  eljárás  akkor  ér véget, ha minden sorozatból sikerült választani, vagy pedig a visszalépések sokasága után már az első sorozatból sem  lehet újabb elemet választani (ekkor a feladatnak nincs megoldása).
A backtrack általános algoritmusa
Eljárás:
      I:=1 : X(I):=0
      Ciklus amíg I>=1 és I<=N
         Ha VAN JO ESET(I) akkor  I:=I+1
                         különben X(I):=0 : I:=I-1
      Ciklus vége
      VAN:=(I>N)
   Eljárás vége.

  
A backtrack általános algoritmusa
VAN JO ESET(I):
      Ciklus
         X(I):=X(I)+1
      amíg X(I)<=M(I) és ROSSZ ESET( I,X(I) )
      Ciklus vége
      VAN JÓ ESET:=(X(I)<=M(I))
   Eljárás vége.
A backtrack általános algoritmusa
ROSSZ ESET( I,X(I) ):
      J:=1
      Ciklus amíg J<I és (J,X(J)) nem zárja ki (I,X(I))-t
         J:=J+1
      Ciklus vége
      ROSSZ ESET:=(J<I)
   Eljárás vége.