Uploaded by dharma.dhuman

Bilgi işlemsel düşünmeden programlamaya - Metin Tabanlı Programlama

11
METİN TABANLI
PROGRAMLAMA
Amaçlar
ÖZET
Bu bölümü bitirdiğinizde:
Bilgisayar ve programlama, günlük hayatımızda kritik bir rol
oynamaktadır. Programlama, günümüz dünyasının yeni dilidir ve
gelecek bir zamanda, bilgisayar dilini bilmeyenlerin bugün okuma-yazma veya matematik bilmeyenlerin karşılaştıkları zorlukların
benzerini yaşamaları büyük olasılıktır. Bu yüzden de çocuklar ve
gençlerin kodlamayı öğrenmesi büyük bir önem arz etmektedir. Bu
konu gelecek nesillerin kodlama ile ilgili meslek sahibi olmaları ile
ilgili de değildir. Bu ilgiyi kurmak fen bilgisi derslerinde güneş sistemi ve gezegenler ile ilgili bilgileri öğrenen herkesin gök bilimci
olmasını beklemek ya da proton ve nötron öğretilen çocukların ileride atom fizikçisi olmasını beklemek ile aynıdır.
hh Programlama dillerinin
dayandığı paradigmaların
özelliklerini açıklayabilecek,
hh Programlama öğretiminde
kullanılan yaklaşımların
avantaj ve dezavantajlarını
sıralayabilecek,
hh Metin tabanlı programlama
öğretiminin zorluklarını açıklayabilecek,
hh Metin tabanlı programlama
dillerinin öğretiminde kullanılan araçların özelliklerini
sıralayabilecek ve
hh Blok tabanlı programlamadan
metin tabanlı programlamaya geçişin nasıl yapılacağını
tartışabilecek bilgi ve beceriye
sahip olacaksınız.
Programlama ve bilgisayar bilimleri eğitimi bilgi işlemsel düşünme ile ilgilidir. Bilgi işlemsel düşünme becerisi, bireylerin karşılaştıkları sorunları yönetilebilir alt sorunlara bölerek onları çözebilmeleri ile ilgilidir. Mantık, matematik ve algoritmayı birleştirerek
yaşadığımız dünyaya farklı bir gözle bakmamızı sağlar. Bu nedenle,
programlamanın öğretilmesinin gerekip gerekmediğinden daha
çok programlama öğrenilirken kendine güven ve motivasyonda
düşüş olma olasılığının en aza indirilmesi için öğretim programlarının nasıl en üst düzeye çıkarılması gerektiğine yönelik sorunlar
üzerinde düşünülmesi faydalı olacaktır.
Bilgisayar programlama ve bilgi işlemsel düşünme becerilerinin kazandırılmasında blok tabanlı programlama ortamları yaygın
olarak kullanılmaktadır. Temel bilgisayar bilimi ve programlama
kavramlarının öğretiminde başarılı sonuçlar alınmasının yanında
günümüzde kullanılan genel amaçlı programlama dillerinin tamamına yakını metin tabanlıdır. Bu bölümde metin tabanlı genel
amaçlı programlama dillerinin gelişimi ve öğretilmesi konularındaki paradigmalara ve pedagojik yaklaşımlara yer verilmiştir. Daha
sonra bilgisayar programlamaya blok tabanlı yaklaşım ile başlayan
çocuk ve gençlerin metin tabanlı programlama dillerine geçişte
yaşadıkları sorunlar ve blok tabanlı ortamların neden olduğu bazı
yanlış programlama davranışları üzerinde durulmuştur. Yapılan çalışmalar blok tabanlı ya da metin tabanlı ortamların birbirlerinin
yerine kullanılmasından daha çok birbirlerini tamamlayıcı nitelikte
kullanılmasının daha etkin ve verimli bir yol olduğunu göstermektedir. Öğretim programlarında, blok ve metin tabanlı programlama
dillerinin birlikte kullanılması öğrenenlerin programlama konusunda kendilerine olan güven ve motivasyonlarını arttırarak fikirlerini programlama yoluyla gerçekleştirmelerine olanak sağlayacağı
düşünülmektedir.
Anahtar Kavramlar: programlama paradigmaları, programlama
yaklaşımları, eğitsel programlama dilleri, metin tabanlı programlama, logo, python, kaplumbağa grafikleri
Metin Tabanlı Programlama 291
ETKİNLİK ÖNERİSİ
1.C, C++, Java, Small Basic ve Python program geliştirme ortamları üzerinde
ekrana “Merhaba Dünya” yazdıran bir program kodu yazmaya çalışınız.
Bu süreçte;
a.
Eğer ortamların kurulumunu geçekleşmez ise sebebiyle not alınız,
b.Program kodunu yazmak için her programlama dilini başlangıç
seviyesinde öğrenmek için en fazla 30 dakika ayırınız,
c.Program kodlama sürecinde karşılaştığınız hataları (varsa) ve hatanın neden oluştuğunu anlayıp anlamadığınızı belirtiniz.
d.Program kodunu yazabildiğiniz ve çalıştırabildiğiniz ortamlarda
program kodlarını satır uzunluğu olarak karşılaştırınız.
2.Bir okulda dersler sabah saat 8:30’da başlamaktadır. Okul aracı saat 7:45’te
evine yakın bir duraktan geçen öğrenenin, akşam yattıktan sonra dersin olduğu sınıfa girene kadar yaşadıklarını ifade eden bir algoritma hazırlayınız.
3.Aşağıdaki şekilde görülen evi Python ya da Small Basic programlama ortamında çizmek için gerekli adımları bilgi işlemsel düşünme becerilerini de göz
önüne alarak tasarlayınız. Programlama ortamında kodu yazıp çalıştırınız.
292 Bilgi İşlemsel Düşünmeden Programlamaya
Kaynakça
Abelson, H., Sussman, G. J., & Sussman, J. (1996). Structure and Interpretation of Computer
Programs 2’nd Edition. Massachusetts: The MIT Press.
Bergin, J., Stehlik, M., Roberts, J., & Pattis, R. (1997). Karel++, a gentle introduction to the art of
object-oriented. New York: John Wiley & Sons.
Brusilovsky, P., Calabrese, E., Hvorecky, J., Kouchnirenko, A., & Miller, P. (1997). Mini-languages: a way to learn programming principles. Education and Information Technologies,
65-83.
Calabrese, E. (1989). Marta - the “Intelligent Turtle”. Proceedings of Second European Logo
Conference, EUROLOGO’89 (s. 111-127). Gent, Belgium: Edited by G. Schuyten and M.
Valcke.
Dann, W. P., Cooper, S., & Paush, R. (2011). Learning to Program with Alice. Upper Saddle
River: Pearson Prentice Hall.
Dorling, M., & White, D. (2015). Scratch: A Way to Logo and Python. SIGCSE ‘15 Proceedings
of the 46th ACM Technical Symposium on Computer Science Education (s. 191-196). Kansas City: Association for Computing Machinery.
Farooq, M. S., Khan, S. A., Ahmed, F., Islam, S., & Abid, A. (2014). Choice of Pedagogical Approach towards First Programming Languages. Journal of Applied Environmental and Biological Sciences, 311-317.
Federici, S. (2011). A minimal, extensible, drag-and-drop implementation of the C programming language. SIGITE ‘11 Proceedings of the 2011 conference on Information technology
education (s. 191-196). New York: Association for Computing Machinery.
Federici, S., & Stern, L. (2011). A Constructionist Approach to Computer Science. A Constructionist Approach to Computer Science (s. 1352-1361). Melbourne: Association for the
Advancement of Computing in Education.
Geertsen, H. V. (2016). Tool for Transitioning from Scratch to Python. Aalborg University.
Harvey, B., & Möning, J. (2010). Bringing ‘No Ceiling’ to Scratch: Can One Language Serve Kids
and Computer Scientist? In proceedings of Constructionism 2010. Paris.
Hvorecky, J. (1992). Karel the Robot for PC. Proceedings of East-West Conference on Emerging
Computer Technologies in Education (s. 157-160). Moscow: Edited by P. Brusilovsky and
V. Stefanuk.
Joint Task Force on Computer Engineering Curricula. (2016). Curriculum Guidelines for Undergraduate Degree Programs in Computer Engineering. IEEE Computer Society/Association for Computing Machinery.
Joint Task Force on Computing Curricula. (2001). Computing Curricula 2001 Computer Science. IEEE Computer Society/Association for Computing Machinery.
Kay, J., & Tyler, P. (1992). A Microworld for Developing Learning Design Strategies. Computer
Science Education, 111-122.
Metin Tabanlı Programlama 293
Klopfer, E., Osterweil, S., & Salen, K. (2009). The Education Arcade. Massachusetts Institute of
Technology.
Kölling, M. (1999). The Problem of Teaching Object-oriented Programming Part I: Languages.
Journal of Object-Oriented Programming, 8-15.
Kölling, M. (2016). Lessons from the Design of Three Educational Programming Environments:
Blue, BlueJ and Greenfoot. International Journal of People Oriented Programming, 5-32.
Lewis, C. M. (2010). How programming environment shapes perception, learning and goals:
logo vs. scratch. SIGCSE ‘10 Proceedings of the 41st ACM technical symposium on Computer science education (s. 346-350). New York: Association for Computing Machinery.
Lister, R., Berglund, A., Clear, T., Bergin, J., Garvin-Doxas, K., Hanks, B., . . . Whalley, J. L.
(2006). Research Perspectives on the Objects-Early Debate. ITiCSE-WGR ‘06 Working group reports on ITiCSE on Innovation and technology in computer science education (s.
146-165). Bologna: ACM.
Logo Foundation. (2017, 10 1). Logo and Learning. Logo Foundation: http://el.media.mit.edu/
logo-foundation/what_is_logo/logo_and_learning.html adresinden alındı
Logo Foundation. (2017, 07 20). Logo History. Logo Foundation: http://el.media.mit.edu/logofoundation/what_is_logo/history.html adresinden alındı
Matematicamente.it. (2014, 8 29). Matematica C3 Algebra DOLCE 1, Testo per il primo biennio
della Scuola Secondaria di II grado. Matematicamente.it: https://www.matematicamente.it/
staticfiles/manuali-cc/algebra1_dolce_1ed.pdf adresinden alındı
Meerbaum-Salant, O., Armoni, M., & Ben-Ari, M. (2011). Habits of programming in scratch.
ITiCSE ‘11 Proceedings of the 16th annual joint conference on Innovation and technology
in computer science education (s. 168-172). New York: Association for Computing Machinery.
Olimpo, G. (1988). The Robot Brothers: An environment for learning parallel programming
oriented to computer education. Computers and Education, 113-118.
Papert, S. (1971). A Computer for Elementary School. Massachusetts: Massachusetts Instıtute of
Technology Artificial Intelliggence Laboratory.
Papert, S. (1980). Mindstorms: Children, Computers, and Powerful Ideas. New York: Basic Books Inc.
Parsons, D., & Haden, P. (2007). Programming Osmosis: Knowledge Transfer from Imperative
to Visual Programming Environments. NACCQ 2007 20th Annual Conference of the National Advisory Committee on Computing Classifications.
Pattis, R., Roberts, J., & Stehlik, M. (1995). Karel - the robot, a gentle introduction to the art of
programming (Second ed.). New York: Wiley.
Power, K., Ecott, S., & Hirshfield, L. (2007). Through the looking glass: Teaching CS0 with Alice.
Proceedings of the 38th SIGCSE technical symposium on Computer science education (s.
213-217). New York: Association for Computing Machinery.
294 Bilgi İşlemsel Düşünmeden Programlamaya
Powers, K., Ecott, S., & Hisrhfield, L. (2007). Through the Looking Glass: Teaching CS0 with
Alice. SIGCSE ‘07 Proceedings of the 38th SIGCSE technical symposium on Computer
science education (s. 213-217). New York: Association for Computing Machinery.
Price, E. (2017, 08 24). Begining Microsoft Small Basic. Microsoft TechNet: https://social.technet.microsoft.com/wiki/contents/articles/16766.beginning-microsoft-small-basic.aspx adresinden alındı
Raadt, M. d. (2008). Teaching Programming Strategies Explicitly to Novice Programmers. University of Southern Queensland.
Ragonis, N., & Ben-Ari, M. (2005). A long-term investigation of the comprehension of OOP
concepts by novices. Computer Science Education, 203-221.
Roberts, E. (2001). An overview of MiniJava. Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education (s. 1-5). North Carolina: Association for
Computing Machinery.
Robins, A., Rountree, J., & Rountree, N. (2003). Learning and Teaching Programming: A Review and Discussion. Computer Science Education, 137-172.
Rossum, G. V. (2017, 08 10). Computer Programming for Everybody. Python: https://www.
python.org/doc/essays/cp4e/ adresinden alındı
Vujosevic-Janicic, M., & Tosic, D. (2008). The Role of Programming Paradigms In The First
Programming Courses. The Teaching of Mathematics, 63-83.
Weintrop, D., & Wilensky, U. (2015). To block or not to block, that is the question: students’
perceptions of blocks-based programming. IDC ‘15 Proceedings of the 14th International
Conference on Interaction Design and Children (s. 199-208). New York: Association for
Computing Machinery.
Wing, J. M. (2006). Computational Thinking. Communications of the ACM, 33-35.
Winthrop, R., & McGivney, E. (2016). Skills for a Changing World: Advancing Quality Learning
for Vibrant Societies. LEGO Foundation.
Xuelian, H. (2009). The design, implementation and application of MiniJava/AD as an objectoriented compiler teaching model. 4th International Conference on Computer Science &
Education (s. 1488-1491). IEEE.