Programlama Sanatı
Programlama sanatı, kod yazmanın ötesine geçer. Düşünme sürecimizi, problem çözme yaklaşımımızı ve dünya üzerinde yarattığımız etkiyi içerir. Programlama, fikirleri hayata geçiren ve kendimizi teknoloji aracılığıyla ifade etmemizi sağlayan yaratıcı bir dildir. Bizi yenilikçi düşünmeye, alışılmadık çözümler bulmaya ve dünya ve kendimize ilişkin anlayışımızı genişletmeye zorluyor. Bu video, temel sözdizimi ve veri yapılarından gelişmiş algoritmalara ve programlama paradigmalarına kadar temel programlama kavramlarını araştırıyor. Hadi başlayalım.
Kod düzenleme söz konusu olduğunda, iki ana araç türü vardır: metin editörleri ve IDE'ler. Metin editörleri düz metni düzenlemeye odaklanırken, IDE'ler ek özellikler sağlar. Bununla birlikte, çoğu amaç için, ikisi arasındaki fark çok önemli değildir ve terimler birbirinin yerine kullanılabilir. Metin editörleri ve IDE'ler için popüler seçenekler arasında Vim, Atom, Sublime Text, Eclipse, IntelliJ, PyCharm ve Visual Studio Code bulunur. Özellikle Visual Studio Code, son derece özelleştirilebilir ve yaygın olarak önerilir.
Kodu çalıştırmak için, onu bilgisayarların anladığı makine kodunda derlememiz gerekir. Bu, bir dil derleyicisi veya çalışma zamanı kurulmasını gerektirir. GCC, Java SDK, Python yorumlayıcısı, Node.js çalışma zamanı ve .NET SDK gibi farklı dillerin kendi derleyicileri veya çalışma zamanları vardır. Bu araçların ayrıntılarını anlamak gerekli değildir; tüm bilmeniz gereken, kodunuzu çalıştırmak için bir dil yüklemektir.
Çalışan kod, komut satırı arayüzüne erişim sağlayan terminalin kullanılmasını içerir. Yaygın olarak kullanılan terminaller arasında Powershell ve Bash bulunur. Terminal, dizin oluşturma, dosyaları listeleme ve programları çalıştırma gibi komutları yürütmemize izin verir. Node.js için npm ve Python için pip gibi paket yöneticileri, komut satırı aracılığıyla havuzlardan yazılım yüklemek için kullanılabilir. Bir sürüm kontrol sistemi olan Git, kod değişikliklerini yönetmek ve başkalarıyla işbirliği yapmak için gereklidir.
Kodlamaya başlamak için uygun bir metin düzenleyiciye veya IDE'ye, bir dil derleyicisine ve temel terminal komutları bilgisine ihtiyacınız vardır. Visual Studio Code, bir metin düzenleyici veya IDE için önerilen bir seçimdir. Bir programlama dili kurmak ve kendinizi terminal komutlarına alıştırmak, kod yazmanızı ve çalıştırmanızı sağlayacaktır. Programlama dillerini öğrenmek, sözdizimlerini, ortamlarını ve kurallarını anlamayı içerir. Farklı diller değişen karmaşıklık seviyelerine sahiptir, ancak hepsi yapı ve kavramlarda benzerlikler paylaşır.
Farklı programlama dillerinde yazdırma çıktısı, her dile özgü işlevler veya yöntemler kullanılarak yapılabilir. Örneğin, Python'da yerleşik yazdırma işlevi vardır, JavaScript'te console.log yöntemi vardır ve Java ve C++ standart çıktıya yazdırmak için kendi sözdizimine sahiptir.
Değişkenler, farklı veri türlerinin değerlerini depolamak için kullanılır. Değişkenler beyan edilir, tanımlanır ve değerlerle başlatılır. Programlama dilleri statik veya dinamik olarak yazılabilir ve değişkenler için farklı sözdizimlerine sahiptir. Statik yazma, değişken türünün açık bildirimini gerektirirken, dinamik yazma gerektirmez. Değişkenlerin, bir programda onlara nereden erişilebileceğini ve kullanılabileceğini belirleyen kapsamı vardır. Kapsam küresel veya yerel olabilir ve daha iyi organizasyona ve hataların önlenmesine olanak tanır.
Veri türleri, dizeler, mantıksal değerler, tamsayılar, kayan noktalı sayılar, karakterler ve diziler gibi farklı veri türlerini temsil eder. Veri yapıları, verileri düzenlemek ve işlemek için bir yol sağlar. Popüler veri yapıları dizileri, yığınları, yığınları, ağaçları, bağlantılı listeleri, karma tabloları, karma haritaları ve grafikleri içerir. Diziler ve haritalar, çeşitli uygulamalarla yaygın olarak kullanılan iki veri yapısıdır.
Özetle programlama, düşünmeyi, problem çözmeyi ve kod aracılığıyla dünyayı şekillendirmeyi kapsayan bir sanattır. Metin editörlerini veya IDE'leri kullanmayı, derleyiciler veya çalışma zamanları aracılığıyla kod çalıştırmayı ve terminal komutlarını ve sürüm kontrolünü anlamayı içerir. Programlama dillerini öğrenmek, sözdizimini, değişkenleri, veri türlerini ve veri yapılarını kavramayı gerektirir. Video, programlama yolculuğunuza başlamanız için bu kavramlara üst düzey bir genel bakış sağlar.
- 2023.05.11
- www.youtube.com
Yazılım Yazma Sanatı
Bilgisayarlar, müzik enstrümanları gibi, aldıkları talimatlara göre belirli görevleri yerine getirmek için tasarlanmış, titizlikle hazırlanmış makinelerdir. Kodlanmış bu talimatlar, operasyonlarına rehberlik eden yazılımlardır. Müzik notalarının besteciler tarafından kullanılan kod olması gibi, bilgisayar programcıları da program oluşturmak için yazılım kodunu kullanır.
Programlama, şairlerin veya müzisyenlerin yaşadığı duygulara benzer bir neşe ve tatmin kaynağı olabilir. İlk bilgisayarlar, problem çözme ve karmaşıklıktan hoşlananlar için büyüleyici ve güçlendiriciydi. Şaşırtıcı hızlarda çalışıyorlar ve bilgisayarın yerel komutları kullanılarak ifade edildikleri sürece çok çeşitli sorunları çözebiliyorlardı. Ancak, bilgisayarlar doğası gereği aptaldır ve ne yapacaklarını anlamak için kesin talimatlar gerektirir. İlk programcılar, ikili komutları temsil eden sayıları kullanarak makine dili yazmak zorundaydı. Bu süreç sıkıcı ve hataya açıktı, bu da daha insan dostu programlama dillerinin geliştirilmesine yol açtı.
Fortran ve COBOL gibi daha yüksek seviyeli dillerin tanıtılması, programlamayı daha erişilebilir hale getirdi. Programcılar, kendilerine anlamlı gelen tanıdık bilimsel formüller veya mantıksal ifadeler kullanarak talimatlarını ifade edebilirler. Daha sonra bu talimatları bilgisayarın ikili diline çevirmek için derleyiciler kullanıldı. Programcıların artık her bilgisayarın belirli makine dilini öğrenmesi gerekmediği için, bu atılım yazılım devriminin önünü açtı.
Yıllar boyunca, farklı ihtiyaçları karşılamak için yüzlerce programlama dili geliştirilmiştir. Bu diller ile makine dili arasındaki uçurum genişledi ve programcıların alt düzey ayrıntılar yerine elde etmek istedikleri şeye odaklanmalarına olanak sağladı. Bilgi işlem daha kişisel hale geldikçe, programlama dilleri daha çeşitli ve kullanıcı dostu hale geldi. İnsanlar artık ortalamaları hesaplamak veya verileri düzenlemek gibi ne yapacaklarını söyleyerek bilgisayarlarla rutin bir şekilde iletişim kuruyor. Programlama, bilgisayar sistemlerini ihtiyaçlarına göre özelleştirmelerine ve uyarlamalarına izin vererek, bireyleri güçlendiren bir araç haline geldi.
Yazılım yazmak sadece kodlamayı değil aynı zamanda verilerin nasıl temsil edildiğini ve organize edildiğini tanımlamayı da içerir. Veriler, gereksinimlere bağlı olarak dizeler, listeler, tablolar, ağaçlar ve daha fazlası şeklinde düzenlenebilir. Dil seçimi ve veri yapısı, programlama problemlerini etkili bir şekilde çözmede çok önemlidir. Programcılar, sorunları çözmek için algoritmalar olarak bilinen adım adım prosedürler oluştururlar. Bu algoritmalar, istenen sonuçlara ulaşmak için gereken işlemleri belirtir. Bununla birlikte, belirli bir problem için en verimli algoritmayı bulmak karmaşık bir görev olabilir. Özel alanlarda dikkatli düşünme, konsantrasyon ve bazen kapsamlı bilgi gerektirir.
Yazılım geliştirme, aynı anda birçok yönü akılda tutmayı gerektiren zorlu ve yaratıcı bir çabadır. Programcılar, bilgisayarların başarabileceklerinin sınırlarını zorlayarak teknolojideki gelişmelere sürekli uyum sağlar. Hem işlevsel hem de estetik açıdan hoşa giden yazılımlar yaratarak kodlarında zarafet ve tutarlılık için çabalarlar. Çabaları sayesinde, yazılım programcıları yeteneklerimizi genişleterek, çok miktarda bilgiyi kullanmamıza ve dünyayla bir zamanlar büyülü olarak kabul edilen şekillerde etkileşime girmemize olanak sağladı. Programlama, bilgisayarları çalıştırmanın ve bugün içinde yaşadığımız yüksek teknoloji dünyasını şekillendirmenin arkasındaki itici güçtür.
- 2014.11.17
- www.youtube.com
Yeni Başlayanlar İçin C++ Eğitimi - Tam Kurs
Yeni Başlayanlar İçin C++ Eğitimi - Tam Kurs
00:00:00 - 01:00:00 Bu video, C++ ile nasıl kod yazılacağını öğrenmek isteyen yeni başlayanlar için bir öğreticidir. Dizeler, sayılar ve değişkenlerle çalışmanın temellerini kapsar. Ayrıca, diğer dosyalardan kod içe aktarma kavramını da tanıtır.
01:00:00 - 02:00:00 Yeni başlayanlar için bu C++ öğreticisi, dört işlevli bir hesap makinesinin nasıl oluşturulacağını kapsar. Öğretici, verilerin nasıl girileceğini, operatör eşitliğinin nasıl kontrol edileceğini ve bu koşula göre kodun nasıl yürütüleceğini açıklar.
02:00:00 - 03:00:00 Bu video, belirli bir sonucu hesaplamak için for döngülerini kullanmaya odaklanarak, C++ programlamaya temel bir giriş sağlar. Gösterilen işlev, belirli bir kuvvete yükseltilmiş bir sayının sonucunu hesaplar.
03:00:00 - 04:00:00 Yeni başlayanlar için bu C++ eğitiminde eğitmen, bir sınıf hiyerarşisinde işlevselliği genişletmek için kalıtımın nasıl kullanılacağını gösterir. Kalıtım, bir sınıfın başka bir sınıfla aynı işlevselliğe sahip olmasına izin verirken, bu işlevselliği ek özelliklerle genişletir. Eğitmen ayrıca, bir sınıfın davranışını değiştirmek için miras alınan işlevlerin nasıl geçersiz kılınacağını da gösterir.
Bölüm 1
- 00:00:00 Bu eğitim videosu yeni başlayanlara temel c++ kodunun nasıl yazılacağını öğretir. İlk adım, her ikisi de codeblocks paketinde bulunan bir metin düzenleyici ve bir c++ derleyici kurmaktır. Ardından öğretici, kod bloklarında basit bir projenin nasıl kurulacağını gösterir.
- 00:05:00 Bu öğretici, C++ programlama diline ve C++ programlarını yazmak ve çalıştırmak için gereken araçlara kısa bir giriş sağlar. Öğreticinin ilk bölümü, bir Mac'te gerekli araçların nasıl kurulacağını gösterir ve ikinci bölüm, kod bloklarında yeni bir C++ projesinin nasıl oluşturulacağını kapsar.
- 00:10:00 Bu eğitim videosunda, sunum yapan kişi bir c++ programı yazmanın temellerini anlatıyor. Bir c++ projesi ve dosyası ihtiyacını ele alıyor, işlevleri açıklıyor ve bir programın nasıl oluşturulup çalıştırılacağını gösteriyor.
- 00:15:00 Bu öğretici, C++'da temel kodun nasıl yazılacağını ve bilgileri konsola çıkarmak için print deyimlerinin nasıl kullanılacağını açıklar.
- 00:20:00 Bu videoda sunum yapan kişi, bir hikayeyi yazdıran bir program örneği sağlayarak değişkenlerin programlamada ne kadar yararlı olduğunu gösteriyor. Sunum yapan kişi daha sonra, karakterin adını saklayan "karakter adı" adlı bir değişkenin nasıl oluşturulacağını ve bu değişkene nasıl değer atanacağını gösterir. Daha sonra sunum yapan kişi, karakterin yaşını saklayan "yaş" adlı bir değişkenin nasıl oluşturulacağını ve ona bir değer atanacağını gösterir. Son olarak sunum yapan kişi, birden çok veri parçasını depolamak için bir değişkenin nasıl kullanılacağını gösterir.
- 00:25:00 Bu videoda sunum yapan kişi değişken kavramını tanıtıyor ve bir programda veri depolamak için bunların nasıl kullanılacağını gösteriyor. Print deyimlerini kullanarak değişkenlerde saklanan verilere nasıl erişileceğini ve bu verilere nasıl müdahale edileceğini gösterirler. Son olarak, verilerin ayrı bir dizgede yazdırılması için bir print deyiminin içine bir değişkenin nasıl dahil edileceğini gösterirler.
- 00:30:00 Bu video, C++'da değişken kavramını ve veri türlerini tanıtıyor. Değişken, verileri depolayan bir kapsayıcıdır ve onu her türlü bilgiyi depolamak için kullanabilirsiniz. Dizeler yaygın bir değişken türüdür ve bir karakter dizisidir. Tam sayıları depolamak için tam sayıları veya negatif sayıları depolamak için negatif tam sayıları da kullanabilirsiniz. Tamsayılarda ondalık sayıları da saklayabilirsiniz.
- 00:35:00 Bu eğitim, C++ ile programlamanın temellerini, basit metin ve sayılardan başlayarak ve dizeler ve mantıksal değerler gibi daha karmaşık veri türlerine geçerek kapsar.
- 00:40:00 Bu video, dizeleri yazdırmak ve bir dizideki belirli karakterlerin konumunu belirlemek için C++ dize işlevlerinin uzunluk ve dize indekslemenin nasıl kullanılacağını ve bir dizedeki belirli karakterlerin nasıl değiştirileceğini kapsar.
- 00:45:00 Video, işlevlere bağımsız değişkenlerin nasıl iletileceği ve dizeleri işlemek için farklı matematiksel işlevlerin nasıl kullanılacağı da dahil olmak üzere C++'da dizelerle çalışmanın temellerini kapsar.
- 00:50:00 Bu C++ eğitiminde, sayıların temelleri, toplama, çıkarma, çarpma ve bölme işlenir. Ayrıca, iki sayıyı bölmek ve kalanı hesaplamak için yararlı olan modül operatörü de tanıtılmaktadır. Son olarak, sayıların değişkenlerde saklanması gösterilmiştir.
- 00:55:00 Yeni başlayanlar için bu C++ öğreticisi, problemleri çözmek için matematik işlevlerinin nasıl kullanılacağını açıklar. İşlevler arasında karekök, pow ve yuvarlak bulunur. Diğer dosyalardan kod içe aktarma da açıklanmaktadır.
Bölüm 2
- 01:00:00 Yeni başlayanlar için bu C++ eğitiminde, kullanıcıdan yaşını ve adını girmesi istenir. Program daha sonra bilgileri yaş adı verilen bir değişkende saklar ve kullanıcının adını ve yaşını yazdırır.
- 01:05:00 Bu video eğitimi, c++'da temel bir hesap makinesinin nasıl oluşturulacağını ve bir Mad Libs oyununun nasıl oluşturulacağını gösterir.
- 01:10:00 Bu video, C++'da dizilerin nasıl oluşturulacağını ve kullanılacağını açıklar. Diziler değişkenlere benzer, ancak birden çok değer tutabilir.
- 01:15:00 Bu eğitim videosu, C++'daki dizilerin temellerini açıklıyor. Dizi, birden çok veri parçasını depolayabilen bir kapsayıcıdır ve tek tek öğelere dizine göre veya dizinin "size" özelliğine bir değer atayarak erişebilirsiniz.
- 01:20:00 Bu öğreticide yazar, C++'da bir işlevin nasıl oluşturulacağını gösterir. İşlev, belirli bir görevi gerçekleştiren ve bir program boyunca yeniden kullanılabilen bir kod bloğudur. İşlevin dönüş türü, geçersiz veya bir tamsayı olabilir. Yazar ayrıca bir işlevin nasıl çağrılacağını da gösterir.
- 01:25:00 Bu videoda yazar, fonksiyonların nasıl çalıştığını ve nasıl yeniden kullanılabileceğini açıklıyor. Ayrıca, bir işlev imzasının nasıl oluşturulacağını ve imzasını kullanarak bir işlevin nasıl çağrılacağını gösterir. Son olarak, bir fonksiyonun arayana bilgi döndürmesi olan c++'daki dönüşleri tartışıyor.
- 01:30:00 Video, C++'da işlevlerin nasıl oluşturulacağını ve işlevin yürütülmesinin bittiğini belirtmek için dönüş anahtar sözcüğünün nasıl kullanılacağını tartışır. Video ayrıca, bir sayının kübünün sonucunu döndürmek için küp işlevinin nasıl kullanılacağını gösterir.
- 01:35:00 Bu eğitimde, yazar yeni başlayanlara C++'daki if ifadesini öğretiyor. Bir if ifadesi, bir programın farklı durumlara yanıt vermesine izin veren bir programlama yapısıdır. Yazar, koşulları kontrol etmek için bir if ifadesinin nasıl kullanılacağını ve daha karmaşık if ifadelerinin nasıl oluşturulacağını gösterir.
- 01:40:00 Bu eğitim videosu, iki koşulu kontrol etmek için C++'da ve ve veya işleçlerinin nasıl kullanılacağını açıklar. Koşullardan herhangi biri yanlışsa, if bloğunun tamamı yanlış olur ve kod yürütülmez.
- 01:45:00 Bu eğitimde yazar, yeni başlayanlara if ifadelerini öğretir ve karşılaştırmaların doğru veya yanlış değerler oluşturmak için nasıl kullanılacağını açıklar. İşlev, girdi olarak iki sayı alacak ve en büyüğünü döndürecektir.
- 01:50:00 Bu video, C++'da karşılaştırmaların nasıl çalıştığını ve iki sayının eşit veya büyük veya eşit olup olmadığını kontrol etmek için büyük, küçük ve eşittir'in nasıl kullanılacağını açıklar.
- 01:55:00 Yeni başlayanlar için bu C++ öğreticisi, dört işlevli bir hesap makinesinin nasıl oluşturulacağını öğretir; buna veri girişi, operatör eşitliğini kontrol etme ve bu koşula dayalı olarak kod yürütme dahildir.
Bölüm 3
- 02:00:00 Bu eğitim videosunda, bir tamsayıyı haftanın bir gününe dönüştürme işlevi gösterilmektedir. Fonksiyon oluşturulur ve verilen gün sayısının bir mi yoksa daha büyük mü olduğunu belirlemek için bir if ifadesi kullanılır. Bir ise, işlev "Pazar" döndürür; bir değilse işlev "Pazartesi" değerini döndürür.
- 02:05:00 Bu video, bir if ifadesindeki kodu daha verimli hale getirmek için bir switch ifadesinin nasıl kullanılabileceğini açıklıyor. Video, haftanın her günü için bir switch deyiminin nasıl oluşturulacağını açıklamaya devam ediyor ve giriş olarak iletilen bir sayı için haftanın gününü yazdırarak işlevi gösteriyor.
- 02:10:00 Bu video, "Yeni Başlayanlar İçin C++ Eğitimi - Tam Kurs" videosuna genel bir bakış sunar. Video, bir koşul karşılanırken bir kod bloğunu yinelemek için while döngüsünün nasıl kullanılacağını gösterir.
- 02:15:00 Yeni başlayanlar için bu C++ öğreticisi, while döngüsünün ve do while döngüsünün nasıl oluşturulacağı da dahil olmak üzere döngülerin temellerini kapsar. Video ayrıca sonsuz bir döngüyü ve bunlardan nasıl kaçınılacağını tartışıyor. Son olarak, bir for döngüsü gösterilmiştir.
- 02:20:00 Bu öğretici, bir while döngüsü ve bir do while döngüsü kullanarak bir tahmin oyununun nasıl oluşturulacağını gösterir. Oyun, kullanıcının sınırsız tahmin alması anlamında başlangıçta adil değildir, ancak öğretici, bir tahmin sınırı uygulayarak oyunun nasıl daha adil hale getirileceğini gösterir.
- 02:25:00 Yazar bu videoda for döngülerinin nasıl çalıştığını ve C++'da nasıl kullanılabileceğini anlatıyor. Ayrıca bir sorunu çözmek için for döngülerinin nasıl kullanılabileceğine dair bir örnek gösteriyor.
- 02:30:00 Bu videoda yazar, her çalıştırıldığında bir değişkenin değiştiği bir döngü yapısı olan while döngüsünü açıklıyor. For döngüsü benzer bir yapıdır, ancak bir değişken bildirimi, başlatma ve döngü koşulu içerir.
- 02:35:00 Bu eğitim videosu, dizilerin içeriklerini yinelemek için for döngülerinin nasıl kullanılacağını ve bir sayının belirli bir kuvvetini alan bir işlevin nasıl oluşturulacağını gösterir.
- 02:40:00 Bu eğitim videosu, belirli bir sonucu hesaplamak için for döngülerini kullanmaya odaklanarak, C++ programlamaya temel bir giriş sağlar. Gösterilen işlev, belirli bir kuvvete yükseltilmiş bir sayının sonucunu hesaplar.
- 02:45:00 Bu öğreticide yazar, iki boyutlu bir dizinin nasıl oluşturulacağını ve kullanılacağını gösterir ve içindeki öğelere nasıl erişileceğini tartışır.
- 02:50:00 Bu eğitim videosu, C++ dilini tanıtır ve veri dizileri arasında döngü oluşturmak için for ve int yineleyicilerin nasıl kullanılacağını gösterir. Yuvalanmış for döngüleri, diziler içindeki verilerin kolayca yinelenmesine izin verir.
- 02:55:00 Bu videoda işaretçinin ne olduğu, nasıl yararlı olduğu ve C++'da nasıl oluşturulacağı açıklanmaktadır.
4. Bölüm
- 03:00:00 Bu video, bilgileri depolamak için değişkenlerin ve sabitlerin nasıl kullanılacağına ilişkin örneklerle C++ programlamaya yeni başlayanlar için uygun bir giriş sağlar. Video ayrıca, içlerinde depolanan bilgileri almak için bellek adreslerine nasıl erişileceğini de gösterir.
- 03:05:00 Bu video, "Yeni Başlayanlar İçin C++ Eğitimi - Tam Kurs" videosuna genel bir bakış sunar. Videoda sunum yapan kişi, işaretçiler kullanarak değişkenlerin bellek adreslerine nasıl erişileceğini gösterir. Bir işaretçi, yalnızca bir veri türü olan bir bellek adresidir ve onu farklı bir değişkene bir işaretçi depolamak için kullanabilirsiniz.
- 03:10:00 Bu öğretici, programlamada işaretçilerin nasıl kullanılacağını açıklar ve belirli bir bellek adresinde saklanan değere erişmek için işaretçilerin referanslarının nasıl kaldırılacağını gösterir. Ek olarak, öğretici, c++'daki sınıfları ve nesneleri tartışır ve bir sınıfın nasıl oluşturulacağını ve kullanılacağını gösterir.
- 03:15:00 Yeni başlayanlar için bir c++ öğreticisi olan bu videoda yazar, kitapları temsil edecek bir sınıf oluşturuyor. Sınıfın iki özelliği vardır, başlık ve yazar. Yazar daha sonra bir kitap nesnesi oluşturur ve başlığı ve yazarı ayarlar.
- 03:20:00 Bu video, yeni başlayanlara C++'da nesneler oluşturmayı ve bunlarla çalışmayı öğretir. Bir nesne, bir sınıfın gerçek bir örneğidir ve bir sınıf, bir veri türü için şablondur. Nesneler yazdırılabilir ve değerleri değiştirilebilir.
- 03:25:00 Bu video, Oluşturucuların C++'da nasıl çalıştığını ve nesneleri varsayılan değerlerle başlatmak için nasıl kullanılabileceğini açıklar.
- 03:30:00 Bu video eğitimi, başlık, yazar ve sayfaları giriş değerleri olarak kabul eden bir C++ oluşturucusunun nasıl oluşturulacağını açıklar. Başlatıldıktan sonra yapıcı, her seferinde değerleri geçmek zorunda kalmadan yeni bir nesne oluşturmak için kullanılabilir.
- 03:35:00 Bu video, bir öğrencinin onur sahibi olup olmadığını belirlemek için C++'daki işlevlerin nasıl kullanılacağını açıklar. İşlevler, her nesnenin, nesnenin kendi GPA'sına bağlı olarak doğru veya yanlış döndürmek için kullanabileceği şablonlardır.
- 03:40:00 Bu video yeni başlayanlara c++ derslerinde alıcı ve ayarlayıcıların nasıl kullanılacağını öğretecek. Alıcılar ve ayarlayıcılar, sınıflarınızdaki özniteliklere ve öğelere erişimi kontrol etmenize olanak tanır. Bu örnek, alıcılar ve ayarlayıcılar kullanılarak bir film için geçerli bir derecelendirmenin nasıl uygulanacağını gösterir.
- 03:45:00 Yeni başlayanlar için bu C++ eğitiminde yazar, bir film nesnesine atanabilecek derecelendirmeleri kısıtlamak için alıcıların ve ayarlayıcıların nasıl kullanılacağını gösterir. Girilen derecelendirme geçerli derecelendirmelerden biri değilse, bir hata verilir veya derecelendirme ayarlanmaz.
- 03:50:00 Bu videoda yazar, C++ kullanarak videolar için derecelendirmelerin nasıl ayarlanacağını açıklıyor. İlk olarak, derecelendirmelerin 13 gibi pozitif bir değere veya -3 gibi negatif bir değere eşit olmasıyla C++'da nasıl temsil edildiğini açıklarlar. Ardından, derecelendirme ayarla adlı bir işlevi kullanarak bir video için derecelendirmenin nasıl ayarlanacağını gösteriyorlar. Bu işlev, derecelendirmeyi temsil eden bir dize olan bir parametre alır. Girilen derecelendirme geçersizse işlev, derecelendirilmemiş derecelendirmeyi temsil eden bir dizi döndürür. Son olarak yazar, derecelendirme al adlı bir işlevi kullanarak bir video için derecelendirmenin nasıl yazdırılacağını gösterir. Bu işlev hiçbir parametre almaz ve yalnızca videonun derecelendirmesini döndürür.
- 03:55:00 Yeni başlayanlar için bu C++ eğitiminde eğitmen, işlevlerin nasıl devralınacağını ve bir sınıf hiyerarşisinde bunların nasıl geçersiz kılınacağını gösterir. Bu, bir sınıfın başka bir sınıfla aynı işlevselliğe sahip olmasına izin verirken, bu işlevselliği ek özelliklerle genişletir.
- 2018.08.24
- www.youtube.com
Programlamaya ve Bilgisayar Bilimine Giriş - Tam Kurs
Programlamaya ve Bilgisayar Bilimine Giriş - Tam Kurs
Bu video, kodlama konusunda çok az bilgisi olan veya hiç olmayanlar için programlama ve bilgisayar bilimlerine yeni başlayanlar için bir kılavuzdur. Herhangi bir programlama dili için geçerli olan temel kavramları ve teknikleri kapsar. Video, entegre bir geliştirme ortamında (IDE) kod yazmanın temellerini açıklıyor ve programlama dilbilgisinin önemini vurguluyor.
Videoda ele alınan konular şunlardır:
- Sözdizimi ve programlama kuralları da dahil olmak üzere programlama ve bilgisayar bilimine giriş.
- Bir programdan metin çıktısı almak için konsolu kullanma.
- Programlamada temel matematik işlemleri ve modül operatörü.
- Dizeleri konsola yazdırma.
- Değişkenleri, veri türlerini ve adlandırma kurallarını anlama.
- Programlarda değişkenlerin nasıl tanımlandığı, referans alındığı ve manipüle edildiği.
- Koşullu çalıştırma için if deyimlerini, elsif deyimlerini ve else deyimlerini keşfetme.
- İlişkili değişkenleri depolamanın bir yolu olarak dizilerle tanışın.
- for döngüleri, while döngüleri ve do-while döngüleri dahil olmak üzere döngülerin temelleri.
- Farklı türde programlama hatalarını anlama: sözdizimi hataları, çalışma zamanı hataları ve mantık hataları.
- Yazdırma deyimlerini, kesme noktalarını ve açıklamaları kullanma gibi hata ayıklama teknikleri.
- Programlamada hatalardan kaçınma stratejileri.
- Kodu düzenlemek ve tekrarı azaltmak için işlevlerle çalışma.
- Kitaplıklardan işlevleri içe aktarma ve işlevler için adlandırma kuralları.
- Farklı işlev türleri ve amaçları.
- Esnek bir veri depolama seçeneği olarak sözlüklere giriş.
- Doğrusal arama ve ikili arama dahil olmak üzere arama algoritmalarına genel bakış.
- Özyinelemeli programlama ve temel durum konsepti dahil olmak üzere kullanım durumları.
- Bilgisayar bilimi için problem çözme ve planlama gibi sosyal beceriler.
- Kod yazmak için bir planlama aracı olarak sözde kodu kullanma.
- Akış şemaları ve kronolojik planlama dahil olmak üzere planlama ve kod yazma için farklı yöntemler.
- Programlama dillerine ve öğrenim için mevcut kaynaklara genel bakış.
Video, programlama ve bilgisayar bilimlerine kapsamlı bir giriş sunarak izleyicilere kodlama yolculuklarına başlamaları için gerekli temeli sunar. Ayrıca konuyu daha fazla keşfetmek için ek kaynaklar ve web siteleri önerir.
- 00:00:00 Bu video, bilgisayar bilimi ve programlama ile ilgilenen ancak nereden başlayacağı konusunda hiçbir fikri olmayan ve kodlama hakkında çok az veya hiç bilgisi olmayan kişiler için hazırlanmış videonun ana noktalarını kapsar. Video, öğrenmek isteyebileceğiniz tüm programlama dillerine uygulanabilen bilgisayar programlamanın temellerini kapsar.
- 00:05:00 Bu videoda programlamanın temelleri, tümleşik geliştirme ortamında (IDE'ler) kod yazma ve programlama gramerinin önemi ele alınmaktadır.
- 00:10:00 Bu video, programlama ve bilgisayar bilimini tanıtır ve sözdizimi ve programlama kurallarının temellerini kapsar. Konsolun ana kullanımı, programdan metin çıktısı almaktır.
- 00:15:00 Bu video, aritmetik, toplama, çıkarma, çarpma ve bölme dahil olmak üzere temel matematiği ve ayrıca birçok programlama dilinde temel bir operatör olan modülü kapsar. Ayrıca konsola yazdırma dizelerini de kapsar.
- 00:20:00 Bu video, değişkenler, türler ve adlar da dahil olmak üzere programlama ve bilgisayar bilimi kavramlarını tanıtır. İlkel değişkenler arasında tamsayılar, Boolean'lar, değişkenler ve çiftler bulunur. Dize değişkenleri karakter dizilerini saklar. Char değişkenleri bir karakter tutar. Değişkenler, bilgileri kolayca başvurulabilecek bir biçimde depolamak için gereklidir.
- 00:25:00 Bu video, değişkenleri tanımladığımızda veya yarattığımızda ne olduğunu, onlara nasıl başvuracağımızı ve programlarımız için onları nasıl değiştireceğimizi tartışıyor. Çıkarılması gereken ana noktalar, değişkenlerin bellekte belirli bir değeri depolayan boşluklar olduğu ve sayıları güncelleyebileceğimiz ve yerlerinin kod boyunca sabit kalacağıdır.
- 00:30:00 Değişken, programlama sırasında bilgi depolayabileceğiniz bir yerdir. Değişkenler için adlandırma kuralları okunabilirlik açısından önemlidir. Bir if ifadesindeki bir koşul doğruysa, süslü parantez içindeki kod çalışır. if ifadelerine benzer şekilde çalışan elsif ve eltons olmak üzere iki ek ifade vardır. Elsif'teki koşul doğruysa, elsif'ten sonraki kod çalışır. Aksi takdirde, elsif'ten sonraki kod
atlanacak Elsif'teki koşul doğru değilse, elsif'ten sonraki kod atlanır ve if ifadesinden sonraki kod çalışır. - 00:35:00 Dizi, birbiriyle ilişkili değişkenlerin listesidir. Bir programcı, birbiriyle ilişkili bilgileri içeren birçok değişkeni depolamak istediğinde kullanışlıdır.
- 00:40:00 Programlama ve bilgisayar bilimlerine giriş dersi, dizileri, dizinleri, boyutu ve dizilerin içindeki dizileri kapsar. Döngüler de kaplıdır.
- 00:45:00 Bu video, for, while ve do while döngüleri gibi farklı döngü türlerini kapsar. Bir döngü için nasıl koşul oluşturulacağını ve sonsuz bir döngüden nasıl kaçınılacağını açıklar.
- 00:50:00 Bu video, programlama sırasında meydana gelebilecek üç tür hatayı ele alır: sözdizimi hataları, çalışma zamanı hataları ve mantık hataları. Sözdizimi hataları, düzeltilmesi en kolay olanlardır, çünkü bunlar genellikle saniyeler içinde düzeltilebilecek şeylerdir. Çalışma zamanı hataları, kodunuzdaki mantıksal olarak sağlam görünen ancak bilgisayarın fiziksel olarak görevi makul bir süre içinde tamamlamasının hiçbir yolu olmayan ifadelerden kaynaklanır. Mantık hataları, çoğu zaman programların istendiği gibi çalışmamasına yol açabileceklerinden hata ayıklaması en sinir bozucu ve zor olanlardır. Kodunuzun hatalarını ayıklamak için aşamalı olarak test etmeli ve sözdizimi ve çalışma zamanı hatalarını aramalısınız.
- 00:55:00 Kodunuzda bir hatayla karşılaşıyorsanız, kodun nerede yanlış gittiğini belirlemek için print deyimlerini ve konsolu kullanabilir, hatanın nedenini bulmak için kesme noktalarını kullanabilir ve işaretlemek için yorumları kullanabilirsiniz. bilgisayar için değil, sizin için tasarlanmış kod. Son olarak, hatalardan kaçınma stratejileri tartışılmaktadır.
- 01:00:00 Bu videoda eğitmen, hatalar ve fonksiyonlar da dahil olmak üzere programlama ve bilgisayar biliminin temellerini ele alır. Argümanların bir işlevde nasıl çalıştığını ve kodda tekrarı azaltmak için işlevlerin nasıl kullanılacağını açıklamaya devam ediyor.
- 01:05:00 Programlama ve bilgisayar bilimine giriş niteliğindeki bu video, dört farklı işlev türünü, bunların amaçlarını ve bunları kodunuzda nasıl kullanacağınızı tartışıyor. İşlevler, kodu düzenlemek, zamandan tasarruf etmek ve tüm programı gözden geçirmek zorunda kalmadan kodda büyük değişiklikler yapmak için yararlı olabilir.
- 01:10:00 Bu videoda programlama ve bilgisayar biliminin temelleri tanıtılıyor. Kitaplıklardan işlevlerin içe aktarılması açıklanır ve işlevleri adlandırma kuralları tartışılır. Bağımsız değişkenlerin türüne ve sayısına dayalı işlevler oluşturma kuralları da tanıtılmaktadır.
- 01:15:00 Bu videoda eğitmen, programlama ve bilgisayar biliminin temellerini, fonksiyonlar, kapsam ve argüman iletme de dahil olmak üzere açıklıyor. Ayrıca, herhangi bir değer döndürmeyen işlevlerin nasıl oluşturulacağını da kapsar.
- 01:20:00 Bu videoda sunum yapan kişi dizileri, işlevleri ve sözlükleri inceliyor. Diziler, birlikte depolanan değer listeleri gibidir ve işlevler, alınan yola bağlı olarak bir değişken döndürür. Unutulmaması gereken küçük bir ayrıntı, işlevi zaten başka bir tür döndürecek şekilde tanımladıysanız, bir tür değişken döndüremeyeceğinizdir. Dizi listeleri, liste boyutu 10 öğeyi aştığında kendiliğinden büyür ve sözlükler birden fazla değer depolar.
- 01:25:00 Bir bilgisayar, verileri anlaşılması zor olabilen farklı şekillerde depolar. Sözlük, geleneksel dizilerden daha akıcı ve düzenlenmesi daha kolay olan bir veri depolama türüdür. Arama algoritmaları, bir değerler listesindeki belirli bir veri parçasını hızlı bir şekilde bulmak için kullanılır.
- 01:30:00 Bu video, arama algoritmaları kavramını ve verimliliklerini tanıtıyor. Doğrusal arama, sıralanmamış listeler için iyi bir temel algoritmadır, ancak en kötü senaryoda verimsizdir. İkili arama, listenin sıralanmış olmasından yararlanan, sıralanmış listeler için etkili bir arama algoritmasıdır.
- 01:35:00 İkili arama algoritması, sıralanmış bir listede bir öğe bulmak için doğrusal aramadan daha hızlı ve daha verimlidir. Özyinelemeli işlev, özyinelemeli bir programlama ifadesinin bir örneğidir. Özyinelemeli bir ifade için temel durum, tüm özyinelemeli ifadelerin karşılaması gereken kesin bir değerdir. n, birden küçük veya ona eşit değilse, özyinelemeli ifade n'nin toplamını ve ardından özyinelemeli toplam yönteminin dönen değeri eksi bir döndürür.
- 01:40:00 Bu video programlamayı ve bilgisayar bilimini tanıtıyor ve özyinelemenin neden yararlı bir teknik olduğunu açıklıyor. Bilgisayar bilimi için gerekli olan sosyal beceriler, problem çözme ve planlamayı içerir. Sözde kod, bu planlamaya yardımcı olabilecek basitleştirilmiş bir programlama biçimidir.
- 01:45:00 Sözde kod, bir kağıt için taslak oluşturmaya benzer şekilde, bilgisayar kodunu planlamanın görsel bir yoludur. Akış şemaları ve programın ne yapmasını istediğinizi kronolojik olarak yazmak yaygın kullanılan iki yöntemdir.
- 01:50:00 Bu video programlama ve bilgisayar bilimi kavramlarını, farklı planlama ve kod yazma yöntemlerini ve sözde kodun önemini tanıtıyor. Ayrıca farklı programlama dillerini ve kullanımlarını da kapsar.
- 01:55:00 Bu dizide yazar, sözdizimi ve kuralları içeren programlamanın temellerini ele alıyor ve belirli bir dilin nasıl öğrenileceğini öğretiyor. Ayrıca, başlamanıza yardımcı olacak web siteleri ve kaynaklar da sağlar.
- 2020.04.21
- www.youtube.com
C++ Programlama Kursu - Başlangıçtan İleri Düzeye
C++ Programlama Kursu - Başlangıçtan İleri Düzeye
Kurs, C++ programlamanın farklı yönlerini kapsar.
İşlenen konular:
-
Bir C++ geliştirme ortamı kurma: Videolar, çeşitli platformlarda bir C++ geliştirme ortamının nasıl kurulacağına dair genel bir bakış sağlar. Bu, farklı derleyicilerin yüklenmesini ve Visual Studio Code'un derleyicileri ve C++ standart kitaplığını kullanacak şekilde yapılandırılmasını içerir. Talimatlar Windows, Mac ve Linux gibi platformları kapsar.
-
C++ programlamanın temelleri: Videolar, değişkenler, veri türleri, işlevler ve akış kontrol ifadeleri gibi temel kavramları kapsar. Değişkenlerin nasıl bildirileceğini, işlevlerin nasıl tanımlanacağını ve döngüler ve koşullu ifadeler gibi kontrol yapılarının nasıl kullanılacağını açıklarlar. Videolar ayrıca yorumlar ve C++'daki ana işlev gibi kavramları da tanıtıyor.
-
Dize manipülasyonu: Belirli videolar, C++'da dizelerle çalışmaya odaklanır. Strcmp ve strcat gibi işlevleri kullanarak dizelerin nasıl karşılaştırılacağını ve birleştirileceğini açıklarlar. Videolar ayrıca strcpy işlevini kullanarak dizelerin nasıl kopyalanacağını gösterir.
-
Diziler: Videolar, C++'da dizi kavramını tanıtıyor. Dizileri bildirme ve başlatma, işaretçileri kullanarak öğelere erişme ve karakter dizilerini yazdırma gibi konuları kapsar.
-
Dinamik bellek ayırma ve işaretçiler: Bu videolar, C++'da belleğin nasıl yönetildiğini ve bir program için ek bellek ayırmak üzere dinamik bellek ayırma tekniklerinin nasıl kullanılacağını açıklar. İşaretçiler, bellek haritaları ve bellek yönetim birimleri kavramlarını kapsarlar. Videolar ayrıca işaretçilerin nasıl güvenli bir şekilde kullanılacağını, çökmelerin nasıl önleneceğini ve aynı bellek konumuna işaret eden birden çok işaretçinin nasıl kullanılacağını tartışır.
-
İşlev şablonları ve lambda işlevleri: Videolar, C++'da işlev şablonlarını kullanarak genel işlevlerin nasıl oluşturulacağını açıklar. Derleyicinin, iletilen parametre türlerine göre işlev tanımlarını nasıl oluşturabileceğini gösterirler. Ek olarak, videolar, ad vermeden çağrılabilen anonim işlevler olan lambda işlevlerini de kapsar. Lambda işlevleri için sözdizimi ve dönüş türü belirtimini açıklarlar.
-
Sınıflar ve kalıtım: Bu videolar, C++'da sınıf kavramını tanıtır ve bir sınıf içinde üye değişkenlerin ve işlevlerin nasıl tanımlanacağını açıklar. Yapıcılar, yok ediciler, erişim tanımlayıcıları (korumalı ve özel) ve çok biçimlilik elde etmek için statik ve dinamik bağlamanın kullanımı gibi konuları kapsarlar. Videolar ayrıca kalıtım kullanılarak önceden var olan sınıflara dayalı olarak türetilmiş sınıfların nasıl oluşturulacağını ve kullanılacağını gösterir.
-
Hata ayıklama ve hata işleme: Videolar, C++ programlarında hata ayıklama konusunda rehberlik sağlar. Kesme noktalarının nasıl ayarlanacağını, yerel kapsamdaki değişkenlerin nasıl inceleneceğini ve başlatılmamış işaretçiler ve bellek sızıntılarıyla ilgili hataların nasıl ele alınacağını açıklarlar. Videolar ayrıca nesne dilimleme ve temel sınıf oluşturucuları geçersiz kılma gibi kavramları da kapsar.
-
Arayüzler ve polimorfizm: Bazı videolar, C++'daki arayüzlere ve polimorfizme odaklanır. Programlarda polimorfik davranış elde etmek için dinamik bağlama, referanslar ve geçersiz kılma anahtar sözcüğünün nasıl kullanılacağını açıklarlar. Videolar ayrıca sanal bir yöntemi final olarak işaretlemek ve türetilmiş sınıflarda geçersiz kılınmasını önlemek için kullanılabilen final belirticiyi tartışıyor.
-
Diğer konular: Kapsanan ek konular arasında varsayılan parametreler, otomatik çıktı akışı yazdırma için akış eklenebilir arabirim ve daha okunabilir kod oluşturmak için arabirimlerin kullanılması yer alır.
Video, yeni başlayanların kurulum ve yapılandırmadan nesne yönelimli programlama, bellek yönetimi ve polimorfizm gibi daha gelişmiş kavramlara kadar C++ programlamayı öğrenmesine yardımcı olacak adım adım talimatlar, gösteriler ve açıklamalar sağlar. İçerik, hem C++ programlamanın temellerini öğrenmek isteyen yeni başlayanlar hem de becerilerini tazelemek veya belirli konuları derinlemesine keşfetmek isteyen deneyimli programcılar için uygundur.
Kod: https://github.com/rutura/The-C-20-Masterclass-Source-Code
Bölüm 1: Araçların ayarlanması
- 00:04:32 C++ Geliştirme Araçları
- 00:11:06 Windows'ta C++ Derleyicilerini Kurmak
- 00:24:27 Windows'ta VS Code Kurulumu
- 00:28:00 Windows'ta C++ İçin Visual Studio Kodunu Yapılandırma
- 00:57:27 Linux'ta C++ Derleyicilerini Kurmak
- 01:04:02 Linux'ta Visual Studio Code Kurulumu
- 01:07:40 Linux'ta C++ İçin Visual Studio Kodunu Yapılandırma
- 01:22:45 MacOS'ta C++ Derleyicilerini Kurmak
- 01:28:07 MacOS'ta Visual Studio Code Kurulumu
- 01:30:16 MacOS'ta C++ İçin Visual Studio Kodunu Yapılandırma
- 01:35:37 Çevrimiçi Derleyiciler
Bölüm 2: Dalış
- 01:43:01 İlk C++ Programınız
- 01:55:56 Yorumlar
- 02:01:56 Hatalar ve Uyarılar
- 02:13:12 İfadeler ve İşlevler
- 02:31:34 Giriş Çıkış
- 02:49:57 C++ Program Yürütme Modeli ve Bellek Modeli
- 02:56:42 C++ Çekirdek Dil VS Standart Kitaplık VS STL
Bölüm 3: Değişkenler ve Veri Türleri
- 03:00:47 Değişkenler ve Veri Türleri Giriş
- 03:05:05 Sayı Sistemleri
- 03:21:52 tamsayılar
- 03:40:44 Tamsayı Değiştiriciler
- 03:54:00 Kesirli Sayılar
- 04:16:39 Boole'lar
- 04:24:49 Karakterler Ve Metin
- 04:32:05 Otomatik
- 04:38:06 Ödevler
- 04:45:42 Değişkenler ve Veri Türleri Özeti
- 04:46:45 Veri Giriş İşlemleri
- 04:47:31 Temel İşlemler
- 04:58:01 Öncelik ve çağrışımsallık
- 05:12:06 Önek ve Sonek + & -
- 05:23:22 Bileşik Operatörler
- 05:31:43 İlişkisel Operatörler: Öğeleri Karşılaştırma
- 05:40:51 Mantıksal Operatörler
- 05:56:09 Çıktı biçimlendirme
- 06:33:26 Sayısal Sınırlar
- 06:41:10 Matematik Fonksiyonları
- 06:54:23 Garip İntegral Türleri
- 06:59:41 Veri Özeti İşlemleri
- 07:01:58 Akış Kontrolü: Koşullu Programlamaya Giriş
- 07:03:30 If Açıklama
- 07:20:49 Aksi takdirde
- 07:28:46 Anahtar
- 07:42:44 Üçlü Operatör
- 07:52:20 Akış Kontrolü: Koşullu Programlama Özeti Bölüm 6: Döngüler
- 07:53:49 Döngüler Giriş
- 07:55:20 Döngü İçin
- 08:25:20 Süre Döngüsü
- 08:36:54 Döngü Yaparken Yap
- 08:47:08 Dizilere Giriş
- 08:48:45 Dizileri Bildirmek ve Kullanmak
- 09:15:53 Bir Dizinin Boyutu
- 09:26:44 Karakter Dizileri
- 09:46:46 Bir Dizinin Sınırları
- 09:53:23 İşaretçiler Giriş
- 09:56:03 İşaretçileri Bildirmek ve Kullanmak
- 10:14:48 Karakter İşaretçisi
- 10:27:26 Program Hafıza Haritası
- 10:36:30 Dinamik Bellek Ayırma
- 11:05:45 Sarkan İşaretçiler
- 11:24:15 Yeni Başarısız Olduğunda
- 11:38:00 Boş İşaretçi Güvenliği
- 11:45:18 Bellek Sızıntıları
- 11:55:44 Dinamik Diziler
- 12:11:04 Referanslar Giriş
- 12:11:58 Referansları Bildirmek ve Kullanmak
- 12:22:28 Referansları İşaretçilerle Karşılaştırma
- 12:37:25 Referanslar ve Ekler
Bölüm 10: Karakter Manipülasyonu ve Dizeler
- 12:44:29 Karakter Manipülasyonu ve Dizilere Giriş
- 12:46:24 Karakter Manipülasyonu
- 13:09:28 C-String Manipülasyonu
- 13:41:42 C-String Birleştirme ve Kopyalama
- 14:01:19 std::string ile tanışın
- 14:03:38 std::string Bildirmek ve Kullanmak
- 14:12:47 Tek Tanım Kuralı
- 14:28:25 İlk Elden İşlevler
- 15:00:50 İşlev Bildirimi ve Tanımı
- 15:15:30 Birden Çok Dosyada İşlevler - Derleme Modeli Yeniden Ziyaret Edildi
- 15:42:30 Değere Göre Geçiş
- 15:50:30 İşaretçiyle Geçiş
- 15:57:46 Referansa Göre Geçiş
Bölüm 12: İşleri İşlevlerden Çıkarmak
- 16:03:20 Fonksiyonların Dışına Çıkarma Giriş
- 16:03:58 Giriş ve Çıkış Parametreleri
- 16:17:54 Fonksiyonlardan Dönüş
Bölüm 13: İşlev Aşırı Yüklemesi
- 16:49:00 Lambda İşlevlerine Giriş
- 16:49:38 Lambda İşlevlerini Bildirmek ve Kullanmak
- 17:20:25 Yakalama Listeleri
- 17:34:24 Tümünü Bağlam İçinde Yakalayın
Bölüm 15: İşlev Şablonları
- 17:40:08 İşlev Şablonları Giriş
- 17:41:45 İşlev Şablonlarını Denemek
- 18:19:52 Şablon Tipi Kesinti Ve Açık Argümanlar
- 18:35:47 Referansa Göre Şablon Türü Parametreleri
- 18:48:55 Şablon Uzmanlığı
Bölüm 16: Kavramlar
- 19:04:31 Kavramlar Giriş
- 19:06:47 Kavramlar
- 19:25:32 Konseptler: Kendinizinkini İnşa Etmek
- 19:42:45 Madde Gerektirir: Yakınlaştırma
- 19:59:53 Kavramların Mantıksal Kombinasyonları
- 20:09:39 Kavramlar Ve Otomobil
Bölüm 17: Sınıflar
- 20:15:40 Ders Tanıtımı
- 20:16:33 İlk C++ Dersiniz
- 20:38:03 İnşaatçılar
- 20:53:35 Varsayılan Oluşturucular
- 20:59:42 Ayarlayıcılar ve Alıcılar
- 21:10:06 Birden Çok Dosyada Sınıflandırma
- 21:30:49 İşaretçilerle Sınıf Nesnelerini Yönetme
- 21:42:48 Yıkıcılar
- 22:05:44 Yapıcı ve Yıkıcı Çağrı Emri
- 22:11:03 Bu İşaretçi
- 22:33:33 Yapı
- 22:42:37 Sınıf Nesnelerinin Boyutu
Bölüm 18: Miras
- 22:52:43 Miras Giriş
- 22:55:59 İlk Kalıtım Denemeniz
- 23:21:10 Korumalı Üyeler
- 23:32:06 Temel Sınıf Erişim Belirleyicileri: Yakınlaştırma
- 23:36:49 Temel Sınıf Erişim Belirleyicileri: Bir Demo
- 24:07:42 Özel Mirasa Kapanış
- 24:26:36 Yeniden Dirilen Üyeler Kapsam İçinde
- 24:46:59 Kalıtımı Olan Varsayılan Arg Oluşturucuları
- 24:57:37 Kalıtımla Özel Oluşturucular
- 25:26:56 Kalıtımla Oluşturucuları Kopyala
- 25:51:53 Temel Yapıcıları Devralma
- 26:06:00 Yıkıcılarla Miras
- 26:12:20 Kalıtımda Yeniden Kullanılan Semboller
Bölüm 19: Polimorfizm
- 26:21:03 Polimorfizm Giriş
- 26:26:54 Kalıtımla Statik Bağlama
- 26:55:24 Sanal Fonksiyonlarla Polimorfizm (Dinamik Bağlama)
- 27:14:31 Polimorfik Nesnelerin Boyutu ve Dilimleme
- 27:26:37 Koleksiyonlarda Depolanan Polimorfik Nesneler
- 27:45:42 Geçersiz kıl
- 27:52:45 Aşırı Yükleme, Geçersiz Kılma ve Saklanma
- 28:07:35 Farklı Düzeylerde Kalıtım ve Çok Biçimlilik
- 28:33:03 Kalıtım ve Statik Üyelerle Çok Biçimlilik
- 28:49:13 Son
- 29:07:42 Varsayılan Bağımsız Değişkenlerle Sanal İşlevler
- 29:23:18 Sanal Yıkıcılar
- 29:35:38 Dynamic_cast<>()
- 30:08:17 Yapıcılardan ve Yıkıcılardan Sanal (Polimorfik) İşlevler Çağırmayın
- 30:24:45 Saf Sanal İşlevler ve Soyut Sınıflar
- 30:43:37 Arayüz Olarak Soyut Sınıflar
- 2022.02.17
- www.youtube.com
Veri Yapıları Kolaydan İleri Düzey Kursuna - Bir Google Mühendisinden Tam Eğitim (1-4. Bölümler)
Veri Yapıları Kolaydan İleri Düzey Kursuna - Bir Google Mühendisinden Tam Eğitim
Kısa özet:
00:00:00 - 01:00:00 Eğitmen, veri yapılarını ve bunların daha hızlı ve daha güçlü algoritmalar oluşturmadaki önemini açıklar. Eğitim, Big O gösterimini ve bir algoritmanın ne kadar zaman ve alan gerektirdiğini standartlaştırmak için nasıl kullanıldığını kapsar ve farklı zaman karmaşıklıkları için somut örnekler sağlar. Öğretici ayrıca, avantajları ve dezavantajları da dahil olmak üzere statik ve dinamik dizilerin uygulanmasını kapsar ve tek ve çift bağlantılı listelerde düğüm oluşturma ve ekleme konularını derinlemesine inceler. Son olarak öğretici, yığın veri yapısına bir giriş sağlar ve birincil işlemlerini kısaca açıklar.
01:00:00 - 02:00:00 "Kolaydan İleriye Veri Yapıları Kursu" eğitiminin bu bölümü, çeşitli veri yapılarını ve bunların işlevlerini kapsamlı bir şekilde kapsar. Öğretici, yığınların ve sıraların çalışma ilkeleri, bunların diziler ve bağlantılı listeler kullanılarak uygulamaları ve grafik geçişi ve sunucu isteklerini yönetme dahil olmak üzere farklı uygulamalardaki önemi konusunda izleyiciye rehberlik eder. Öğretici ayrıca öncelik sıralarını ve bunların yığınlar kullanılarak uygulanmasını inceleyerek, öncelik sıraları ve yığınlar arasındaki farkı ve yığın türlerini açıklığa kavuşturur. Öğretici, bir ikili öbekten öğelerin nasıl eklenip çıkarılacağına ilişkin adım adım bir gösterim sunarak sona erer.
02:00:00 - 03:00:00 Google Mühendisi, ikili yığın veri yapısından düğümlerin nasıl kaldırılacağını, yığın değişmezinin bir öncelik kuyruğunda nasıl korunacağını ve nasıl yüzüleceğini açıklayan veri yapılarıyla ilgili eksiksiz bir eğitim sunar. bir ikili yığın veri yapısında havuz düğümleri. Video ayrıca ayrık kümelere bölünmüş öğeleri izlemek ve iki grubu birleştirmek için kullanılan birleşik bulma veri yapısını da kapsıyor ve veri yapısının nasıl çalıştığını göstermek için mıknatıslarla ilgili bir örnek sunuyor. Ek olarak, Kruskal'ın bir grafikte minimum yayılan ağaç bulma algoritması açıklanmakta ve birleştirme veri yapısını daha verimli bulmak için yol sıkıştırma kavramı tanıtılmaktadır.
03:00:00 - 04:00:00 Bu eğitim, union-find veri yapısı ve find, connect, parent, size ve unify gibi yöntemleriyle başlayarak çeşitli veri yapılarını kapsar. Öğretici daha sonra ağaçların, köklü ağaçların, ikili ağaçların ve ikili arama ağaçlarının tanımları dahil olmak üzere ağaçlara geçer. Video, ikili arama ağaçlarından düğüm ekleme ve çıkarma örneklerinin yanı sıra ön sipariş, sıra, sıra ve seviye sırası dahil olmak üzere farklı geçiş algoritmaları sağlar ve bu yapıların Python ve Java'da nasıl uygulanacağını açıklar. Ek olarak, video hash tablolarını tanıtıyor ve hash fonksiyonlarının önemini ve popüler çarpışma çözümleme yöntemlerini tartışıyor.
04:00:00 - 05:00:00 Bu bölüm, hash tablolarının çeşitli yönlerini ve uygulamalarını kapsar. Anahtarları değerlerle eşleyen sağlama işlevlerinin önemini ve ayrı zincirleme ve açık adresleme gibi teknikleri kullanarak karma çarpışmaların nasıl ele alınacağını tartışır. Öğretici ayrıca karma tablolardaki girişleri ekleme, kaldırma ve arama yöntemlerinin yanı sıra yük faktörlerini yeniden boyutlandırma ve yönetmeyi de kapsar. Konuşmacı, sonsuz döngülerden ve performans sorunlarından kaçınmak için uygun bir tarama işlevi ve tablo boyutu seçmenin önemini vurgular. Kavramları göstermek için öğretici boyunca pratik örnekler kullanılır.
05:00:00 - 06:00:00 Bu bölüm, çarpışma çözümünde karma tablolar, çift karma ve ikinci dereceden araştırma hakkında kapsamlı bir genel bakış sunar. Video, bir karma tabloyu yeniden boyutlandırma ve büyütme, çarpışmaları ve silmeyi işleme ve ikinci dereceden araştırma kullanarak karma tabloları uygulama kavramlarını kapsar. Video ayrıca, lineer inşa süresiyle logaritmik zamanda aralık sorgularını ve nokta güncellemelerini destekleyen bir veri yapısı olan Fenwick ağacını da tanıtıyor. Video, Fenwick ağacını kullanarak önek toplamlarının ve aralık sorgularının nasıl gerçekleştirileceğine dair adım adım bir açıklama sağlar.
06:00:00 - 07:00:00 Eğitim videosu, hızlı aralık sorguları ve nokta güncellemeleri için bir Fenwick ağacı kavramı, benzersiz alt dizileri ve en uzun ortak alt dizileri bulmak için sonek dizilerini ve LCP dizisini kullanma ve çözme gibi çeşitli konuları kapsar. kayan pencere tekniği kullanan en uzun ortak alt dize problemi. Öğretici ayrıca, LCP dizisini kullanarak en uzun yinelenen alt dizgenin verimli bir şekilde nasıl bulunacağını açıklar ve dengeli ikili arama ağaçlarının, özellikle AVL ağaçlarının özelliklerini ve önemini ve bunların ağaç dönüşleri kullanılarak nasıl dengelenebileceğini araştırır. Video, GitHub'da bulunan Java'da ayrıntılı açıklamalar, örnekler ve kaynak kodu sağlar.
Bölüm 1
- 00:00:00 Konuşmacı, verileri verimli bir şekilde organize etmenin bir yolu olarak veri yapıları kavramını ve bunların daha hızlı ve daha güçlü algoritmalar oluşturmak için nasıl gerekli olduğunu tanıtıyor. Konuşmacı, eldeki görev için uygun veri yapısının nasıl ve ne zaman kullanılacağını anlamanın öneminden ve veri yapılarının kodu nasıl daha temiz ve anlaşılır hale getirebileceğinden bahsediyor. Soyut veri türü kavramı, soyut bir veri türünün veri yapısının nasıl uygulanması gerektiğine ilişkin belirli ayrıntıları değil, nasıl yalnızca arabirimi sağladığına ilişkin örneklerle birlikte açıklanır. Ek olarak, video, veri yapılarının performansını anlamak için hesaplama karmaşıklığına kısaca değiniyor.
- 00:05:00 Büyük O gösterimi kavramı, bir algoritmanın olası en kötü girdi düzenlemesine dayalı olarak çalışması için ne kadar zaman ve alan gerektiğini standartlaştırmanın bir yolu olarak tanıtıldı. Big O, yalnızca girdiler gerçekten büyüdüğünde ne olduğuyla ilgilenir ve büyük O notasyonuna eklenen sabit değerleri kaldırır. Bir f fonksiyonu kavramı da tanıtılır ve Büyük O of f n'nin sadece n küp olduğu belirtilir, bu fonksiyondaki en büyük, en baskın terimdir.
- 00:10:00 Google Mühendisi, Big O gösteriminin nasıl kullanıldığına dair somut örnekler sağlar. Örnekler, zaman karmaşıklıklarına göre kategorilere ayrılmıştır: sabit zaman, doğrusal zaman, ikinci dereceden zaman, logaritmik zaman. Ayrıca, ikili arama örneğini kullanarak logaritmik zaman karmaşıklığının nasıl elde edildiğinin adım adım dökümünü sağlar. Ek olarak, daha karmaşık bir algoritmanın zaman karmaşıklığının nasıl hesaplanacağını gösteriyor ve bir algoritmanın karmaşıklığını belirleme kuralını açıklıyor.
- 00:15:00 Konuşmacı, bir dış döngü ve bir iç döngü ile iç içe geçmiş bir döngünün karmaşıklık analizini tartışıyor. İç döngüde sabit miktarda iş vardır ve dış döngüde değişken miktarda iş vardır. Fonksiyonun büyük O'su O(n^4)'tür, çünkü n^3 baskın terimdir. Konuşmacı daha sonra, bitişik bellek yığınları olan dizinlenebilir öğeler içeren sabit uzunlukta bir kapsayıcı olan statik dizileri tanıtır. Statik diziler, nesneleri geçici olarak depolamaktan bir girdi veya çıktı akışından bilgi depolamaya kadar her yerde kullanılır. Konuşmacı, bir dizinin temel yapısını, bunlar üzerinde gerçekleştirilebilecek ortak işlemleri ve bunların karmaşıklık analizini ana hatlarıyla belirtir.
- 00:20:00 Eğitmen, yalnızca bir dönüş değerine izin veren diller için bir geçici çözüm olarak ve dinamik programlama da dahil olmak üzere programlamada dizilerin kullanımını tartışır. Dizinlenebilir özelliği nedeniyle dizilerin sabit erişim süresine sahip olduğunu, ancak en kötü senaryoda aramanın doğrusal süre kadar sürebileceğini açıklıyor. Statik bir diziden ekleme, ekleme ve silme mümkün değildir, ancak dinamik bir dizide, ekleme için dahili diziyi yeniden boyutlandırmak nadir fakat sabit zamanlı bir işlemle sonuçlanır. Son olarak, öğelerin her biri için bir döngü kullanılarak yinelenebileceğini ve bilgisayar bilimlerinde dizi indekslemenin sıfırdan başladığını ve bunun bazı yeni başlayanlar için kafa karıştırıcı olabileceğini belirtiyor.
- 00:25:00 Video, köşeli parantezin indekslemeyi ifade ettiği dizilerde indeksleme kavramını ve dinamik dizilerin statik dizilerle benzer set alma işlemlerine izin vererek gerektiğinde nasıl büyüyüp küçülebileceğini tartışıyor. Dinamik bir dizi uygulamak için statik bir dizi kullanılır ve kapasite aşıldığında dizi boyutu iki katına çıkar ve tüm öğeler yeni statik diziye kopyalanır. Video ayrıca, T tipi jenerikleri destekleyen ve dahili statik dizi, uzunluk ve kapasite için örnek değişkenlere sahip olan dizi sınıfının kaynak kodunu da gösterir.
- 00:30:00 Eğitmen, boyut, iç metin, temizleme, ekleme, kaldırma, dizini, içerir ve toString dahil olmak üzere dinamik bir dizi için çeşitli yöntemlerin uygulanmasından geçer. Add yöntemi, kapasiteye ulaşıldığında boyutunu iki katına çıkararak dizinin yeniden boyutlandırılmasını içerir ve remove yöntemi, kaldırma dizini dışında dizinin tüm öğelerini kopyalamak için iki dizin kullanır. Eğitmen ayrıca dinamik dizi için bir yineleyicinin nasıl oluşturulacağını gösterir ve bir dizinin öğeleri üzerinde yineleme yapmak için bir yineleyici kullanmanın yararlarından bahseder. Genel olarak, eğitim, dinamik dizileri uygulamaya basit ama kapsamlı bir giriş sağlar.
- 00:35:00 Eğitmen, tek ve çift bağlantılı listelere giriş yapar ve bunların veri tutan ve veri içeren diğer düğümlere işaret eden sıralı bir düğüm listesi olduğunu açıklar. Bağlantılı listeler, listelerin, yığınların ve sıraların yanı sıra dairesel listelerin, karma tablo ayrı zincirlemenin ve bitişik listelerin ve grafiklerin uygulanmasında kullanılır. Eğitmen ayrıca bağlantılı listeler oluşturmak için bazı yararlı terminolojileri de kapsar. Ek olarak, tekli ve çift bağlantılı listelerin avantajları ve dezavantajları tartışılmıştır, tek bağlantılı listeler daha fazla bellek verimlidir ancak önceki öğelere erişim yeteneğinden yoksundur, çift bağlantılı listeler geriye doğru hareket ettirilebilir ve bir düğümün kolayca çıkarılmasına izin verir.
- 00:40:00 Eğitmen, düğüm oluşturma ve tek bağlantılı listeye ve çift bağlantılı listeye ekleme uygulama ayrıntılarını açıklar. Tek bağlantılı bir listeye bir düğüm eklemek için, yeni bir işaretçi oluşturulur ve çapraz işaretçi istenen konuma ilerletilir, ardından yeni düğüm oluşturulur ve diğer düğümlere bağlanır. Öte yandan, çift bağlantılı bir listenin hem sonraki hem de önceki işaretçileri vardır ve yeni bir düğüm eklenirken, hem bitişik düğümlerin hem de yeni düğümün işaretçilerinin güncellenmesi gerekir. Tek bağlantılı bir listeden bir düğümü kaldırmak, istenen düğüme ilerlemek ve onu kaldırmak için iki işaretçi kullanmayı ve ardından belleğini daha sonra serbest bırakmayı içerir.
- 00:45:00 Konuşmacı, çift bağlantılı bir listeden düğümlerin nasıl kaldırılacağını kapsar; bu, son düğüme yapılan referansları manuel olarak tutmamız gerekmediğinden, tek bağlantılı bir listeden düğümleri kaldırmaktan daha kolaydır. Konuşmacı, Java'da bir uygulamayı gösterir ve bağlantılı listelerdeki çeşitli işlemlerin karmaşıklığını tartışır; örneğin baş veya kuyruktaki öğeleri aramak ve kaldırmak. Bağlantılı bir listede arama en kötü senaryoda doğrusal iken, başa ekleme veya başı çıkarma sabit zamandır. Kuyruktan kaldırma, tek bağlantılı bir listede doğrusal zaman alır, ancak çift bağlantılı bir listede değil, çünkü önceki düğüme bir referansı vardır.
- 00:50:00 Videonun bu bölümünde sunum yapan kişi, listeyi temizleme, boyut alma ve boş olup olmadığını kontrol etme ve listenin başına ve sonuna düğümler ekleme yöntemleriyle çift bağlantılı bir listenin uygulanmasını açıklıyor. Ayrıca listenin ilk veya son elemanına nasıl göz atılacağını, ilk veya son elemanın nasıl kaldırılacağını ve listenin ortasındaki rastgele bir düğümün nasıl kaldırılacağını da açıklıyor. Sunum yapan kişi, belleği uygun şekilde serbest bırakmanın önemini vurgular ve kullanıcıların doğrudan erişmesini önlemek için düğüm sınıfını özel olarak ayarlar.
- 00:55:00 Videonun bu bölümünde, eğitmen, belirli bir dizindeki bir düğümün, düğümler açıkça dizine eklenmemiş olsa bile bağlantılı bir listeden nasıl çıkarılacağını açıklar. Remove yöntemi, bağlantılı listeden rasgele bir değerin kaldırılmasını ve null değerlerin aranmasını destekler. Eğitmen ayrıca, bağlantılı bir liste içindeki bir nesnenin dizinini alma yönteminin dizinini ve yineleme yöntemini açıklar. Son olarak, öğretmen yığın veri yapısını tanıtır ve ana işlemleri olan push ve pop'a kısaca genel bir bakış sağlar. Eğitmen ayrıca serideki gelecek videoların yığın uygulamasını, yığınlar kullanılarak çözülen sorunları ve yığın işlemleriyle ilişkili zaman karmaşıklığını ele alacağını da vurguluyor.
Bölüm 2
- 01:00:00 Video, yığın veri yapısının nasıl çalıştığını ve programlamadaki çeşitli kullanımlarını tartışıyor. Video, işlemlerin bir yığına nasıl eklenip kaldırıldığına dair ayrıntılı bir örnek sunar ve yığınların metin düzenleyicilerde, derleyicilerde ve destekleyici özyinelemede nasıl kullanıldığını açıklar. Ek olarak, video, bir grafikte derinlik öncelikli arama yapmak için bir yığının nasıl kullanılabileceğini vurgular ve bir yığın kullanılarak bir köşeli parantez dizisinin geçerli olup olmadığının nasıl belirleneceğine dair harika bir örnek problem sunar. Son olarak, video, yığınların karmaşıklık analizini ve bunların bağlantılı bir liste olarak nasıl çalıştıklarını içerir.
- 01:05:00 Google mühendisi, bir yığın veri yapısı kullanarak bir parantez dizisinin geçerli olup olmadığının nasıl kontrol edileceğini gösteriyor. Algoritmayı adım adım inceliyor, sol köşeli parantezleri yığına itiyor ve sağ köşeli parantezlerle karşılaştığında onları çıkarıyor ve eşleşip eşleşmediklerini kontrol ediyor. Ayrıca, her mandal bir yığını temsil ettiğinden ve diskler yalnızca belirli koşullar altında hareket ettirilebilen öğeleri temsil ettiğinden, Tower of Hanoi oyununun yığınlarla nasıl ilişkilendirilebileceğini açıklıyor. Son olarak, yığınların diziler veya bağlantılı listeler kullanılarak nasıl uygulanabileceğini tartışıyor.
- 01:10:00 Java programlama dilinde bir yığın veri yapısının basit bir uygulamasında, tek bağlantılı bir liste kullanarak bir yığın oluşturmayı ve yığından öğeleri çıkarmayı öğreniyoruz. Yığın, başı boş bir düğüme işaret ederek oluşturulur, bu da yığının boş olduğu anlamına gelir. Baştan önce yeni öğeler eklenir ve baş işaretçisini bir sonraki düğüme hareket ettirerek ve son düğümü yeniden konumlandırarak öğeleri patlatma yapılır. Veri yapılarındaki bellek sızıntıları sorunlara neden olabilir, bu nedenle tüm veri yapılarında bunlara dikkat etmek ve gerektiğinde düzeltmek önemlidir.
- 01:15:00 Eğitmen, iki temel işlemle gerçek dünyadaki bir kuyruğu modellemek için kullanılan doğrusal bir veri yapısı olan kuyrukları tartışır: kuyruğa alma ve kuyruktan çıkarma. Kuyruğun önü ve arkası sırasıyla öğeleri eklemek ve çıkarmak için kullanılır. Eğitmen ayrıca kuyrukları çevreleyen çeşitli terminolojileri açıklar; kuyruğa sokma bazen ekleme olarak adlandırılır ve kuyruktan çıkarma, yoklama veya kuyruğun önünden çıkarma olarak anılır. Kuyruğun klasik bir örneği, bir sinema salonu veya restorandaki bir kuyruktur ve sıralar, bir dizideki en son x öğeyi takip etmek için yararlı olabilir.
- 01:20:00 Video, sunucu isteklerini yönetmek ve bir grafik üzerinde kapsamlı bir ilk arama geçişi gerçekleştirmek için kuyrukların nasıl kullanıldığını açıklıyor. Kuyruğa alma istekleri kavramı tanıtıldı, burada boş bir sunucu aynı anda yalnızca belirli sayıda isteği işleyebilir ve fazla istekler bir kuyruğa alınır. Video ayrıca, bir grafiğin düğümlerinin bir başlangıç düğümünden uzaklıklarına göre ziyaret edildiği genişlik ilk aramasının temellerini de kapsar. Video, bir kuyruk veri yapısı kullanarak n-queuing ve dequeuing öğelerinin uygulanmasını açıklayarak sona eriyor.
- 01:25:00 Öğretici, kuyrukları derinlemesine inceler ve sıra soyut veri türünün, diziler veya farklı türden bağlantılı listeler (tek bağlantılı listeler ve çift bağlantılı listeler) kullanılarak nasıl uygulanabileceğini açıklar. Öğretici, bir kuyruğun tek bağlantılı liste uygulamasının nasıl çalışabileceğine dair bir örnek sunar ve ayrıca Java programlama dilini kullanarak zirve, yoklama ve teklif gibi çeşitli kuyruk yöntemlerinin uygulanmasını tartışır. Öğretici ayrıca github.com'daki kuyruk uygulamasının kaynak koduna bir bağlantı paylaşıyor.
- 01:30:00 Eğitimin bu bölümünde, Google Mühendisi, özellikle kuyruklar ve öncelik sıraları olmak üzere veri yapılarının konseptini ve uygulamasını açıklıyor. Öncelik kuyruğunun normal bir kuyruğa benzer şekilde nasıl çalıştığını tartışıyor, tek fark, her öğenin belirli bir önceliğe sahip olması ve daha yüksek önceliğe sahip öğelerin önce sıradan çıkması. Ayrıca, öncelik sıralarının yalnızca karşılaştırılabilir öğeleri desteklediğini, yani öncelik sırasına eklediğimiz verilerin sıralanması gerektiğini vurguluyor. Ayrıca, yoklama ve öncelik kuyruğuna öğe ekleme işlemlerini açıklamak için bir örnek sağlar. Eğitimin sonraki bölümlerinde, öncelik sıralarında gerçekleştirilen ortak işlemler, minimum öncelik sıralarını maksimum öncelik sıralarına çevirme, karmaşıklık analizi ve öncelik sıralarını uygulama yolları hakkında daha fazla ayrıntıya girecek.
- 01:35:00 Google Mühendisi, yığınlar kullanılarak öncelik sıralarının nasıl uygulandığını açıklıyor. Yığın, yığın değişmezini karşılayan ağaç tabanlı bir veri yapısıdır; bu, üst düğümün değerinin her zaman tüm düğümler için alt düğümün değerinden büyük veya ona eşit olduğu anlamına gelir ve bu da iki tür yığınla sonuçlanır: Maks yığınlar ve en az yığın. Yığınlar, öncelik sıraları için kurallı temel veri yapısını oluşturdukları için önemlidir. Google Mühendisi daha sonra yapı örnekleri gösterir ve izleyiciye bunların yığın olup olmadığını sorar ve tüm yığınların ağaç olması ve yığın değişmezini karşılaması gerektiğini gösterir.
- 01:40:00 Dijkstra'nın en kısa yol algoritması ve Huffman kodlaması gibi algoritmalarda öncelik sıralarının önemi tartışılır. Öncelik sıraları, bir sonraki en iyi veya en kötü öğeyi dinamik olarak getirme ihtiyacının olduğu durumlarda kullanışlıdır. Ana odak, ikili yığınlar olarak uygulanan öncelik sıraları ve bir öğe ekleme, bir öğeyi kaldırma, çevrelemeyi kontrol etme ve minimum öncelik sıralarını maksimum öncelik sıralarına değiştirme gibi işlemlerdir. Hash tabloları, çıkarma zamanı karmaşıklığını logaritmik olacak şekilde iyileştirmek için kullanılabilirken, naif yöntem için tüm öğeler için doğrusal bir tarama yapılır. Bölüm, minimum öncelikli sıraları maksimum öncelikli sıralara dönüştürmek için bir hack ile sona eriyor.
- 01:45:00 Google mühendisi, öncelik sıralarında ters yığınları uygulamanın basit bir yolu olarak olumsuzlamanın nasıl kullanılacağını açıklıyor. Standart sözlükbilimsel karşılaştırıcının yanı sıra olumsuzlanmış bir karşılaştırıcı ile bir min. Mühendis ayrıca ikili yığınlar kavramını ve bunlara nasıl öğe ekleneceğini de tanıtıyor.
- 01:50:00 Eğitmen, bir ikili öbek kullanarak bir öncelik kuyruğuna etkili bir şekilde öğelerin nasıl ekleneceğini anlamak için gerekli olan önemli terminolojiyi ve kavramları açıklar. Öncelik kuyruğunun bir yığın değil, bir öncelik kuyruğunun sahip olması gereken davranışı tanımlayan soyut bir veri türü olduğunu ve yığınların yalnızca bu davranışı gerçekten uygulamamıza izin veren veri yapısı olduğunu açıklıyor. Ayrıca ikili yığınlar da dahil olmak üzere yığın türlerini tartışıyor ve ikili ağaç özelliğinin tamamını ve bir dizi yapısı kullanılarak ikili yığının nasıl temsil edileceğini açıklıyor.
- 01:55:00 Google Mühendisi, bir düğümün alt ve üst düğümlerine kolayca erişmek için bir teknik kullanarak bir ikili yığına düğümlerin nasıl ekleneceğini ve yığın değişmezinin nasıl korunacağını açıklıyor. Değerleri bir min öbeğine ekleme örneğini gösterirler ve yığın değişmezini karşılamak için düğümlerin nasıl kabartılacağını gösterirler. Bir sonraki bölümde, mühendis bir ikili yığından öğelerin kaldırılmasını ele alır ve en yüksek önceliğe sahip ilgilenilen düğüm olan kök değeri kaldırmanın önemini vurgular.
Bölüm 3
- 02:00:00 Google mühendisi, çekme yöntemini kullanarak bir ikili yığın veri yapısından düğümleri kaldırma sürecini açıklıyor. Çekme, kök düğümü kaldırırken ve belirli bir düğümü kaldırırken iki durumda yapılır. Kök düğüm kaldırılırken, düğüm dizideki son düğüm ile değiştirilir ve aşağı köpürme yoluyla yığın değişmezi sağlanır. Belirli bir düğüm kaldırılırken, düğüm doğrusal olarak aranır, öbekteki son düğüm ile değiştirilir ve ardından değiştirilen düğümün değerine bağlı olarak yukarı veya aşağı köpürerek yığın değişmezliği sağlanır. Mühendis, çekmenin kök düğüm için logaritmik süre ve belirli bir düğüm için doğrusal süre aldığı sonucuna varır.
- 02:05:00 Eğitimin bu bölümünde, Google Mühendisi, bir hash tablosundan yararlanarak gelişmiş zaman karmaşıklığına sahip bir yığındaki düğümlerin nasıl kaldırılacağını açıklıyor. Kaldırılacak düğümün dizinini bulmak için doğrusal bir tarama yapmak yerine, her düğüm bulunduğu dizine eşlenir. Belirli bir düğümü kaldırmak istediğimizde, bunu yapmaya başlamak için dizinine bakarız. Video ayrıca öbekteki birden çok değer sorununun nasıl çözüleceğini ve ağaçtaki değerlerin konumlarının nasıl takip edileceğini de kapsar. Mühendis, yığın değişmezini sağladığımız sürece hangi düğümü kaldırdığımızın önemli olmadığını açıklıyor. Öğretici, önerilen yeni şema ile öğe ekleme, çekme ve çıkarma örneklerini içerir.
- 02:10:00 Konuşmacı, bir yığın veri yapısını kullanarak bir öncelik kuyruğuna yığın değişmezinin nasıl ekleneceğini, çıkarılacağını ve korunacağını açıklar. Ardından kaynak koduna dalar ve öncelik sırasını uygulamak için gerekli olan bazı önemli örnek değişkenleri ve kurucuları vurgular. Öncelik kuyruğunda izin verilen öğelerin karşılaştırılabilir arabirimi uygulaması gerektiğini ve günlük tutma ve kaldırma işlemlerinin, bir öğeyi öbekteki öğenin konumlarını temsil eden bir tamsayılar kümesine eşleyen bir harita kullanılarak izlenebileceğini açıklıyor.
- 02:15:00 Eğitimin bu bölümünde, Google Mühendisi, önceden ayarlanmış bir kapasiteyle başlangıçta boş bir sıra oluşturmak, tanımlı bir başlangıç kapasitesine sahip bir sıra oluşturmak ve doğrusal olarak bir sıra oluşturmak dahil olmak üzere bir öncelik sırası oluşturmanın farklı yollarını tartışıyor. heapify işlemini kullanarak zaman. Mühendis ayrıca boş, temiz, boyut, gözetleme, yoklama ve içerir gibi bazı basit öncelik sırası yöntemlerini de gözden geçirir. Ekleme yöntemi ayrıca, kuyruğa öğelerin nasıl ekleneceği ve öğeleri bir haritada izlemenin önemi ile ilgili ayrıntılarla birlikte tartışılmaktadır. Listenin sonuna bir öğe eklendikten sonra yüzme işlevi de gerekli bir adım olarak vurgulanır.
- 02:20:00 Videonun bu bölümünde, Google mühendisi düğümlerin ikili yığın veri yapısında yüzme ve batma yöntemlerini açıklıyor. Yüzme yöntemi, düğümleri ebeveyni ile değiştirmeyi ve düğüm, değerine göre doğru konuma gelene kadar yukarı doğru hareket etmeyi içerir. Batma yöntemi benzerdir ancak düğümü alt düğümleriyle karşılaştırmayı ve doğru konuma ulaşana kadar daha küçük olanla değiştirmeyi içerir. Mühendis ayrıca ikili yığında uygulanan takas, kaldırma ve kaldırma ekleme yöntemlerini açıklar. Remove add yöntemi, kaldırılan düğümü yığındaki son öğeyle değiştirmeyi ve yeni düğümü uygun konuma batırmayı veya yüzdürmeyi içerir.
- 02:25:00 Eğitimin bu bölümünde eğitmen, bir düğümün bir yığın veri yapısından nasıl çıkarılacağını ve takasın yığının yapısını etkileyip etkilememesine bağlı olarak düğümleri batırmak veya yüzdürmek için bir yöntem kullanarak minimum yığının bütünlüğünün nasıl korunacağını açıklar. emir. Bu bölüm ayrıca birleşik bulma veri yapısını ve bunun sırasıyla ayrık kümelere bölünmüş öğeleri izlemek ve iki grubu birleştirmek için kullanılan iki birincil işlemi olan bulma ve birleştirme'yi tanıtır.
- 02:30:00 Konuşmacı, birleşim bulma veri yapısının nasıl çalıştığını açıklamak için mıknatıs örneğini kullanır. Union find, öğeleri veya öğe gruplarını verimli bir şekilde birleştirir ve onlara keyfi bir renk atar. Birleşim bulma veri yapısı, minimum yayılan ağaç algoritması ve ızgara süzülme gibi çeşitli algoritmalarda kullanılır. Birleşim bulgusu mükemmel bir karmaşıklığa sahiptir ve yapısı doğrusal zamandır, bileşen sayma işlevi sabit zamandaki bileşenlerin sayısını belirleyebilir, bu da onu etrafta olması harika bir veri yapısı haline getirir.
- 02:35:00 Eğitimin bu bölümünde, Google mühendisi Kruskal'ın bir grafikte minimum yayılan ağaç bulma algoritmasını açıklıyor. Algoritma, artan kenar ağırlığına göre kenarları sıralamayı ve ardından tüm köşeler tek bir grupta birleştirilene kadar aynı gruba ait olmayan düğümleri birleştirmeyi içerir. Birlik bulma veri yapısı, grupları verimli bir şekilde birleştirmek ve döngüleri önlemek için kullanılır. Mühendis örnek bir grafik sağlar ve algoritmanın nasıl çalıştığını göstermek için adım adım ilerler.
- 02:40:00 Öğretici, union find veri yapısını ve dahili olarak nasıl çalıştığını açıklar. İlk adım, nesneler ve tamsayılar arasında sıfır ila N dahil olmayan aralığında bir eşleme oluşturmaktır; burada N, öğe sayısıdır. Daha sonra bir dizi oluşturulur ve her indeks, eşleme yoluyla gerçekleştirilen ilişkili bir nesneye sahiptir. Dizinin konumundaki değer, başlangıçta bulunduğu dizindir ve her düğüm, kendisine eşlenen bir kök düğümdür. Nesneleri gruplar halinde birleştirmek için talimatlar gerçekleştirilirken, dizideki değerler diğer nesnelerle eşlenecek şekilde değişti. Daha küçük bileşenler daha büyük olanlarla birleştirilir ve kök düğümler grupları birleştirmek için kullanılır.
- 02:45:00 Konuşmacı, union find veri yapısı kullanılarak öğelerin farklı gruplarda nasıl birleştirileceğinden bahsediyor. Her bileşenin kök düğümünün üst düğümlerini bulup takip ederek, bir elemanın hangi bileşene ait olduğunu belirleyebiliriz. İki bileşeni birleştirmek için, kök düğümlerden birinin diğer kökün ebeveyni olmasını işaret ediyoruz. Bileşenlerin sayısı, kalan kök düğümlerin sayısına eşittir ve yalnızca bileşenleri birleştirdikçe kök düğümlerin sayısı azalır. Konuşmacı ayrıca, bu yapının uygulanmasının, bir sonraki videoda tartışılacak bir optimizasyon olan yol sıkıştırma kullanılmadan şu anda amorti edilmiş bir zaman karmaşıklığına sahip olmadığını da belirtiyor.
- 02:50:00 Yol sıkıştırma kavramı, birleşimin veri yapısını daha verimli bulmasını nasıl sağladığını göstermek için tanıtıldı. Yol sıkıştırma, kök düğüme giden yol boyunca tüm düğümlerin sıkıştırılmasını içerir, böylece herhangi bir bileşen için kök düğümün sürekli olarak aranmasına izin verir. Yol sıkıştırmalı ve yol sıkıştırmasız birleştirme grupları örneği, yol sıkıştırma yoluyla kazanılan verimliliği göstererek iki yöntemi karşılaştırmak ve karşılaştırmak için verilmiştir.
- 02:55:00 Eğitmen, verimli bir veri yapısı oluşturmak için yol sıkıştırma ve birleştirmenin nasıl birlikte çalıştığını tartışır. Yol sıkıştırmanın, son duruma ulaşana kadar yol boyunca yolları dinamik olarak nasıl sıkıştırdığını gösteriyor. Birleşim bulma kodu, dizilerin ebeveyn-çocuk ilişkilerini indekslemek ve izlemek için kullanımına ilişkin açıklamalarla birlikte videoda sunulmaktadır. Ek olarak, kod, kök düğümü kontrol etmek ve ona giden yolu sıkıştırmak için yöntemler içerir. Eğitmen, konuyu tam olarak anlamak için union find ile ilgili diğer videoları izlemenin önemini vurgular.
4. Bölüm
- 03:00:00 Eğitmen bir birleştirme-bul veri yapısını ve bul, bağlantılı, ebeveyn, boyut ve birleştirme dahil yöntemlerini tanıtır. Yapının kök düğümlerinin her bir bağlı bileşenin boyutunu nasıl içerdiğini ve birleştirme yönteminin daha küçük grupları daha büyük gruplar halinde birleştirdiğini gösteriyor. Ağaçlara geçerek, eğitmen yönsüz grafikler olarak ağaçlara kısa bir genel bakış sunar ve ikili ağaçları ve ikili arama ağaçlarını tanıtır. Daha sonraki eğitimlerde ikili arama ağaçlarına, ağaç geçişlerine düğümlerin nasıl ekleneceğini ve çıkarılacağını ve bunların genel ağaçlara nasıl uygulanabileceğini ele almayı vaat ediyor.
- 03:05:00 Birden çok tanımla birlikte ağaç kavramı tanıtılır. Bir ağaç, bağlantılı ve döngüsel olmayan yönsüz bir grafik olarak, n düğümü ve n-1 kenarı olan bir grafik olarak veya herhangi iki köşe arasında yalnızca bir yolun olduğu bir grafik olarak tanımlanabilir. Herhangi bir düğümün kök olabileceği ve alt ve üst düğümlerin tanımlandığı köklü bir ağaç da tanıtılır. Kök düğümün ebeveyni kendisidir ve yaprak düğümler, çocuğu olmayan düğümler olarak tanımlanır. Bir ağaç içindeki üçgenlerle gösterilen bir alt ağaç kavramı da tanıtılır. Ek olarak, ikili ağacın tanımı, her düğümün en fazla iki çocuğa sahip olduğu bir ağaç olarak açıklanmaktadır.
- 03:10:00 Video, ikili arama ağacı değişmezini karşılayan ikili ağaçlar olan ikili arama ağaçlarını kapsar. Bu, sol alt ağacın her zaman mevcut düğümden daha küçük değerlere sahip olduğu ve sağ alt ağacın daha büyük değerlere sahip olduğu anlamına gelir. Video, ikili arama ağaçlarının çeşitli örneklerini sunar ve izleyicileri değişmezi karşılayıp karşılamadıklarını belirlemeye zorlar. İkili arama ağaçları, soyut veri türlerinin birçok uygulamasında kullanışlıdır ve dengeli ikili arama ağaçları ve sözdizimi ağaçlarında kullanılır. Ayrıca rastgele veriler üzerinde ekleme ve arama gibi işlemler için ortalama durumda logaritmik bir zaman karmaşıklığına sahiptirler.
- 03:15:00 Eğitimin bu bölümünde, Google mühendisi ikili arama ağaçlarını ve bunlara nasıl öğe ekleneceğini tartışıyor. İkili arama ağaçlarının ortalama olarak logaritmik davranışı vardır, bu da onların uygulanmasını kolay ve çoğu durumda verimli kılar. Bununla birlikte, en kötü durumda, bir ikili ağaç, ideal olmayan bir doğrusal veri yapısı haline gelebilir. İkili arama ağacına bir eleman eklemek için, eleman karşılaştırılabilir olmalıdır ve dört durumdan biri gerçekleşebilir: sol alt ağaçta tekrarlama, sağ alt ağaçta tekrarlama, yinelenen değerleri işleme veya yeni bir düğüm ekleme. Son olarak mühendis, animasyonları kullanarak bir ikili arama ağacına değer eklemeyi gösterir.
- 03:20:00 Google mühendisi, değerleri bir ikili arama ağacına eklerken en kötü durum senaryosunu açıklıyor ve bu ağacın doğrusal bir yapıya dönüşmesine neden oluyor. Bu davranış, düğüm arama veya değerleri silme gibi işlemleri yavaşlattığı için istenmeyen bir durumdur. Mühendis daha sonra ikili arama ağacından öğelerin nasıl kaldırılacağını iki adımda açıklar: önce kaldırılacak düğümü bulmak ve ardından ikili arama ağacı değişmezini korumak için onu ardılıyla değiştirmek. Video, sürecin anlaşılmasına yardımcı olmak için bir ikili arama ağacında değerlerin nasıl aranacağına dair bir örnek sunar.
- 03:25:00 Google mühendisi, bir ikili arama ağacıyla uğraşırken Kaldırma aşamasının dört durumunu açıklıyor. İlk durum, kaldırılacak düğüm bir yaprak düğüm olduğunda, ikinci ve üçüncü durumlar ise solda veya sağda yalnızca bir alt ağaç olduğunda ortaya çıkar. Dördüncü durum, düğümün hem sol hem de sağ alt ağacı olduğunda ortaya çıkar ve soru, düğümün ardılının hangi alt ağaçta olacağıdır. Yanıt, ardılın sol alt ağaçtaki en büyük değer veya sağ alt ağaçtaki en küçük değer olabileceği ve iki olası ardıl olabileceğidir.
- 03:30:00 Kursun bu bölümünde, eğitmen ardıl düğüm kavramını kullanarak ikili arama ağaçlarından düğümlerin nasıl kaldırılacağını açıklar. Ardıl, sağ alt ağaçtaki en küçük düğüm veya sol alt ağaçtaki en büyük düğümdür. Eğitmen, düğümlerin kaldırılmasını çeşitli örneklerle gösterir ve kaldırma işleminden sonra ağacın yeniden dengelenmesinin önemini vurgular. Bölüm, ön sipariş, sıra, sipariş sonrası ve seviye sırası dahil olmak üzere farklı ağaç geçişlerine genel bir bakışla sona erer.
- 03:35:00 Eğitmen, ikili ağaçlarda ön-sıralı, sıralı ve sıra-sonrası geçiş kavramlarını açıklar. Ön siparişin geçerli düğümün değerini ve ardından sol ve sağ alt ağaçlarını yazdırdığını açıklıyor ve ardından ön sipariş geçişinin bir ikili ağaçta nasıl çalıştığına dair bir örnek sunuyor ve hangi düğümlerin ziyaret edildiğini takip etmek için bir çağrı yığınını koruyor. Benzer şekilde, sol alt ağacı çaprazlamayı, değeri yazdırmayı ve ardından sağ alt ağacı çaprazlamayı içeren in-order traversal'ın nasıl çalıştığını açıklıyor. Eğitmen örnek olarak bir ikili arama ağacı kullanır ve geçiş sırasında düğümlerin ziyaret edildiği ve yazdırıldığı sırayı vurgular.
- 03:40:00 Öğretici, ikili ağaçlar için farklı geçiş algoritmalarını tartışıyor. İlk olarak, düğümlerin değerlerini artan düzende basan sıra dışı geçiş. Ardından, sol alt ağacı, ardından sağ alt ağacı kateden ve yalnızca bunların her ikisi de geçildikten sonra sıra sonrası geçiş, düğümün değerini yazdırır. Öğretici, önce genişlik aramasını ve düğümleri her seferinde bir katman olarak basan seviye sırası geçişi için nasıl kullanılabileceğini açıklamaya devam ediyor. Keşfedilecek düğümleri takip etmek için bir kuyruk kullanılır ve düğümler, ana düğümleri ziyaret edildikçe kuyruğa eklenir.
- 03:45:00 Videonun bu bölümünde eğitmen, bir sıra veri yapısı kullanarak genişlik öncelikli aramanın nasıl gerçekleştirileceğini açıklıyor. Düğümleri keşfetme ve çocuklarını sıralarına göre kuyruğa ekleme sürecini gösterir. Düzey sırası geçişi gerçekleştirirken yığın yerine sıra kullanmanın önemini vurguluyor. Ardından video, eğitmenin sınıf yapısını, örnek değişkenleri ve ağaca öğe eklemek için kullanılan yöntemleri açıkladığı Java'da bir ikili arama ağacının uygulanmasına odaklanır. Ayrıca, ikili arama ağaçlarıyla çalışırken karşılaştırılabilir bir tür seçmenin önemini de vurguluyor.
- 03:50:00 Eğitmen ikili arama ağacından düğümleri kaldırma sürecini açıklar. Düğümleri kaldırmak için genel yöntemi tartışarak ve düğümü yalnızca ilk önce kontrol edilen ağaç içinde varsa kaldıracaklarını açıklayarak başlarlar. Ardından, düğümü kaldırmak için kullanılan, kaldırılacak düğümü bulmayı ve ardından sol ve/veya sağ alt ağaçları olup olmadığına bağlı olarak gerçekten kaldırmayı içeren özyinelemeli yöntemi araştırırlar. Eğitmen, sol veya sağ alt ağacı veya hem sol hem de sağ alt ağacı içeren üç farklı kaldırma durumunu açıklar. Ayrıca ardıl düğümü bulmak için ağacı çaprazlamak için yardımcı yöntemler sağlarlar.
- 03:55:00 Google mühendisi, yeni bir düğüm eklemek, belirli bir öğeyi aramak ve ağacın yüksekliğini hesaplamak da dahil olmak üzere Python'da bir ikili arama ağacının nasıl uygulanacağını açıklıyor. Ayrıca, bir ağaç geçiş sırasını girdi olarak alan ve bu sıra için bir yineleyici döndüren "traverse" adlı özel bir yöntemi kullanarak ikili ağaç geçişlerinin yinelemeli olarak nasıl uygulanacağını gösterir. Ardından, hash tablolarını tanıtıyor ve hash işlevlerinin önemini ve ayrıca ayrı zincirleme ve açık adresleme gibi popüler çarpışma çözümleme yöntemlerini tartışıyor.
- 2019.09.19
- www.youtube.com
Veri Yapıları Kolaydan İleri Düzey Kursuna - Bir Google Mühendisinden Tam Öğretici (5-8. Bölümler)
Veri Yapıları Kolaydan İleri Düzey Kursuna - Bir Google Mühendisinden Tam Eğitim
Bölüm 5
- 04:00:00 Eğitmen, hash tabloları kavramını ve hash tekniklerini kullanarak uygulanmasını tanıtır. Hash tabloları, her anahtarın benzersiz olduğu ve bir değerle ilişkilendirildiği anahtarlardan değerlere bir eşleme oluşturmak için kullanılır. Anahtarları değerlerle eşlemek için, tuşları sabit bir aralıkta bir tam sayıya eşleyen bir hash işlevi kullanılır. Eğitmen, dizideki karakterlerin ASCII değerlerini kullanarak diziler gibi rasgele nesneler için hash işlevlerinin nasıl tanımlanacağını gösterir. Hash tabloları, anahtarların hash edilebilir olması koşuluyla, genellikle değerlerin frekanslarını izlemek ve anahtar-değer çiftleri arasında eşlemeler oluşturmak için kullanılır. Bu bölüm, üç alana sahip kişilerden oluşan bir veri tabanı için bir karma işlevi tanımlamaya yönelik mini bir meydan okumayla sona erer.
- 04:05:00 Eğitmen özet fonksiyonlarını ve özelliklerini tartışır. Hash işlevi keyfi olarak tanımlanır ve sonsuz sayıda olasılığa sahip olabilir. Eğitmen, hash tablosunu bozmamak için hash fonksiyonlarının deterministik olması gerektiğini vurgular. Hash fonksiyonlarının tekdüzeliği, iki nesne aynı değere hash yaptığında meydana gelen hash çarpışmalarını en aza indirmek için de önemlidir. Eğitmen ayrıca hash değerlerinin nesne karşılaştırmalarını nasıl hızlandırabileceğini gösterir ve hash tabloları için kullanılan hash fonksiyonları yerine dosyalar için kriptografik hash fonksiyonları ve sağlama toplamları gibi karmaşık hash fonksiyonlarının kullanıldığını açıklamaya devam eder.
- 04:10:00 Eğitim, 't' tipi bir anahtarı neyin hash edilebilir hale getirdiğini ve bir hash tablosunun indekslemek için tek tip bir hash işlevi kullanarak nasıl çalıştığını açıklar. Karma işlevlerinin deterministik olması ve değişmez dizeler ve tamsayılar gibi sabit ve sabit değişmez anahtarları zorlaması gerektiğinden bahseder. Hash fonksiyonunu bir hash tablosuna endekslemenin bir yolu olarak kullanarak, sabit zamanda hızlı ekleme, arama ve çıkarma süreleri elde edebiliriz. Öğretici ayrıca, sonunda bir karma çarpışmaya yol açan bir tabloya anahtar/değer çiftleri ekleme örneği sağlar ve çarpışmaların nasıl ele alınacağını açıklar.
- 04:15:00 Konuşmacı, karma çarpışma çözümleme tekniklerini, özellikle ayrı zincirlemeyi tartışır. Ayrı zincirleme, belirli bir değere hash yapan tüm farklı anahtar-değer çiftlerini tutmak için genellikle bağlantılı bir liste olan yardımcı bir veri yapısını koruyarak karma çarpışmalarla baş etmenin bir yoludur. Bir karma tablonun zaman karmaşıklığı, ortalama olarak sabit zaman ekleme, çıkarma ve arama sağlayabilir, ancak tekdüze olmayan korkunç bir karma işleviyle, doğrusal zaman olabilir. Konuşmacı ayrıca, ayrı zincirlemenin nasıl çalıştığına ve dizideki her dizin için bağlantılı bir liste veri yapısını koruyarak karma tablomuzdaki çarpışmaları ele almak için nasıl kullanabileceğimize dair bir örnek sağlar.
- 04:20:00 Konuşmacı, çarpışmaları işlemek için bağlantılı listeleri kullanan, ayrı zincirlemeye sahip bir hash tablosunda aramaların nasıl çalıştığını açıklar. Konuşmacı, belirli bir anahtarla, anahtarı özetleyerek ve karma tablonun karşılık gelen kovasında bağlantılı listeyi arayarak karşılık gelen değerin nasıl bulunacağını gösterir. Konuşmacı ayrıca sabit zaman karmaşıklığını koruma, anahtar-değer çiftlerini kaldırma ve hash tablosundaki kovaları işlemek için farklı veri yapılarını kullanma hakkında bazı genel soruları da ele alıyor. Son olarak, konuşmacı, ayrı zincirleme kullanarak bir karma tablo uygulaması için bazı kaynak kodlarını paylaşır.
- 04:25:00 Video, hash tablolarını ve bunların Java'da nasıl uygulandığını tanıtıyor. Giriş sınıfı ilk olarak jeneriklere, karma kodlara ve eşittir yöntemine odaklanarak tartışılır. Karma tablonun kendisi daha sonra maksimum yük faktörü, kapasite, eşik gibi örnek değişkenler ve bağlantılı listeler dizisi olan tablonun kendisi dahil olmak üzere açıklanır. Boyut, boş, açık, anahtar içerir ve hash gibi çeşitli yöntemler de uygulama detaylarıyla birlikte tartışılır. Son olarak, bir hash değerini hash tablosunda aranacak bir dizine dönüştürmek için kullanılan normalleştirilmiş dizin yöntemi açıklanmaktadır.
- 04:30:00 Videonun bu bölümünde, konuşmacı ekleme, alma, kaldırma, giriş arama ve tabloyu yeniden boyutlandırma gibi bir hash tablosunun uygulanmasıyla ilgili yöntemleri açıklıyor. Insert yöntemi, hash tablosuna yeni bir giriş ekler veya mevcut olanı günceller, get ise belirli bir anahtarla ilişkili değeri alır. Kaldır, anahtar değer çiftini karma tablosundan kaldırır ve giriş arama yöntemi, belirli bir kova dizininde girişi bulmaya yardımcı olur. Son olarak resize tablosu, kapasitesini ikiye katlayarak tabloyu yeniden boyutlandırır ve ardından yeni kapasite ile yeni bir tablo oluşturur, verileri eski tablodan yeni tabloya taşır ve eski verileri kaldırır.
- 04:35:00 Eğitmen, hash tablolarındaki çakışmaları çözmek için açık adresleme tekniğini tartışır. Bu yöntem, anahtar/değer çiftlerini bir yardımcı veri yapısı yerine tablonun kendisinde saklar. Bu nedenle, hash tablosunun boyutunu ve içindeki öğelerin sayısını yönetmek çok önemlidir. Öğelerin tablonun boyutuna oranı olan yük faktörünün, katlanarak kötüleşmesini önlemek için belirli bir eşiğin altında tutulması gerekir. Yeni bir anahtar eklerken, hash işlevi anahtar için orijinal bir konum verir, ancak bir çarpışma olması durumunda bir sonraki açık noktayı bulmak için bir tarama dizisi kullanılır. Doğrusal problama dizisi, aralarından seçim yapabileceğiniz pek çok diziden biridir.
- 04:40:00 Eğitmen, orijinal karma dizini zaten doluyken öğenin farklı bir konuma yerleştirildiği karma tablolardaki çarpışmaları ele alma yöntemi olan açık adreslemeyi tartışır. Her biri bir sonraki yuvayı bulmak için farklı bir matematiksel formül kullanan doğrusal araştırma, ikinci dereceden araştırma, çift karma ve sözde rasgele sayı üreteci araştırma işlevi gibi çeşitli araştırma işlevleri tanıtılmıştır. Bununla birlikte, açık adreslemenin ana zorluğu, sonsuz bir döngüye yol açabilen, karma tablonun boyutundan daha kısa döngüler üretme potansiyelidir. Bu sorunu açıklamak için pratik bir örnek verilmiştir.
- 04:45:00 Konuşmacı, hash tablolarında kullanılan problama fonksiyonlarındaki döngüler konusunu ve bunun nasıl ele alınacağını tartışır. Konuşmacı, lineer araştırma, ikinci dereceden inceleme ve çift özet oluşturma gibi tekniklerin hepsinin bu döngü sorununa tabi olduğunu, ancak bir eleman eklerken sonsuz bir döngüde sıkışıp kalmamak için bir uzunluk döngüsü oluşturmak üzere yeniden tanımlanabileceğini açıklıyor. Lineer araştırmadaki "b" sabiti artık geçerliliğini yitirmiş olarak kabul edilir ve konuşmacı bazı lineer fonksiyonların tam bir "n" mertebesi döngüsünü üretemeyebileceğinden bahseder. Bu sorunun çözümü, "a" sabiti ile "n" tablo boyutunun birbirine göre asal olduğundan emin olarak tam olarak "n"lik bir döngü üreten araştırma fonksiyonlarını seçmektir.
- 04:50:00 Eğitmen, tarama işlevleri, tablo boyutu, yük faktörü ve yeniden boyutlandırma dahil olmak üzere karma tabloları ve bunların nasıl çalıştığını tartışır. Anahtar değer çiftlerinin bir karma tabloya nasıl ekleneceğini ve karma çarpışmaların neden olduğu sonsuz döngülerden nasıl kaçınılacağını göstermek için doğrusal araştırmalı bir örnek kullanıyor. Ancak, problama işlevi ve tablo boyutunun seçiminin performansı önemli ölçüde etkileyebileceğine ve tablo boyutuyla en büyük ortak paydası bir olmayan bir işlevin seçilmesinin döngülere ve sorunlara neden olabileceğine dikkat çekiyor.
- 04:55:00 Anahtar-değer çiftlerini herhangi bir çarpışma olmaksızın bir hash tablosuna eklemek için bir araştırma işlevi kullanmanın bir örneğini görüyoruz. Bir çarpışma meydana gelirse, tarama işlevi, herhangi bir döngü oluşmasını önlemek için boş bir nokta bulunana kadar taramaya devam edecektir. Eleman sayısı tablonun eşiğini aştığında, N'nin GCD'si korunurken tablo boyutu iki katına çıkar. Daha sonra eski öğeler, aynı araştırma işlevi korunurken yeni tablo boyutu kullanılarak yeni tabloya yerleştirilir. Son olarak, yeni bir anahtar/değer çifti eklenir ve spot boşsa sorun olmaz.
6. Bölüm
- 05:00:00 Eğitmen, açık adreslemede çarpışmaları ele almak için kullanılan karma tablolarda ikinci dereceden araştırmayı tartışır. Bu, rastgele bir araştırma fonksiyonu seçerek ikinci dereceden bir formüle göre araştırmayı içerir. Eğitmen, tüm ikinci dereceden fonksiyonların uygulanabilir olmadığını çünkü sonsuz bir döngüde sıkışıp kalmaya neden olan bir düzen döngüsü üretmediklerini, ancak rastgele seçilen ikinci dereceden fonksiyonların çoğunun sonunda bir döngü üreteceğini açıklıyor. Eğitmen, bir araştırma işlevi seçmenin en popüler üç yolunu sunar ve p(x) eşittir x kare artı x bölü iki ve tablo boyutunun ikinin kuvveti olduğu ikinci yönteme odaklanır.
- 05:05:00 Konuşmacı, çift karma ve açık adresleme çarpışma çözümleme tekniğini kullanarak öğeleri karma tablolara ekleme sürecini tartışıyor. Tablo boyutunun ikinin kuvveti olmasının önemini ve prob kullanarak çarpışmaların nasıl ele alınacağını açıklarlar. Konuşmacı, yük faktörü belirli bir eşiği aştığında tabloyu yeniden boyutlandırma sürecini de gösterir. Mevcut elemanların nasıl güncelleneceğini ve tabloya yenilerinin nasıl ekleneceğini tartışmaya devam ederler.
- 05:10:00 Eğitmen, karma tablolardaki çarpışmaları ele almak için kullanılan bir araştırma yöntemi olan çift karma kavramını açıklar. Çift sağlama şeması, ikincil sağlama işlevi adı verilen başka bir hızlı arama fonksiyonunun sabit bir katına göre araştırmayı içerir. Eğitmen, çift karma durumunda meydana gelebilecek sonsuz döngü sorunu hakkında uyarıda bulunur ve bunu düzeltmek için tablo boyutu için bir asal sayı seçmeyi ve delta adı verilen bir değer oluşturmayı içeren bir strateji sunar. Aynı temel yapı taşını kullanarak farklı veri tipleri için yeni hash fonksiyonları üretmenin sistematik yolunu da tartışıyor.
- 05:15:00 Konuşmacı, hızlı arama işlevleri kavramını ve yeni bir hızlı arama işlevi oluşturmak için bunların nasıl birleştirilebileceğini açıklıyor. Evrensel hash işlevlerinin kullanımından bahsediyorlar ve çift hash kullanan bir örnek veriyorlar. Anahtar-değer çiftlerini bir karma tabloya ekleme sürecini tartışırken aynı zamanda karma çarpışmaları ve güncellemeleri de ele alıyorlar. Örnek, yedi tablo boyutunu ve 0,75 maksimum yük faktörünü kullanır ve karma işlevi, yapı taşları olarak tamsayıları ve gerçek sayıları kullanır.
- 05:20:00 Eğitim, tablo boyutunu ikiye katlamayı, bu değerin üzerindeki bir sonraki asal sayıyı bulmayı, yeni bir tablo tahsis etmeyi ve eski öğeleri yeniye eklemeyi içeren çift karma ile bir karma tabloyu yeniden boyutlandırma ve büyütme sürecini açıklar. masa. Öğretici, orijinal tablonun beş öğe ekledikten sonra maksimum eşiğe ulaştığı ve tablonun 17'lik yeni bir boyuta yeniden boyutlandırıldığı bir örnek sunar. düzeni ve ekleme ve silme işlemleri sırasında çarpışmalardan kaçınmanın önemi.
- 05:25:00 Video, karma tablodaki karma çarpışmaların ve silmenin nasıl ele alınacağını açıklar. Basitçe kovanın içeriğini temizleyen naif silme yönteminin, hash tablosundaki öğeleri düzgün bir şekilde bulma yeteneğini etkilediği için kusurlu olduğu gösterilmiştir. Bunun yerine video, silinen öğenin yerine mezar taşı adı verilen benzersiz bir işaretçinin yerleştirilmesini önerir. Bu işaretçi daha sonra yeni bir anahtar/değer çifti ile değiştirilebilir veya karma tablonun yeniden boyutlandırılması sırasında kaldırılabilir. Video, hash tablosu araması sırasında mezar taşlarının nasıl kullanıldığını göstermek için ikinci dereceden araştırma kullanan bir örnek sağlar.
- 05:30:00 Google mühendisi, bir çarpışma çözümleme şeması olarak açık iki adresi kullanan hash tablolarına genel bir bakış sağlar. Mühendis, araştırma sırasında bir grup mezar taşına çarpmamak için anahtar değer çiftlerinin yerini değiştirmeyi içeren yavaş silme veya yavaş yeniden yerleştirmeyi tartışır. Mühendis ayrıca, bir giriş için sarmalayıcı sınıfı olan bir diziye sahip olmak yerine, anahtar değer çiftlerini doğrudan bir dizi içinde depolamayı içeren, ikinci dereceden araştırma kullanan bir karma tablo için kodun gözden geçirilmesini sağlar. Mühendis, kullanıcıların tabloyu herhangi bir parametre olmadan başlatmasına izin veren hash tablosu için oluşturucuyu ve varsayılan sabitleri araştırır.
- 05:35:00 Kursun bu bölümünde eğitmen, ikinci dereceden sondalama kullanarak hash tablosunun uygulanmasını açıklar. Yöntem, eşiği hesaplamayı, dizini normalleştirmeyi ve tabloları başlatmayı içerir. Ekleme yöntemi bilgisi, anahtar-değer çiftlerinin karma tabloya eklendiği veya anahtar zaten mevcutsa güncellendiği durumlarda sağlanır. Eğitmen ayrıca ekleme yöntemine geçmeden önce anahtar sayısını, karma tablonun boş kontrolünü ve eklemeyi tartışır. Bir anahtarın eklenmesi için do-while döngüsü ayrıntılı olarak açıklanmaktadır.
- 05:40:00 Eğitmen, hash tablosu uygulamalarının include key, has key, get ve remove yöntemlerini açıklar. İçerir anahtarı ve has key yöntemleri, içerir bayrağı için doğru veya yanlış bir değer döndüren get yöntemini çağırarak hash tablosunda bir anahtarın var olup olmadığını kontrol eder. get yöntemi, hash indeksini bulur ve anahtarı arar. Anahtar varsa, içerir bayrağı true olarak ayarlanır ve değer döndürülür. Çıkarma yöntemi daha basittir, burada bir anahtar önce hash tablosunda bulunur, ardından azaltılır ve yerine bir mezar taşı dökülür. Yeniden boyutlandırma tablosu yöntemi, tablo boyutunu büyütmek için yeni öğeler eklendiğinde çağrılır, burada yeni bir tablo tahsis edilir ve mevcut tablo, ekleme yöntemini çağırmak için yeni tabloyla değiştirilir.
- 05:45:00 İkili dizin ağacı olarak da bilinen Fenwick ağacı, bir dizideki aralık sorgularını verimli bir şekilde hesaplamak ve nokta güncellemeleri gerçekleştirmek için bir veri yapısı olarak tanıtıldı. Fenwick ağacının arkasındaki motivasyon, bir dizideki aralıkları hesaplarken doğrusal sorguların verimsizliğidir. Dizi için tüm önek toplamlarını hesaplayarak, aralık sorguları sabit zamanda hesaplanabilir. Ancak dizi güncellemeleri, tüm önek toplamlarının yeniden hesaplanmasını gerektirir ve bu da süreci verimsiz hale getirir. Fenwick ağacı, logaritmik zamanda aralık sorgularını ve nokta güncellemelerini doğrusal inşa süresiyle destekleyerek bu sorunu çözmek için yaratıldı. Fenwick ağacı, her hücrenin en önemsiz bitinin değerine dayalı olarak bir dizi başka hücreden sorumlu olmasıyla çalışır.
- 05:50:00 Videonun bu bölümünde eğitmen, Fenwick ağaçlarını ve bunların menzil sorgularında nasıl çalıştıklarını tartışıyor. Tek tabanlı bir dizi ve her sayının ikili temsilini içeren bir diyagram gösteriyor. Diyagram, kendilerinden sorumlu en önemsiz bitleri ve 2, 4, 8 veya 16 hücre aralığından sorumlu diğer tüm hücreleri gösterir. Bir aralık sorgusu yapmak için eğitmen, sıfıra ulaşana kadar aşağı doğru kademeli olarak belirli bir dizine kadar önek toplamının nasıl hesaplanacağını açıklar. Belirli bir indeks için önek toplamının nasıl bulunacağını ve verilen iki indeks arasında bir aralık toplamının nasıl yapılacağını gösterir.
- 05:55:00 Basamaklı bir aşağı etki kullanarak önek toplamlarını hesaplamayı ve Fenwick ağaçlarını kullanarak bir aralık sorgulama algoritmasının nasıl gerçekleştirileceğini öğreniyoruz. Önek toplamı hesaplaması, belirli bir dizinden başlamayı ve sıfıra ulaşana kadar değerden en önemsiz biti çıkarmayı ve ardından her çıkarma sırasında tüm değerleri toplamayı içerir. Aralık sorgu algoritması, aralık sorguları için önek toplamları arasındaki farkı aldığımız Fenwick ağaçlarını kullanır. Algoritma bit manipülasyonu gerektirir ve daha hızlı hesaplama için düzgün küçük bir algoritma sağlar. Video yazarı, ağacın nasıl kurulduğu ve üzerinde işlemlerin nasıl gerçekleştirildiği hakkında daha fazla bağlam için önceki Fenwick ağaç aralığı sorgulama videosunu incelemenizi önerir.
7. Bölüm
- 06:00:00 Nokta güncellemeleri kavramı ve Fenwick ağacı yapımı Google Mühendisi tarafından açıklanıyor. Nokta güncellemeleri, belirli bir dizinde ağaca değerler eklemeyi ve bu sorumluluk aralığından sorumlu hücreleri bulmayı içerir. Bu arada, Fenwick ağacının doğrusal yapısı, değerleri ağaç boyunca yerinde yayarak bir değerden sorumlu acil hücrenin güncellenmesini içerir ve bu da tamamen işlevsel bir Fenwick ağacıyla sonuçlanır. Yayılma süreci, belirli bir değerden sorumlu olan üst öğenin güncellenmesi basamaklı fikrine dayanır.
- 06:05:00 Eğitimin bu bölümünde Fenwick ağacı kavramı ayrıntılı olarak açıklanmaktadır. Fenwick ağacı, hızlı bir şekilde aralık sorguları gerçekleştirmek ve bir dizi değer üzerinde nokta güncellemelerini gerçekleştirmek için kullanılan bir veri yapısıdır. Veri yapısı, her hücrenin kendi değerini ebeveynine yaymaktan sorumlu olduğu bir tür ikili indeksleme kullanır. Orijinal diziyi klonlayarak ve yeni ağaç yapısındaki her bir öğe için ana hücreyi hesaplayarak bir değerler dizisinin bir Fenwick ağacına dönüştürülmesini içeren bir Fenwick ağacı için yapım algoritması da tartışılmaktadır. Java'da bir Fenwick ağacı uygulamasının kaynak kodu gösterilmiştir ve bir GitHub deposunda mevcuttur.
- 06:10:00 Eğitmen bir Fenwick ağaç sınıfının nasıl oluşturulacağını ve farklı oluşturucularını açıklar. Ayrıca, her ikisi de dahil birden i'ye kadar olan önek toplamının hesaplanmasına izin veren önek toplamlarını da açıklar. Video ayrıca bir nokta güncellemesinden nasıl ekleme yapılacağını ve indeksi k'ye eşitlemek için ek bir yöntemi de kapsar. Eğitmen, dizi işlemede çok yararlı olan ikili manipülasyonu ve sonek dizisi veri yapısını kullanmanın önemini vurgular.
- 06:15:00 Ekler ve sonek dizileri kavramı, "deve" kelimesi için bir sonek dizisi oluşturma örneği ile tanıtılır. Sonek dizisi, sıralanan soneklerin kendilerini sonekleri depolamadan sıkıştırılmış bir şekilde temsil etmesine izin veren bir sıralanmış indeksler dizisidir ve bu da onu bir sonek ağacına alan açısından verimli bir alternatif haline getirir. Sıralanmış iki son ekin birbiriyle ortak kaç karaktere sahip olduğunu depolayan en uzun ortak önek (LCP) dizisi de, sonek dizisiyle ilişkili önemli bir bilgi parçası olarak, verilen bir LCP dizisini oluşturma örneğiyle birlikte sunulur. sicim.
- 06:20:00 Video, çok fazla alan gerektiren naif algoritmadan daha verimli bir şekilde benzersiz alt dizileri bulma ve saymada sonek dizilerinin ve LCP dizilerinin uygulanmasını tartışıyor. LCP dizisinde depolanan bilgileri kullanarak, yalnızca hızlı değil, aynı zamanda alan açısından verimli bir çözüm sunar. LCP dizisi, orijinal dizinin iki bitişik soneki arasındaki paylaşılan karakter sayısını temsil eder. LCP değerleri incelenerek, hangi alt dizilerin tekrarlandığı belirlenebilir ve tüm benzersiz alt dizileri etkili bir şekilde saymak için bunları ortadan kaldırılabilir.
- 06:25:00 Konuşmacı, verilen n diziden en az k tanesi arasında paylaşılan en uzun ortak altdizgiyi bulma problemini tartışır. Bu sorunu çözmek için bir yaklaşım, dinamik programlamadır, ancak hızla hantal hale gelebilir. Daha iyi bir yaklaşım, çözümü doğrusal zamanda bulabilen bir sonek dizisi kullanmaktır. Bunu yapmak için konuşmacı, önce tüm dizileri daha büyük bir dizide birleştirdiğimizi, soneklerin birbirine karışmasını önlemek için her bir dizi arasına benzersiz koruyucu değerler eklediğimizi açıklar. Ardından, bu birleştirilmiş dizi için, en büyük LCP değerini paylaşan farklı renklere sahip K dizilerini arayarak K dizilerinin en uzun ortak alt dizisini bulmamızı sağlayan sonek dizisini oluşturuyoruz.
- 06:30:00 Eğitim videosu, kayan pencere tekniği kullanılarak bir dizi içindeki k farklı rengin en uzun ortak alt dizisinin nasıl bulunacağını tartışır. Yaklaşım, pencere boyutunu farklı renklerde k adet sonek içerecek şekilde ayarlamak ve bu aralıktaki minimum LCP değerini sorgulamaktır. Minimum aralık sorgusu, doğrusal bir çözüm veya segment ağacı gibi bir minimum aralık sorgusu veri yapısı kullanılarak çözülebilir. Öğretici ayrıca, penceredeki renkleri takip etmek için bir karma tablo kullanmanızı önerir. Kayan pencere, eksik renkleri yakalamak için aşağı doğru genişler ve kriterler karşılandığında küçülür.
- 06:35:00 Videonun bu bölümünde, eğitmen bir sonek dizisiyle en uzun ortak altdizi problemini çözme örneğini gösterir. Pencere LCP ve pencere LCS değerleri, geçerli pencere için en uzun ortak önek ve en uzun ortak alt dize değerlerinin izlenmesine yardımcı olurken, LCS uzunluğu ve LCS seti, şimdiye kadarki en iyi değerleri izler. Örnek, en uzun ortak alt diziyi paylaşmak için dört dizi ve dörtlü havuzun en az iki dizesini kullanır. Eğitmen, en uzun ortak alt diziyi ararken pencerenin nasıl genişletilip küçültüleceğini gösteriyor ve izleyicilerin yayın web sitesinde kontrol etmeleri için bir meydan okumaya ilişkin ipuçları veriyor ve GitHub'da algoritmanın uygulanmasına bir bağlantı sağlıyor.
- 06:40:00 Video, kayan pencere tekniğini kullanarak en uzun ortak alt dizi problemini çözme sürecini anlatıyor. Algoritma, pencere boyutunu genişletip küçülterek ve ortak alt dizileri tanımlamak için en uzun ortak önek dizisini kullanarak, doğrusal zaman karmaşıklığına sahip bir çözüm bulur. Video daha sonra en uzun yinelenen alt dize problemini tanıtıyor ve N kare zamanı ve çok fazla bellek gerektiren saf yaklaşımla karşılaştırıldığında, belirli bir dizide en uzun tekrarlanan alt dizeyi verimli bir şekilde bulmak için en uzun ortak önek dizisinin nasıl kullanılacağını açıklıyor.
- 06:45:00 Google mühendisi, tekrarlanan en uzun alt diziyi bulmak için bir sonek dizisi ve bir LCP dizisi kullanmayı öğretiyor. Bir dizindeki LCP değeri, iki bitişik sonek arasındaki en uzun ortak önekin uzunluğunu verir. LCP dizisindeki maksimum değer, tekrarlanan en uzun alt dizginin uzunluğunu verir. Beraberlik durumunda, mümkün olan en uzun değerlerin tümü bulunmalıdır. Ardından mühendis, dengeli ikili arama ağaçlarının önemini ve tuttukları düğüm sayısına göre logaritmik bir yüksekliği korumak için kendi kendini ayarlama, ekleme ve silme işlemlerini son derece hızlı yapma açısından geleneksel ikili arama ağaçlarından nasıl farklı olduklarını açıklar. Bunu başarmak için anahtar kavram ağaç döndürmedir ve videoda daha ayrıntılı olarak tartışılacaktır.
- 06:50:00 Dengeli ikili arama ağaçlarında ağaç değişmezi ve ağaç döndürme kavramı açıklanır. Bir ağaç değişmezi, bir dizi ağaç dönüşü uygulanarak sağlanan, her işlemin sonunda karşılanması gereken bir ağaca dayatılan bir kuraldır. Ağaç döndürmeleri, düğümlerin sıralaması ve yerleşimi korunursa, ikili arama ağacı değişmezini bozmadan bir ağaçtaki düğümlerin etrafında hareket eden meşru dönüşümlerdir. Sağa döndürme işlemi ayrıntılı olarak açıklanır ve düğümlerin hem alt hem de üst düğümlere referansları olduğunda işaretçilerin güncellenmesiyle ilgili adımlar tartışılır.
- 06:55:00 Eğitim videosu, AVL ağaçlarını dengede tutan özellikleri açıklarken, ağaç döndürme tekniği kullanılarak bir AVL ağacına nasıl düğüm ekleneceğini göstermeye odaklanır. İlk olarak, video bir AVL ağacının ne olduğunu ve ilk dengeli ikili arama ağacı türü olarak önemini açıklıyor. Ardından video, sağ alt ağaç ile sol alt ağaç arasındaki yükseklik farkı olan denge faktörünü tanıtıyor. Video, AVL ağacının dengesini korumak için her düğümün denge faktörünün eksi bir, sıfır veya artı bir olması gerektiğini vurguluyor. Öğretici daha sonra bunun doğru olmadığı durumların nasıl ele alınacağını tartışmaya devam eder ve bu durum ağaç döndürme ile çözülebilir.
8. Bölüm
- 07:00:00 Eğitmen, bir AVL ağacında sol-ağır ağacı dengelemek için gereken dört farklı döndürme durumunu açıklıyor. Eğitmen ayrıca bir AVL ağacına düğüm eklemek için sözde kod sağlar ve güncelleme ve dengeleme yöntemlerini açıklar. update yöntemi bir düğümün yükseklik ve denge faktörünü hesaplarken, balance yöntemi bir düğümün denge faktörünün AVL ağaç özelliğini ihlal edip etmediğini kontrol eder ve ağacı yeniden dengelemek için uygun dönüşü belirler. Sol-sağ ve sağ-sol durumları da ilk döndürmeden sonra sol-sol ve sağ-sağ durumlarına indirgenerek açıklanmıştır.
- 07:05:00 Video, normal bir ikili arama ağacından elemanların çıkarılmasına çok benzeyen bir aville ağacından elemanların nasıl kaldırılacağını açıklar. Kaldırma işlemi iki adıma bölünebilir: öğenin bulunması ve ikili arama ağacının değişmezliğini korumak için bir ardıl düğümle değiştirilmesi. Düğümü bulmak, bir eşleşme bulunana veya arama ağacın sonuna ulaşana kadar hedef öğeyi ağaçtaki düğümlerle karşılaştırmayı içerir. Değiştirme işlemi, kaldırılacak düğümün bir yaprak düğüm olup olmadığına veya yalnızca sol veya sağ alt ağaca sahip olmasına bağlıdır; son iki durumda ardıl düğüm, en yakın çocuktur.
- 07:10:00 Eğitmen ikili arama ağacından bir düğümün nasıl çıkarılacağını açıklar ve üç silme durumu için örnekler verir. İlk durum, kaldırılacak düğümün çocuğu olmadığı, ikincisi bir çocuğu olduğu ve sonuncusu da iki çocuğu olduğu zamandır. Eğitmen ayrıca ağacın dengeli kalmasını ve denge faktörü ile yükseklik değerlerinin güncel kalmasını sağlamak için AVL ağaçları için ikili arama ağacı kaldırma yönteminin basitçe iki satır kod ekleyerek nasıl artırılacağını açıklar. Son olarak eğitmen, izleyicilerin AVL ağacının kaynak kodunu ve AVL ağacının iş başında canlı bir gösterimini bulabileceği GitHub deposuna bir bağlantı sağlar.
- 07:15:00 Eğitmen, Java'da özyinelemeli bir AVL ağacı uygulaması için kaynak kodunun açıklamasını sağlar. AVL ağacı, genel bir tür bağımsız değişkenini kabul eder ve karşılaştırılabilir olması gereken değeri düğümün içinde depolar. Düğüm alt sınıfı, sol ve sağ alt işaretçileri ve düğümün yükseklik ve denge faktörünü saklar. Ağaç, ağaç yazıcı arabirimi kullanılarak terminalde görüntülenebilir ve boyut, boştur ve küme içeriği gibi genel yöntemler kodda sağlanır. Ekleme yöntemi ayrıca, bir eklemenin başarılı olup olmadığını belirlemek için temel durumlar ve karşılaştırmalı değerler kullanılarak açıklanır.
- 07:20:00 AVL ağacında, sol veya sağ alt ağaca yeni düğümler ekleyen ve buna göre düğümlerin denge faktörünü ve yüksekliğini güncelleyen özel ekleme yöntemi açıklanır. Update yöntemi, bir düğümün yükseklik ve denge faktörünü günceller ve denge yöntemi, ağacın dengesini korumak için gerekli döndürme yöntemlerini çağırır. Sol-sol, sol-sağ, sağ-sağ ve sağ-sol durumları anlatılarak, döndürme sonrası güncelleme yöntemlerinin sıralamasının AVL ağacının dengesini koruması açısından çok önemli olduğu vurgulanmıştır.
- 07:25:00 Eğitmen, ikili arama ağacı veri yapısının kaldırma yöntemini tartışır. Bir öğeyi kaldırmak için yöntemin önce öğenin ağaçta var olup olmadığını kontrol ettiğini ve ardından özel kaldırma yöntemini çağırdığını açıklıyor. Eğitmen, kaldırma sırasında ortaya çıkabilecek dört durumu ana hatlarıyla belirtir ve her iki alt ağaca sahip bir düğümü kaldırmaya çalışırken hangi alt ağacın kaldırılacağını belirlemek için bir buluşsal yöntem önerir. Son olarak, izleyicilere, düğüm kaldırmalarına rağmen ağacın dengeli kalmasını sağlamak için remove yönteminin geri çağrılmasında update ve rebalance yöntemini çağırmalarını hatırlatır.
- 07:30:00 Google mühendisi, anahtar/değer çiftlerinin hızlı güncellemelerini ve silinmelerini destekleyen bir veri yapısı olan dizine alınmış öncelik sırasını sunar. Öncelik kuyruğundaki değerleri hızlı bir şekilde arama ve dinamik olarak değiştirme sorununu çözer; bu, hastalara önce en yüksek önceliğe göre hizmet verilmesi gereken bir hastane bekleme odası gibi çeşitli durumlarda yararlı olabilir. Mühendis, farklı önceliklere sahip hastaların bir örneğini ve dizinlenmiş öncelik sırasının, önceliklerin anında güncellenmesine nasıl yardımcı olabileceğini sağlar.
- 07:35:00 Video, belirli öğeler için önceliklerin verimli ve dinamik bir şekilde güncellenmesine izin veren dizin öncelik sıralarını tartışıyor. Dizin önceliği sırası kullanmanın ilk adımı, tüm anahtarlara dizin değerleri atayarak çift yönlü bir eşleme oluşturmaktır. Bu eşleme çift yönlü olmalıdır ve çift yönlü bir hash tablosu ile kolaylaştırılabilir. Anahtarlarda dizin değerlerinin kullanılmasının nedeni, genellikle öncelik sıralarının uygulanma şekli olan dizilere dizin oluşturmayı etkinleştirmektir.
- 07:40:00 Konuşmacı, dizin öncelik sırası kavramını tanıtıyor ve desteklemesi gereken işlemleri açıklıyor; anahtarların silinmesi, bir anahtarla ilişkili değerin alınması, öncelik kuyruğunda bir anahtarın olup olmadığının kontrol edilmesi, anahtar dizininin alınması dahil en küçük değer, dizindeki en küçük değeri alma, anahtar değer çiftlerini ekleyebilme ve güncelleyebilme ve özel güncelleme işlemleri anahtarı artırma ve azaltma. Tüm bu işlemler için zaman karmaşıklığı ya sabittir ya da logaritmiktir. Konuşmacı ayrıca, ikili yığının nasıl çalıştığı, öncelik kuyruğuna nasıl yeni bir değer ekleneceği ve ondan öğelerin nasıl kaldırılacağı dahil olmak üzere geleneksel öncelik sırası veri yapısı hakkında bilgi tazeleme sağlar.
- 07:45:00 İndekslenmiş bir öncelik sırasını ikili öbek ile nasıl uygularız? İlk adım, her öğeye benzersiz bir dizin değeri ve dizin öncelik sırası için bir başlangıç değeri atamaktır. Ardından, önce en düşük değere göre sıralamak için min. Ek olarak, belirli bir düğümün anahtarını bulmak için bir ters arama tablosu tutuyoruz. Bu bilgi, bir hastanedeki hastalara veya bir restorandaki müşterilere öncelik vermek gibi çeşitli uygulamalar için öncelik kuyruğuna verimli bir şekilde erişmemizi ve bunları manipüle etmemizi sağlar.
- 07:50:00 Videoda, bir dizin önceliği kuyruğuna anahtar/değer çiftlerinin eklenmesi, güncellenmesi ve kaldırılması gibi faydalı işlemlerin nasıl gerçekleştirileceği anlatılmaktadır. Ekleme işlemi, normal bir öncelik sırasına benzer, ancak konumu ve ters haritaları güncelleme adımı eklenmiştir. Video, yığın değişmezi sağlanana kadar düğümün yığın boyunca nasıl yukarı taşındığını gösteren, ekleme işlemi için sözde kod sağlar. Değiştirme işlemi, konum ve ters eşlemelerin güncellenmesini içerir, ancak düğüm dizini yerine anahtar dizini tarafından dizine alınmış halde kalan değerler dizisini değil. Video ayrıca, ekleme işlemine benzer, ancak tersi adımları içeren anahtar/değer çiftlerini yoklama ve kaldırma işlemlerine de kısaca değinir.
- 07:55:00 Video, artık sabit zamanlı olan düğüm konumu aramalarının kullanılmasıyla, dizinlenmiş bir öncelik kuyruğundan öğelerin kaldırılmasının doğrusal zaman karmaşıklığından logaritmik zaman karmaşıklığına nasıl iyileştirildiğini açıklıyor. Video, düğümleri değiştirme, çıkarmadan önce anahtar değer çiftlerini depolama, kaldırılan düğümleri temizleme ve değiştirilen düğümü yukarı veya aşağı hareket ettirerek yığın değişmezini geri yükleme dahil olmak üzere düğümlerin nasıl kaldırılacağına dair adım adım bir örnek verir. Ek olarak, beş satırlık kısa bir uygulama ve üç satırlık temizleme sürecini gösteren, anahtar/değer çiftlerini kaldırmak için sözde kod sağlanır. Son olarak, video senkronizasyon yöntemini ve nasıl çalıştığını ve ayrıca kaldırmaya benzer ancak aynı zamanda logaritmik zaman alan anahtar/değer çifti güncellemelerini açıklar.
- 2019.09.19
- www.youtube.com
Ücretsiz C Programlama Tam Kursu
Ücretsiz C Programlama Tam Kursu
00:00:00 - 01:00:00 "Ücretsiz C Programlama Tam Kursu" videosu, izleyicilere gcc derleyicisinin nasıl kurulacağını, bir IDE'nin nasıl kurulacağını ve C kodunun nasıl yazılacağını öğretir. Video, farklı veri türlerini görüntülemek için printf deyimlerinin, yorumların, kaçış dizilerinin ve biçim belirticilerin nasıl kullanılacağı da dahil olmak üzere C programlamanın temellerini kapsar. Eğitmen, değişkenlerin nasıl oluşturulacağını ve başlatılacağını ve aritmetik ve artırma/azaltma operatörlerinin nasıl kullanılacağını açıklar. Ek olarak video, scanf kullanarak kullanıcı girişinin kabul edilmesini ve printf kullanılarak çıktının biçimlendirilmesini kapsar. Eğitmen ayrıca, C'deki yararlı matematik fonksiyonlarını ve bunların, kullanıcı tarafından yarıçap girdisine dayalı olarak bir çemberin çevresini ve alanını hesaplamak için nasıl kullanılacağını tartışır. Video, C'nin zor bir dil olmasına rağmen ısrarla ve çabayla herkesin öğrenebileceğini vurguluyor.
01:00:00 - 02:00:00 "Ücretsiz C Programlama Tam Kursu" YouTube videosu programlama kavramlarını C dilinde öğretir. Bu video bölümünde eğitmen if/else deyimleri, switch deyimleri, mantıksal operatörler, işlevler ve döngüler gibi konuları ele alır. Eğitmen, programın koşullara dayalı seçimler yapmasına izin veren koşullu ifadeleri ve switch ifadesinin else if ifadesinin nasıl daha verimli bir versiyonu olduğunu açıklar. Ayrıca eğitmen, sıcaklık birimlerinin nasıl dönüştürüleceğini, basit bir hesap makinesi programının nasıl oluşturulacağını, program verimliliğini artırmak için mantıksal operatörlerin nasıl kullanılacağını ve kod fazlalığını en aza indirmek için fonksiyonların nasıl kullanılacağını derinlemesine ele alır. Son olarak, eğitmen üçlü operatörü ve dizi fonksiyonlarının program oluşturmaya nasıl yardımcı olabileceğini açıklar.
02:00:00 - 03:00:00 Bu C Programlama Tam Kursu, while ve do-while döngüsü arasındaki farkın açıklanması ve şekiller oluşturmak için iç içe döngülerin nasıl kullanılacağı ile başlayan çok çeşitli konuları kapsar. Ardından video, iki boyutlu dizilere geçmeden ve bir 2B ızgara veya veri tablosunun nasıl oluşturulacağına geçmeden önce, dizilerin temellerini ve tek boyutlu bir dizide öğelerin nasıl döngüye alınacağını ve görüntüleneceğini ele alır. Eğitmen daha sonra değiş tokuş değişkenleri kavramını, bubble sort gibi sıralama algoritmalarını tanıtır ve C'deki yapılar ve typedef'in yanı sıra rastgele sayılar üretme ve bir sayı tahmin etme oyunu yapmayı öğretir. Genel olarak, bu kurs C programlama kavramlarının kapsamlı ve derinlemesine anlaşılmasını sağlar.
03:00:00 - 04:00:00 "Ücretsiz C Programlama Tam Kursu" başlıklı bu YouTube videosu, sayı tahmin etme ve bilgi yarışması oyunları gibi oyunlar oluşturma dahil olmak üzere kapsamlı bir C programlama konularını kapsar ve hafıza, işaretçiler, bitsel operatörler ve dosya G/Ç. Ek olarak video, kazananı kontrol etmek ve bilgisayar oyuncusu için rastgele hareketler oluşturmak için iç içe for döngüleri ve if ifadeleri kullanan bir Tic Tac Toe oyununun nasıl oluşturulacağını açıklar. Eğitmen video boyunca net açıklamalar ve gösteriler sunarak C programlamayı öğrenmekle ilgilenen herkes için değerli bir kaynak haline getirir.
04:00:00 - 04:00:00 Eğitmen C'de Tic-Tac-Toe oyununu oluşturmaya devam ediyor, bir hamle yapmadan önce seçilen noktanın boş olduğundan emin olmak için bir kontrol ekliyor ve kazananı yazdırmak için bir fonksiyon yaratıyor. Daha sonra bir do while döngüsü kullanarak bir "tekrar oynat" seçeneği eklerler ve her döngünün başında değişkenleri sıfırlarlar. Kod, kullanıcıların kullanması için yorumlar kısmında paylaşılacaktır.
Bölüm 1
- 00:00:00 Yazar, üst düzey yazılım ile alt düzey donanım arasında köprü görevi gören orta düzey bir dil olan C'yi öğrenmenin önemini açıklıyor. C 1970'lerde ortaya çıktı ve derleyiciler, işletim sistemleri ve veritabanları yazmak da dahil olmak üzere çeşitli amaçlar için yaygın olarak kullanılıyor. YouTuber ayrıca bir IDE'nin nasıl kurulacağına ve C kodu yazmaya başlamak için gerekli uzantıların ve derleyicinin nasıl kurulacağına ilişkin talimatlar sağlar. Ancak YouTuber, C'nin yeni başlayanlar için zor bir dil olduğu, ancak ısrar ve çabayla herkesin öğrenebileceği konusunda uyarıyor.
- 00:05:00 Video, bir Mac veya Linux sistemine gcc'nin nasıl kurulacağını ve ortam değişkenlerinin altına gcc derleyicisine giden yolun nasıl ekleneceğini açıklıyor. gcc yüklendikten sonra video, VS Code'un programı nasıl derleyeceğini bilmesi için varsayılan oluşturma görevinin nasıl yapılandırılacağını açıklamaya devam eder. Video, yazı tipi boyutunun artırılmasını ve gelecekte baş ağrılarından kurtulmak için otomatik kaydetmenin etkinleştirilmesini önerir. Video ayrıca C programlamanın temellerini ele alıyor ve hashtag include, standart io giriş/çıkış için std ve f parantezleri yazdır gibi önemli işlevleri içeriyor. Son olarak video, herhangi bir hata olup olmadığını kontrol etmek için main işlevinin sonuna return 0 ifadesinin eklenmesi gerektiğini vurguluyor.
- 00:10:00 C programlama eğitiminin bu bölümünde eğitmen, metni yazdırmak için printf deyimlerinin nasıl kullanılacağını ve bir kaçış dizisi kullanarak yeni bir satır karakterinin nasıl ekleneceğini gösterir. Ayrıca komut istemini kullanarak bir C dosyasının nasıl derlenip çalıştırılacağını gösterir ve C programlamasında yorumların amacını açıklar. Video, C'de programlamanın temellerini kapsar ve yeni başlayanlar için yararlı ipuçları sağlar.
- 00:15:00 C programlama ile ilgili eğitim videosunun bu bölümünde eğitmen, kodunuzda yorumların ve kaçış sıralarının nasıl kullanılacağını açıklıyor. Yorumlar, kodu okuyan herkes için açıklama, açıklama veya notlar için kullanılır. Tek satırlı yorumlar iki eğik çizgi kullanılarak yapılırken, çok satırlı yorumlar eğik çizgi ve ardından bir yıldız işareti ve bir yıldız işareti ve ardından bir eğik çizgi kullanılarak yapılır. Öte yandan kaçış dizileri, bir metin satırı veya bir dize içindeki eylemleri belirten karakter kombinasyonlarıdır. En sık kullanılan kaçış dizileri, metin dizileri içinde yeni satırlar ve sekmeler oluşturmak içindir. Eğitmen ayrıca kaçış dizilerini kullanarak alıntıların, tek tırnakların ve ters eğik çizgilerin nasıl görüntüleneceğini gösterir.
- 00:20:00 video, C programlamada değişkenlerin nasıl oluşturulacağını tartışıyor. Öncelikle bir değişken tanımlamalı ve bu değişkene bir isim ve veri tipi atamalısınız. Ardından, bu değişkeni bir değere eşitleyerek başlatmalısınız. Video, tamsayılar, kayan noktalar, karakterler ve diziler dahil olmak üzere farklı veri türlerinin örneklerini verir. Video ayrıca bir değişken içinde depolanan değerin bir printf deyimi ve bir biçim belirtici kullanılarak nasıl görüntüleneceğini de açıklar.
- 00:25:00 Videonun bu bölümünde eğitmen, C programlamada farklı veri türlerini görüntülemek için biçim belirticilerin nasıl kullanılacağını açıklar. Örneğin, bir karakter dizisini görüntülemek için yüzde işaretini ve ardından dize için 's'yi kullanın. Bir karakter değişkenini görüntülemek için yüzde c'yi ve kayan noktalı bir sayı görüntülemek için yüzde f'yi kullanın. Eğitmen ayrıca chars, floats, integers ve double'lar gibi veri türlerini tartışır, double'lar 64 bit kesinliğe sahiptir ve float'lardan daha önemli basamakları tutar. True veya false depolayan ve bir bayt bellek kullanan boolean'lar da tanıtılır. Farklı biçim tanımlayıcıları ve bunları özelleştirmenin yolları bir sonraki videoda ele alınacaktır.
- 00:30:00 Boolean'ların d yüzdesi kullanılarak görüntülenebileceğini öğreniyoruz; biri doğruyu, sıfırı yanlışı gösteriyor. Karakterler, temsilleri yüzde d veya yüzde c biçim belirticileri kullanılarak gösterilen, eksi 128 ila artı 127 aralığındaki tamsayıları depolayabilir. İşaretsiz değişkenler, hem karakterler hem de kısalar için pozitif sayı aralığımızı ikiye katlar, böylece char, 0 ile 255 arasındaki sayıları saklayabilirken, şortlar, imzalanmışsa negatif 32.768'den pozitif 32.767'ye ve işaretlenmemişse 0'dan 65.535'e kadar olan rakamları saklayabilir. Steno olarak short int yerine short kullanabileceğinizi öğreniyoruz. Tamsayılar, pozitif veya negatif değerler olabilen tam sayıları saklayabilir.
- 00:35:00 Farklı veri türleri için farklı biçim tanımlayıcıları olduğunu ve yanlış olanı kullanmanın hatalara veya beklenmeyen çıktılara neden olabileceğini unutmamak önemlidir. C programlamasında pek çok veri türü mevcut olsa da, bu derste esas olarak karakterlere, karakter dizilerine, çiftlere, mantıksal değerlere ve tamsayılara odaklanacağız.
- 00:40:00 Eğitmen, belirli bir şekilde görüntülenecek veri türlerini tanımlayan ve biçimlendiren biçim belirleyicileri açıklar. Çıktıyı görüntülemek için minimum alan genişliği ayarlamak üzere, belirli boşlukları ayırmak için yüzde işaretinden sonra bir sayı eklenir. Soldaki yüzde işaretinden sonra eksi işareti kullanılması verileri hizalar. Video ayrıca, programın yürütülmesi sırasında değiştirilemeyen sabit değerler olan sabitleri de kapsar. Bir değişkeni sabite dönüştürmek için, veri türünden önce 'const' anahtar kelimesi gelir ve sabiti adlandırmak için büyük harf kuralı izlenir. Toplama, çıkarma, çarpma ve bölme gibi aritmetik işleçler de ele alınır; burada tamsayılarla bölme ondalık bölümleri kesebilir, sonucu depolamak için kayan nokta veya çift kullanımını gerektirir ve herhangi bir bölme işleminin geri kalanını elde etmek için katsayı operatörü kullanılır.
- 00:45:00 Eğitmen, 2'ye bölündüğünde kalanını bularak bir sayının tek mi çift mi olduğunu hızlı bir şekilde belirlemek için kullanılabilen modül de dahil olmak üzere C programlamadaki aritmetik operatörleri açıklar. Video aynı zamanda artırma ve eksiltme operatörlerini de kapsar. bir değişkeni 1 artırmak veya azaltmak için kullanılabilir ve kullanıcıların bir değişken üzerinde aritmetik işlem yapmasına ve sonucu bir kısayol kullanarak aynı değişkene geri atamasına izin veren artırılmış atama işleçleri kullanılabilir. Son olarak, eğitmen, scanf işleviyle kullanıcı girdisini kabul etmeye ilişkin bir genel bakış sunar ve C programlamasında bilgi ister.
- 00:50:00 Eğitmen, C programlamada, kullanılan değişken türü için uygun biçim belirleyici ile scanf işlevini kullanarak kullanıcı girdilerinin nasıl kabul edileceğini açıklar. Bu bölüm, boşluklu dizeleri kabul etmenin beyaz boşluklar nedeniyle scanf yerine fgets işlevini gerektirdiği uyarısı ile tamsayıları ve dizeleri kabul etmeyi kapsar. Eğitmen ayrıca yeni satır karakterlerinden kurtulmak için fget'leri kullandıktan sonra dizenin nasıl biçimlendirileceğini de açıklar. Bu bölüm, okunabilirliği artırmak için printf deyimi biçimlendirmesine genel bir bakışla sona ermektedir.
- 00:55:00 Videonun bu bölümünde eğitmen, matematik başlık dosyasını eklerken C'deki kullanışlı matematik fonksiyonlarını tartışıyor. Karekök, üs, yuvarlama (tavan ve taban kullanılarak), mutlak değer, logaritmalar ve trigonometri fonksiyonlarının kodda nasıl kullanılacağı örneklerle açıklanmıştır. Daha sonra eğitmen, kullanıcının yarıçap girdisine dayalı olarak bir dairenin çevresini hesaplayan bir programın nasıl yazılacağını gösterir ve daha da ileri giderek pi çarpı yarıçapın karesi formülünü kullanarak dairenin alanını hesaplar ve görüntüler.
Bölüm 2
- 01:00:00 Videonun bu bölümünde eğitmen, C programlama dilini kullanarak bir dairenin çevresini ve alanını nasıl hesaplayacağını ve karekök fonksiyonunun kullanılmasını gerektiren bir dik üçgenin hipotenüsünün nasıl bulunacağını göstermektedir. math.h başlık dosyasından. Eğitmen ayrıca, koşulları kontrol ederek ve kodu buna göre çalıştırarak if ifadelerini ve bunların bir programa seçim eklemek için nasıl kullanıldığını da tanıtır. Büyüktür veya eşittir koşulunun ve çift eşittir işaretli karşılaştırma işlecinin nasıl kullanılacağını ve ayrıca bir koşul yanlış olduğunda farklı bir çıktı sağlamak için else deyimlerinin nasıl kullanılacağını gösterir.
- 01:05:00 video, C programlamadaki if deyimlerini ve else if deyimlerini tartışır. Bu ifadeler, programın bir koşulun doğru olup olmadığını kontrol etmesine ve doğruysa belirli bir kod alt kümesini gerçekleştirmesine izin verir ve değilse, program başka bir koşulu kontrol etmek için bir sonraki bloğa geçer. Tüm koşullar yanlış olarak değerlendirilirse, program else bloğu içindeki kodu yürütür. Ek olarak, video birden fazla if ifadesi kullanmaya kıyasla daha etkili bir alternatif olarak bir switch ifadesinin kullanımını tanıtır. switch deyimi, bir değerin case anahtar sözcüğü kullanılarak birçok duruma karşı eşitlik açısından test edilmesini sağlar. Son olarak video, eşleşen bir durum bulunduğunda anahtardan çıkmak için bir switch ifadesindeki her vakadan sonra bir break ifadesi eklemenin önemini vurguluyor.
- 01:10:00 Videonun bu bölümünde eğitmen, sıcaklığı Celsius'tan Fahrenheit'e veya tersini çeviren bir programın nasıl oluşturulacağını öğretiyor. Program, ölçüm birimi (Celsius veya Fahrenheit) ve mevcut sıcaklık için kullanıcı girişini kabul eder ve ardından dönüştürmeyi gerçekleştirmek için if/else ifadelerini ve uygun formülleri kullanır. Eğitmen ayrıca büyük/küçük harf duyarlılığını işlemek için to_upper işlevinin nasıl kullanılacağını ve kayan noktalı sayıları kabul etmek için scanf'in nasıl kullanılacağını gösterir. Program, kullanıcıdan giriş yapmasını ister ve dönüştürülen sıcaklığı görüntüler.
- 01:15:00 Kursun bu bölümünde eğitmen, kullanıcı girişine dayalı olarak sıcaklık birimlerini (Celsius'tan Fahrenheit'e ve tersi) dönüştüren C dilinde bir programın nasıl oluşturulacağını gösterir. Program, kullanıcıdan sıcaklığı ve ölçü birimini girmesini ister, scanf kullanarak girişi kabul eder ve ardından sıcaklık birimlerini gerektiği gibi dönüştürmek için bir dizi koşullu ifade kullanır. Eğitmen, programın akışındaki farklı işlem türlerini işlemek için format belirticilerin kullanımını, Celsius'tan Fahrenheit'a dönüştürme formülünü ve switch deyimini açıklar. Nihai program indirilmek ve incelenmek üzere yorumlar bölümünde yayınlanmıştır.
- 01:20:00 Videonun bu bölümünde, eğitmen C'de toplama, çıkarma, çarpma ve bölme yapabilen basit bir hesap makinesi programının nasıl oluşturulacağını gösterir. Program, kullanıcının girişine göre hangi işlemin gerçekleştirileceğini belirlemek için bir switch deyimi kullanır. Ek olarak, mantıksal işleçlerin kullanımı, özellikle bir dizi koşulun doğru olup olmadığını kontrol eden "ve" işleci açıklanır. Eğitmen, bir sıcaklığın belirli bir aralığa düşüp düşmediğini kontrol etmek için mantıksal operatörlerin nasıl kullanılacağına ve durum kontrollerine boole değişkenlerinin nasıl dahil edileceğine dair örnekler sunar.
- 01:25:00 veya mantıksal işleci ve mantıksal olmayan işleci tartışılır. veya mantıksal işleci, en az bir koşulun doğru olup olmadığını kontrol ederken, mantıksal olmayan işleci bir koşulun durumunu tersine çevirir. veya operatörü, daha fazla dikey çubuk ekleyerek birden çok koşulu kontrol etmek için kullanılabilir. Öte yandan, not operatörü, bir programın yazılma şekli için daha fazla seçenek sunabilir. Bu mantıksal işleçler, daha karmaşık koşullar oluşturmaya ve bir programın verimliliğini artırmaya yardımcı olabilir.
- 01:30:00 Eğitmen, aynı kodu tekrar etmekten kaçınmak için C programlamada fonksiyonları kullanmayı öğretir. Yeni bir işlev oluşturarak, kod bir kez yazılabilir ve ardından yalnızca işlev çağrılarak birden çok kez yeniden kullanılabilir. Eğitmen daha sonra karakter dizilerini ve tamsayıları bir işleve argüman olarak geçirme örneğiyle argümanları ve parametreleri tartışmaya geçer. İşlevin kendisine iletilen değişkenlerden haberdar olması için parametrelerin işlev bildiriminde bildirilmesi gerekir. Eşleşen bir parametre kümesi olmadan işlev çağrılamaz.
- 01:35:00 Metnin bu bölümünde, konuşmacı return ifadesi kavramını ve bunun çağıran işleve nasıl bir değer döndürebileceğini açıklar. Bir bağımsız değişkeni kabul edecek, bu bağımsız değişkenin karesini alacak ve ardından sonucu çağıran işleve geri döndürecek "kare" adlı bir işlev örneği gösterirler. Ayrıca üçlü operatörün sözdizimini, bir değer atarken veya döndürürken if-else deyimini kullanmanın kısayolunu tartışıyorlar ve maksimum iki tam sayıyı bulmak için nasıl kullanılabileceğinin bir örneğini gösteriyorlar. Konuşmacı, işlev bildiriminde dönüş anahtar sözcüğünü kullanırken veri türünü eşleştirmenin önemini de vurgular.
- 01:40:00 Bir değer atarken veya döndürürken if-else deyimini kullanmak için kısayol görevi gören üçlü işleci öğreniyoruz. Operatör bir koşuldan, ardından bir soru işaretinden, koşul doğruysa döndürülecek bir değerden, iki noktadan ve koşul yanlışsa döndürülecek değerden oluşur. Ayrıca, bir işleve yapılan çağrıların doğru sayıda ve türde bağımsız değişkenlerle yapılmasını sağlayan işlev prototiplerini de tartışacağız. Ana işlevden önce bir işlev prototipi ekleyerek, beklenmedik davranışlardan kaçınabilir ve yanlış bağımsız değişkenler kullanılırsa hatalar alabiliriz.
- 01:45:00 Videonun bu bölümünde, eğitmen C'deki işlev prototiplerini ve avantajlarını açıklamanın yanı sıra dize uzunluğu, dize karşılaştırması, dize alt dize, dize gibi C'de önceden yazılmış bazı yararlı dize işlevlerini tanıtıyor. üst ve dize kedi. Eğitmen, bu işlevlerin her birinin nasıl çalıştığına dair örnekler verir ve çıktılarını gösterir. Dize karşılaştırma işlevi, karşılaştırılan iki dize aynıysa sıfır, değilse diğer sayılar döndürür. Eğitmen, bu dize işlevlerini kullanan bir kod parçacığı ekleyerek bölümü sonlandırır.
- 01:50:00 Eğitmen, bir kod bölümünü sınırlı sayıda tekrarlayan for döngülerini kapsar. Bir for döngüsü kullanarak 1'den 10'a kadar saymanın bir örneğini veriyor ve bir for döngüsü için gerekli olan üç ifadeyi açıklıyor: bir indeks bildirmek, kodun ne kadar süreyle tekrarlanacağına dair bir koşul tanımlamak ve indeksi artırmanın veya azaltmanın bir yolu. Ayrıca, dizini artırmanın ve azaltmanın farklı yollarını da gösteriyor. Eğitmen daha sonra, belirli bir koşul doğru kaldığı sürece kodun bir bölümünü muhtemelen sınırsız kez tekrarlayan while döngülerini açıklamaya geçer ve kullanıcı geçerli bir yanıt girene kadar kullanıcılardan adlarını isteme örneği verir.
- 01:55:00 Videonun bu bölümünde eğitmen, C programlamada kullanıcı girişi için scanf yerine fget'lerin nasıl kullanılacağını gösteriyor. Daha sonra, kullanıcıdan adını girmesini istemek ve adlarını doğru girmezlerse onlara bağırmak için bir süre döngüsü kullanırlar. Eğitmen daha sonra do-while döngüsünü tartışmaya geçer ve sıfırdan büyük olmaları şartıyla kullanıcıdan istediği kadar sayı girmesini isteyen ve bu sayıların toplamını hesaplayan bir programın tanıtımını sağlar.
Bölüm 3
- 02:00:00 C Programlama Tam Kursunun bu bölümünde, eğitmen C'deki bir while döngüsü ile bir do-while döngüsü arasındaki farkı açıklar. While döngüsü önce koşulu kontrol eder ve ardından koşul doğruysa kodu yürütür. true, bir do-while döngüsü kodu bir kez yürütür ve devam etmeden önce koşulun doğru olup olmadığını kontrol eder. Eğitmen bunu bir örnek kodla gösterir ve bir while döngüsünü do-while döngüsüne nasıl değiştireceğini açıklar. Bu bölüm ayrıca başka bir döngünün içindeki bir döngü olan iç içe döngüleri de kapsar ve satırlar, sütunlar ve semboller için kullanıcı giriş değerlerine dayalı olarak sembollerden oluşan bir dikdörtgen yazdırmak için iç içe döngüler kullanmanın bir örneğini gösterir.
- 02:05:00 Videonun bu bölümünde, eğitmen C'de iç içe döngüler kullanarak dikdörtgen şekillerin nasıl oluşturulacağını gösteriyor. Kullanıcının bir sembol ve dikdörtgen için satır ve sütun sayısını girmesine izin veriyor, ancak nasıl yapılacağını da gösteriyor. uygun kullanıcı girişine izin vermek için giriş arabelleğini temizlemek için. Eğitmen ayrıca, continue ve break deyimleri arasındaki farkı C döngüleri bağlamında açıklar; burada continue, kodun bir bölümünün geri kalanını atlar ve bir sonraki döngü yinelemeye zorlar, break ise döngüden tamamen çıkar. Son olarak, eğitmen dizi kavramını aynı veri türünden birçok değeri saklayabilen bir veri yapısı olarak tanımlar ve bir değişkenin nasıl diziye dönüştürüleceğini gösterir.
- 02:10:00 Video C programlama dilinde dizi kavramını kapsar. Diziler, aynı veri türündeki birden çok değeri sabit boyutlu bir veri yapısında depolamanın bir yoludur. Video, dizin numaralarını kullanarak bir dizinin nasıl başlatılacağını ve belirli öğelere nasıl erişileceğini gösterir. Bir diziyi başlatmanın, hemen değer atamak veya daha sonra programda değer atamak gibi çeşitli yolları vardır. Video ayrıca bir for döngüsü kullanarak bir dizinin tüm öğelerinin nasıl döngüye alınacağını ve yazdırılacağını da açıklar.
- 02:15:00 Video, C programlamada bir dizinin öğeleri arasında nasıl geçiş yapılacağını ve bunların nasıl gösterileceğini kapsar. Eğitmen, dizinin öğelerine erişmek için kullanılan for döngüsünün dizini ile bir for döngüsü ve bir printf deyimi kullanmayı gösterir. Ayrıca, diziye öğeler eklendiğinde veya diziden çıkarıldığında otomatik olarak güncellenecek olan operatörün boyutunu kullanarak döngünün yinelenmesi gereken sayının nasıl hesaplanacağını da gösterirler. Eğitmen daha sonra, her öğenin kendisinin bir dizi olduğu bir dizi olan iki boyutlu bir dizi oluşturmaya devam eder. Basit bir ızgara veya veri tablosu örneğini kullanarak iki boyutlu bir dizinin nasıl başlatılacağını ve düzenleneceğini gösterirler.
- 02:20:00 Eğitmen, C programlamada iki boyutlu bir diziye değerlerin nasıl bildirileceğini ve atanacağını anlatır. Ayrıca, iç içe geçmiş döngüler ve "d" biçim belirleyicisi kullanılarak iki boyutlu bir dizinin öğelerinin nasıl görüntüleneceğini de açıklarlar. Eğitmen daha sonra operatörün boyutunu ve satırlardan birinin boyutunu ve ilk satırda bulunan öğelerden birinin boyutunu kullanarak iki boyutlu bir dizinin satır ve sütun sayısının nasıl hesaplanacağını gösterir. Bölüm, 2B diziye eklenen yeni bir satırla kodun nasıl test edileceğine dair bir örnekle sona eriyor.
- 02:25:00 Videonun bu bölümünde, eğitmen C'de iki boyutlu bir dizinin nasıl oluşturulacağını açıklıyor; bu, her öğenin tam bir dizi olduğu bir dizi dizisidir. Öğelerden birine erişmek için iki dizin kullanılır - biri satır ve diğeri sütun için. Eğitmen ayrıca, her bir öğenin bir dizi olması dışında, bireysel karakterlerin 2B dizisi olan bir dizi dizisinin nasıl oluşturulacağını da gösterir. Bir dizi dizisini görüntülemek için bir for döngüsü kullanılabilir. Son olarak eğitmen, değer için geçici depolama olarak üçüncü bir değişken sunarak değişkenlerin C'de nasıl değiş tokuş edilebileceğini açıklar. Bir sonraki başlıkta ele alınacak olan sıralama algoritmalarında değişkenleri değiştirmek önemlidir.
- 02:30:00 Eğitmen, C'deki iki değişkenin değerlerinin hem tamsayı hem de karakter dizileri için nasıl değiştirileceğini öğretir. Eğitmen, geçici değişkenleri ve dize kopyalama işlevini kullanarak, ikinci bağımsız değişkenin uzunluğu birinciden daha kısaysa karakter dizileriyle değerlerin nasıl değiş tokuş edileceğini ve beklenmeyen davranışlardan nasıl kaçınılacağını gösterir. Eğitmen ayrıca, değiş tokuş değerlerini daha iyi anlamak için değişkenleri sıvı içeren bardaklar olarak hayal etmeyi önerir ve yorumlar bölümünde örnek kod sağlar. Bunu takiben eğitmen, bir dizi içindeki öğeleri sıralamak için bir programın nasıl yazılacağını, önce bir tamsayı dizisiyle, sonra bir karakter dizisiyle açıklar. Eğitmen, sıralama için ayrı bir işlev bildirir ve dizi boyunca yineleme yapmak ve sıralama için değerleri karşılaştırmak için iç içe for döngüleri kullanır.
- 02:35:00 Konuşmacı, kabarcık sıralama algoritmasını kullanarak bir dizinin öğelerinin C'de nasıl sıralanacağını tartışıyor. Geçici değişkenlerin ve if ifadelerinin kullanımını ve sıralanan sayının boyutunun dizideki son konumunu nasıl etkilediğini açıklarlar. Konuşmacı ayrıca, veri türünü ve yazdırma işlevini değiştirerek bir karakter dizisinin nasıl sıralanacağını da gösterir. Daha sonra, gerçek dünyadaki nesneleri taklit etme yeteneği ile ilgili üyeleri tek bir bellek bloğunda düzenlemenin bir yolu olarak yapılar kavramını tanıtırlar. Bir yapı, struct anahtar kelimesi ve ardından üyelerini temsil eden bir etiket adı ve bir küme kaşlı ayraç kullanılarak tanımlanır.
- 02:40:00 Videonun bu bölümünde eğitmen C programlama dilindeki yapıları ve typedef'i öğretiyor. Yapılar, bir programcının ilgili değerleri bir bellek bloğunda tek bir ad altında gruplamasına izin verir ve bunlar, farklı veri türlerine sahip üyelere değer atamak için kullanılabilir. typedef anahtar sözcüğü, varolan bir veri türüne bir takma ad verir, bu da veri türünün kodda kullanılmasını kolaylaştırır. Eğitmen ayrıca üç üyeli bir yapı oluşturma ve bunlara değer atama örneği gösterir. Video, kullanmak isteyen kullanıcılar için örnek bir kod sağlar.
- 02:45:00 Yapı, ana işlevin dışında oluşturulur ve "student" adlı bir etiket adı verilir ve ad için bir karakter dizisi ve GPA için bir kayan değişken içerir. Dört öğrenciden oluşan bir dizi başlatılır ve ardından "öğrenciler" adı verilen bir diziye yerleştirilir. Bir for döngüsü kullanan program, dizi boyunca dolaşır ve nokta üye erişim işlecini kullanarak her öğrencinin adını ve genel not ortalamasını yazdırır. Son olarak, video, bir yapı ile "typedef" anahtar kelimesini kullanırsak, yapıyı oluşturmak için artık yapı anahtar kelimesini kullanmamıza gerek olmadığını ve bunun yerine ona atadığımız takma adı kullanabileceğimizi açıklıyor.
- 02:50:00 Eğitmen, C'de yapı dizileri oluşturmayı öğretir; burada dizideki her öğe, her öğrenci için ad ve not ortalaması gibi verileri içeren bir yapıdır. Eğitmen ayrıca, tamsayı değerleri ilişkili adlarla değiştirerek bir programı daha okunabilir hale getirebilen kullanıcı tanımlı adlandırılmış tamsayı tanımlayıcı türleri olan numaralandırmaları kullanarak, kodun programcı ve kodu inceleyen herkes için anlaşılmasını kolaylaştırır. Numaralandırmaların yapısı özetlenir ve eğitmen, bir sıralama değişkeninin değerine dayalı olarak farklı çıktılar yazdırmak için if-else ifadelerinde sıralamaların nasıl kullanılacağını gösterir.
- 02:55:00 Videonun bu bölümünde eğitmen C programlamada rasgele sayıların nasıl üretileceğini gösteriyor. Geçerli zaman, 0 ile 32767 arasında rasgele bir sayı üreten rand işlevi için bir çekirdek oluşturmak için kullanılır. Belirli bir aralıkta rasgele bir sayı elde etmek için modül operatörü kullanılabilir. Eğitmen, 1 ile 6 arasında (bir zar atmak için) rastgele bir sayı üretme ve üç zar atmak için bir örnek verir. Rastgele sayılar üretme bilgisi kullanılarak bir sayı tahmin oyunu da tanıtılmaktadır. Minimum ve maksimum aralık için sabitler ayarlanır ve kullanıcıdan sayıyı tahmin etmesi istenir. Program, verilen aralık arasında rasgele bir sayı oluşturmak için rand işlevini kullanır ve kullanıcı, doğru sayı girilene kadar tahminini ayarlamak için geri bildirim alır.
4. Bölüm
- 03:00:00 Eğitmen, programın belirtilen iki değer arasında rastgele bir sayı ürettiği, kullanıcıdan sayıyı tahmin etmesini istediği ve tahmin çok yüksek veya çok düşükse geri bildirim sağladığı C'de bir sayı tahmin oyununun nasıl oluşturulacağını öğretir. veya düzeltin. Program, en az bir tahminin yapılmasını sağlamak için bir do-while döngüsü kullanır ve kullanıcı tarafından yapılan tahminlerin sayısını sayar. Eğitmen ayrıca çıktıyı görsel olarak daha çekici hale getirmek için bazı metin süslemeleri ekler. Bu örnek, C'de koşullu ifadelerin, döngülerin, kullanıcı girişinin ve rasgele sayı üretiminin kullanımını gösterir.
- 03:05:00 Eğitmen C'de bilgi yarışması oyununun nasıl oluşturulacağını gösterir. Oyun, soruları saklamak için iki boyutlu bir karakter dizisi ve seçenekleri saklamak için ayrı bir iki boyutlu karakter dizisi kullanır. Doğru cevaplar tek boyutlu bir karakter dizisinde saklanır. Oyun, sahip olduğu soru sayısını hesaplar ve bunları olası seçenekleriyle birlikte görüntüleyerek birer birer dolaşmak için bir for döngüsü kullanır. Bunu yapmak için eğitmen, seçenekler dizisindeki her dördüncü dizeyle başlayan iç içe bir for döngüsü kullanır. Bu for döngüsü, her soru için dört olası seçeneği görüntüleyerek dört kez döngü yapar.
- 03:10:00 Eğitmen, C'de kullanıcıya sorular soran ve cevaplarını kontrol eden basit bir bilgi yarışması oyununun nasıl oluşturulacağını anlatıyor. Kod, soruları ve seçenekleri görüntülemek için iç içe bir for döngüsü kullanır, scanf kullanarak kullanıcı girişini kabul eder ve "toupper" işlevini kullanarak küçük harfleri büyük harfe dönüştürür. Program daha sonra kullanıcının tahmininin doğru cevapla eşleşip eşleşmediğini kontrol eder ve puanı buna göre artırır. Tüm sorular yanıtlandıktan sonra, program nihai puanı görüntüler. Eğitmen ayrıca bitsel operatörleri kısaca açıklar ve C'de beş farklı bitsel operatörün nasıl kullanılacağını gösterir.
- 03:15:00 C programlamada bitsel işlemleri öğreniyoruz. İki ikili sayıya uygulandığında, yalnızca her iki karşılık gelen bit bir ise sonucumuza bir atayan AND operatörüyle başlıyoruz. Ardından, karşılık gelen bitlerden herhangi biri bir ise, sonucumuza bir atayan OR operatörüne geçiyoruz. Karşılık gelen yalnızca bir bit bir ise, dışlayıcı-OR operatörü sonuca bir atar. Ayrıca ikili sayıdaki bitleri sola veya sağa kaydıran sol ve sağ kaydırma operatörlerini de öğreniyoruz. Bitleri sola kaydırmak, sayıyı etkili bir şekilde ikiye katlarken, sağa kaydırmak ise tam tersi etkiye sahiptir.
- 03:20:00 Video, her birimin bir değer tutabilen bir bellek bloğu olduğu, RAM içindeki bir bayt dizisi olan C programlamasındaki belleği açıklar. Bir bellek adresi, bir bellek bloğunun RAM içinde bulunduğu yeri gösterir ve bu bir sokak adresi gibidir. Bir değişken bildirirken, bir bellek adresiyle ilişkili bir değeri tutmak için bazı bellek bloklarını bir kenara bırakır. Her değişken, bir baytlık bir bellek bloğu kullanır ve video, örnek olarak çeşitli karakterlerin bellek adreslerini ve boyutlarını gösterir. Video ayrıca, her basamak için 16 olası değer oluşturmak üzere 0'dan 9'a kadar sayıları ve a'dan f'ye kadar harfleri kullanan onaltılık değerleri de kısaca açıklıyor. Son olarak video, iki bayt bellek kullanan kısa veri türlerini kapsar.
- 03:25:00 Eğitmen, değişkenlerin bellek bloklarını nasıl kullandığı ve dizilerin boyutlarına ve veri türlerine göre birden çok bellek bloğunu nasıl kullandığı da dahil olmak üzere, C programlamasında belleğin temellerini açıklar. Ayrıca, bir bellek adresini başka bir değişkenin değeri olarak tutan işaretçiler kavramını tanıtıyor ve belirli görevleri daha kolay gerçekleştirmek için nasıl kullanılabileceğini açıklıyor. Eğitmen, bir değişkenin değerinin ve adresinin nasıl görüntüleneceğini ve işaret ettiği değişkenle aynı veri tipinde bir işaretçinin nasıl oluşturulacağını gösterir.
- 03:30:00 C programlamada işaretçileri öğreniyoruz. İşaretçiler, dolaylı işleç olarak bir yıldız işareti kullanılarak bildirilir ve yaygın bir adlandırma kuralı, küçük harfli bir "p" kullanmak ve ardından ilk harfi büyük olacak şekilde değişken adını kullanmaktır. İşaretçinin değeri bir adrestir ve o adreste saklanan değere dolaylı operatör kullanarak erişebiliriz. İşaretçinin veri türlerinin ve işaret ettiği değişkenin tutarlı olduğundan emin olmak önemlidir. İşaretçiler ayrıca işlevlere argüman olarak iletilebilir ve işlevin işaret edilen değişkende depolanan değere erişmesine ve bu değeri değiştirmesine izin verir. Ek olarak, işaretçiler iki adımda bildirilebilir ve başlatılabilir, ancak hemen bir değer atamak iyi bir uygulamadır.
- 03:35:00 Eğitmen C programlamadaki işaretçileri açıklar. İşaretçi, başka bir değişkene, diziye ve daha fazlasına bellek adresi tutan bir değişkendir. Bir işaretçi bildirmek için dolaylı işleci kullanırsınız. İşaretçiye bir değer atamak için aynı işleci kullanırsınız. Eğitmen işaretçiler, fopen, fwrite ve fclose kullanarak C'de bir dosyaya nasıl yazılacağını gösterir. Bir dosyaya yazmak için, bir dosyaya işaretçi oluşturmanız ve dosyaya yazmak için 'fprintf' kullanmanız gerekir. Eğitmen ayrıca bir dosyayı silerek ve bir bilgisayarın dizininde belirli bir konumdaki bir dosyaya yazarak dosya G/Ç'yi gösterir.
- 03:40:00 Eğitmen, "file" veri türünde bir işaretçi oluşturarak ve dosyayı açmak için fopen işlevini kullanarak C programlamada bir dosyanın içeriğinin nasıl okunacağını gösterir. Eğitmen, bir defada metin belgesinin bir satırını tutmak için bir karakter dizisini içeren bir tamponun nasıl kullanılacağını ve fgets işlevini kullanarak dosyadan tek bir satırın nasıl okunacağını gösterir. Bu bölüm aynı zamanda bir while döngüsü kullanılarak bir dosyadaki tüm satırların nasıl görüntüleneceğini ve dosyanın okumaya çalışmadan önce var olup olmadığını kontrol etmek için dosya algılamanın nasıl ekleneceğini içerir.
- 03:45:00 Videonun bu bölümünde eğitmen, tahtayı sıfırlama, tahtayı yazdırma, boş alanları kontrol etme, oyuncu hamlesi, bilgisayar hamlesi, kazananı kontrol etme fonksiyonları dahil olmak üzere programda kullanılacak fonksiyon prototiplerini gözden geçirir. ve kazananı yazdırın. Eğitmen bu işlevleri bildirdikten sonra, tahta adlı bir 2B karakter dizisinin yanı sıra oynatıcı ve bilgisayar karakterleri için sabitler de dahil olmak üzere kullanılacak bazı genel değişkenleri tartışır. Kazanan için yerel bir değişken bildirdiği, onu boş bir alana ayarladığı, tahtayı sıfırladığı ve yazdırdığı ana işlev daha sonra tartışılacaktır. Video ayrıca, kartı sıfırlama işlevinde kullanılan yuvalanmış for döngüleri ve baskı panosunda kullanılan bir printf deyimi hakkında ayrıntılar içerir.
- 03:50:00 C Programlama Tam Kursu'nun bu bölümünde eğitmen, ana işlevde yazıcı panosu işlevini çevreleyecek bir while döngüsünün nasıl oluşturulacağını açıklar. While döngüsünün koşulu, kazanan boş bir alansa ve boş alanları kontrol et işlevinin çağrılmasından döndürülen değer sıfıra eşit değilse, döngü devam eder. Boş alanları kontrol et işlevi ayrıca, 2B karakter dizisinde döngü yapmak ve herhangi bir nokta doluysa boş alanlar yerel değişkenini azaltmak için iç içe geçmiş iki for döngüsü kullanılarak oluşturulur. Kullanıcıdan hamle yapmak için satır ve sütun numaralarını girmesini isteyen ve yerin dolu olup olmadığını kontrol eden oyuncu taşıma fonksiyonu anlatılmaktadır. Kazanan kontrolü işlevi ayrıca her satırı bir kazanma koşulu için kontrol etmek ve her sütunu bir kazanma koşulu için kontrol etmek için oluşturulur.
- 03:55:00 Eğitmen, bir Tic Tac Toe oyununda bir kazanan için satırları, sütunları ve köşegenleri kontrol etme kodunu gözden geçirir. Oyun tahtasındaki öğeleri yinelemek ve eşleşmeleri kontrol etmek için for döngülerinin ve if ifadelerinin kullanımını açıklarlar. Bir kazanan varsa, işlev kazanan öğenin karakter değerini döndürür. Değilse, boş bir karakter döndürülür. Eğitmen daha sonra bilgisayarın, sembolünü tahtaya yerleştirmek için rastgele koordinatlar üretmeyi içeren hareketi için kod sağlar. Rastgele sayılar üretmeden önce, program tahtada boş yer olup olmadığını kontrol eder.
- 04:00:00 Eğitmen C'de Tic Tac Toe oyununu oluşturmaya devam ediyor. Bir hamle yapmadan önce oluşturulan noktanın boş bir alan olduğundan emin olmak için bir kontrol ekliyorlar. Başka boşluk yoksa, "kazanan yazdır" işlevi boş bir alanla çağrılır, bu da oyunun berabere olduğu anlamına gelir. Kazanan oyuncuysa "Sen kazandın", bilgisayarsa "Kaybettin" ve kazanan yoksa "Beraberlik" yazdırdığı için bu işlevin oldukça kolay olduğunu açıklıyorlar. Eğitmen bir do while döngüsü kullanarak bir "tekrar oynat" seçeneğini uygular ve her döngünün başında kazanan ve yanıt değişkenlerini sıfırlar. Oyun, eğitmenin her adımı açıklamasıyla birden çok kez çalıştırılır ve test edilir. Son olarak, kodun kullanıcıların kullanması için yorumlar bölümünde yayınlanacağını belirtiyorlar.
- 2021.10.07
- www.youtube.com
Nesne Yönelimli Programlamanın Temel Kavramları
Nesne Yönelimli Programlamanın Temel Kavramları
Nesne yönelimli programlamanın dört temel kavramı soyutlama, kapsülleme, kalıtım ve çok biçimliliktir. Anlamlarına geçmeden önce, bir nesnenin ne olduğunu anlamak önemlidir. Bir nesne, bir araba veya kitap gibi fiziksel veya diş randevusu veya banka hesabı gibi fiziksel olmayan gerçek dünyadan bir şeyi temsil eder.
Nesne yönelimli programlama bağlamında, bir nesne, geliştirilmekte olan yazılım uygulamasıyla ilgili, verilerin saklanması ve işlenmesi gereken herhangi bir şeyi ifade eder. Nesneler varlık olarak da bilinir.
Soyutlama, yalnızca ilgili verilere ve bir nesneyle ilgili görevlere odaklanarak gerçekliği basitleştirmeyi içeren ilk temel kavramdır. Örneğin, bir kişi hakkındaki verileri işlemek için bir uygulama tasarlarken, yalnızca gerekli veriler ve işlemler dikkate alınır.
Nesneleri programlı olarak oluşturmak için bir sınıf gereklidir. Bir sınıf, nesneler oluşturmak için bir şablon görevi görür ve bir nesnenin özniteliklerini (alanlar veya özellikler olarak da bilinir) ve işlemleri (davranışlar veya yöntemler olarak da bilinir) tanımlamak için bir programcı tarafından yazılır. Nitelikler nesnenin verilerini tanımlarken, işlemler nesne tarafından gerçekleştirilebilecek eylemleri temsil eder.
Kapsülleme, ikinci temel kavramdır ve bir nesnenin iç işleyişinin karmaşıklığını diğer programlardan ve programcılardan gizlemeyi içerir. Bir nesne içindeki veriler ve işlevler birbirine bağlı olduğundan ve dış müdahaleden korunduğundan, genellikle bilgi gizleme olarak adlandırılır. Deneyimli programcılar genellikle yeni programcılar tarafından kullanılan sınıflar oluşturur ve derlenmiş sınıf kitaplıkları fikri mülkiyeti korur.
Kalıtım, bir sınıfın yöntemlerini ve özelliklerini başka bir sınıftan türetmesine izin veren üçüncü temel kavramdır. Bu, alt sınıfların bir üst sınıftan miras aldığı bir sınıf hiyerarşisine yol açar. Örneğin, bir çalışan sınıfı bir kişi sınıfından ve bir müşteri sınıfı da kişi sınıfından miras alır. Bu, alt sınıfların üst sınıflarının özelliklerini ve yöntemlerini genişlettiği bir ilişki türü oluşturur.
Son temel kavram olan polimorfizm, bir sınıfın kalıtsal yöntemleri kendi yöntemiyle uygulamasını sağlar. Aynı üst sınıfın farklı alt sınıfları, miras alınan yöntemler için farklı uygulamalara sahip olabilir. Polimorfizm, aynı arayüze sahip farklı nesne biçimlerinin, belirli alt sınıf uygulamalarına bağlı olarak farklı davranmasına izin verir.
Özetlemek gerekirse, soyutlama gerçeği basitleştirir, kapsülleme karmaşıklığı gizler, kalıtım sınıf hiyerarşileri kurar ve çok biçimlilik kalıtsal yöntemlerin çeşitli uygulamalarına izin verir. Bu temel kavramlar, nesne yönelimli programlamanın temelini oluşturur.
- 2020.11.01
- www.youtube.com
C++ Kursunda Nesne Yönelimli Programlama (OOP)
C++ Kursunda Nesne Yönelimli Programlama (OOP)
Bu video, C++'da nesne yönelimli programlamaya (OOP) genel bir bakış sağlar. Sınıflar, nesneler ve yöntemler gibi OOP'nin temel kavramlarını açıklar. Eğitmen, değişkenleri kullanıcı tanımlı veri türleri olarak bildirmenin önemini vurgulayarak bir C++ sınıfının ve onun üyelerinin oluşturulmasını gösterir. Özel, genel ve korumalı gibi erişim değiştiricileri, nesne üyelerine erişimle ilgili olarak açıklanmaktadır.
Video ayrıca kapsülleme, soyutlama, kalıtım ve polimorfizm dahil olmak üzere OOP ilkelerinin uygulanmasını da kapsar. Yapıcılar ve soyut sınıflar oluşturmak gibi bu ilkelerin kodda nasıl uygulandığına dair örnekler gösterir. Eğitmen, yazılım geliştirmeyi basitleştirme ve karmaşıklığı kullanıcılardan gizleme gibi OOP'nin faydalarını vurgular.
Ayrıca video, türetilmiş bir sınıfın özellikleri bir temel sınıftan miras aldığı kalıtım kavramını araştırıyor. Eğitmen, türetilmiş sınıflar oluşturma sürecini gösterir ve kalıtsal olanlara ek olarak kendi benzersiz özelliklerine nasıl sahip olabileceklerini açıklar.
Video, sanal fonksiyonlar ve polimorfizm üzerine tartışmalarla sona eriyor. Polimorfizmin, nesnelerin ve yöntemlerin birden çok biçime sahip olmasına nasıl izin verdiğini ve bir üst sınıf referansının alt sınıf nesneleri ile kullanılmasını nasıl sağladığını açıklar. Bir işlevin en çok türetilmiş sürümünün çağrıldığında yürütüldüğü vurgulanarak sanal işlevler kavramı tanıtılır.
Genel olarak bu video, temel kavramları, ilkeleri ve pratik uygulamaları kapsayan kapsamlı bir C++ OOP anlayışı sağlamayı amaçlamaktadır. Eğitmen, izleyicileri kanalı Code Beauty'yi takip etmeye teşvik ediyor ve videolar hakkında geri bildirim almaktan memnuniyet duyuyor.
- 00:00:00 Bu video, nesne yönelimli programlamanın temellerini ve pratikte nasıl çalıştığını açıklar. Sınıflar, nesne yönelimli programlamada anahtar bir kavramdır ve değişkenleri kullanmak için kullanıcı tanımlı veri türleri olarak bildirilmelidir.
- 00:05:00 Bu videoda C++ sınıfı oluşturuluyor ve üyeler ekleniyor. Sınıfın adı, şirketi ve yaşı olmak üzere üç özelliği vardır. Sınıfın bir örneği oluşturulur ve ona değişken numarası atanır.
- 00:10:00 Bu videoda eğitmen C++'da bir nesnenin üyelerine nasıl erişileceğini anlatıyor. Özel, genel ve korumalı gibi erişim değiştiricileri, bir nesnenin üyelerine nasıl erişilebileceğini belirler. Bir nesnenin davranışını tanımlamak için bir sınıf yöntemi kullanılabilir.
- 00:15:00 Bu video, C++'da nesne yönelimli programlamanın (OOP) nasıl çalıştığını açıklar. Void dönüş türüyle bir işlev oluşturulur ve işlev, tanıtılan işlevle aynı söz dizimi kullanılarak çağrılır. İşlev daha sonra her seferinde farklı bir çalışan adı ve şirketle beş kez çağrılır. Çalışan adları ve şirket değerleri daha sonra yeni bir çalışan nesnesine kopyalanır ve çalışan nesnesinin öznitelikleri, yeni kopyalanan değerlerin değerlerine ayarlanır.
- 00:20:00 Bu videoda, eğitmen C++'da oluşturucu oluşturmak için üç kuralı adım adım anlatıyor. İlk kural, bir kurucunun ait olduğu sınıfla aynı ada sahip olması, ikincisi bir kurucunun herkese açık olması ve üçüncüsü ise bir kurucunun erişilebilir olması gerektiğidir. Bir oluşturucu oluştururken, bu videoda belirtilen kuralları akılda tutmak önemlidir. Bir kurucu bu kurallardan birine uymuyorsa, bir hata üretilir.
- 00:25:00 Bu videoda eğitmen, sınıf, nesne ve yöntem kavramları da dahil olmak üzere nesne yönelimli programlamanın temellerini açıklıyor. Ardından, nesne yönelimli programlamanın dört temel ilkesini tanımlamaya devam ediyor: kapsülleme, soyutlama, kalıtım ve çok biçimlilik. Son olarak, bir kod örneğinde bu kavramların nasıl uygulanacağını açıklıyor.
- 00:30:00 Bu video, C++'da nesne yönelimli programlamayı (OOP) tanıtır. Bir sınıf, verileri ve diğer sınıfların verilere erişmek ve bunları değiştirmek için çağırabileceği genel yöntemleri kapsayan bir yapıdır. Kapsülleme sağlamak için, sınıf alanları özeldir ve alıcılar ve ayarlayıcılar geneldir.
- 00:35:00 Bu videoda, bir C++ kursu eğitmeni nesne yönelimli programlamanın (OOP) ilkelerini tartışıyor. Eğitmen, kapsülleme ve soyutlamanın karmaşık verileri basitleştirilmiş bir arayüzün arkasına gizlemeye nasıl yardımcı olduğunu tartışır. Eğitmen ayrıca doğrulama kurallarının özel mülklerin ayarlayıcı yöntemlerine nasıl uygulanabileceğini tartışır.
- 00:40:00 Bu videoda sunum yapan kişi, nesne yönelimli programlamanın (OOP) karmaşıklığı kullanıcılardan gizleyerek yazılım geliştirmeyi nasıl basitleştirebileceğini açıklıyor. OOP'nin karmaşık bir süreci nasıl basit gösterebileceğini göstermek için bir akıllı telefon örneği kullanıyorlar. Ardından, sistemin karmaşıklığını kullanıcıdan gizlerken sistemin bir tarafını basit gösteren bir sözleşmenin nasıl oluşturulacağını gösterirler.
- 00:45:00 Bu video, C++'daki nesne yönelimli programlama (OOP) kavramını açıklıyor. Videoda, sanal bir işlev için uygulama gerektiren soyut bir sınıfın nasıl oluşturulacağı ve belirli bir çalışanın terfi alıp alamayacağını görmek için işlevin nasıl test edileceği anlatılmaktadır.
- 00:50:00 Bu videoda yazar terfi ettiriliyor ve o kişi 30 yaşından küçükse terfi ettirilmeyecek. Bu, aslında soyut bir sınıf olan bir sözleşmeyi uygulamamıza izin verir ve bu soyut sınıf veya bu sözleşmenin yalnızca bir kuralı vardır ve bu kural, burada promosyon isteme adı verilen bu saf sanal işlevdir. Yani, bu sözleşmeyi hangi sınıf imzalarsa, hangi sınıf bu soyut çalışandan miras alırsa alsın, ki bu buradaki sınıftır, burada bu yöntemin uygulanmasını sağlamak zorunda kalacak. Bunu test ettik ve sizin de görebileceğiniz gibi, ben terfi almadım ve John aldı, yani soyutlama fikri bu. Ve bu terfi isteme yöntemi, bu bölümün başında akıllı telefonunuzdaki bir düğmeden bahsettiğimiz düğmedir. Nesne yönelimli programlamanın bahsetmek istediğim üçüncü ilkesine kalıtım denir. Kalıtım fikri şudur: süper sınıf veya ebeveyn sınıfı olarak da bilinen bu temel sınıf vardır ve sonra alt sınıf veya alt sınıf olarak da bilinen türetilmiş sınıf vardır.
- 00:55:00 Bu videoda, bir C++ kursu eğitmeni, var olan bir temel sınıftan türetilmiş bir sınıf oluşturarak nesne yönelimli programlamanın nasıl çalıştığını gösteriyor. Temel sınıf özellikleri daha sonra geliştirici sınıfına özgü kendi özelliklerini de kazanan türetilmiş sınıf tarafından miras alınır.
- 01:00:00 Bu videoda, eğitmen C++'da nesne yönelimli programlamanın nasıl çalıştığını tartışıyor. Bir geliştirici sınıfının bir çalışan sınıfından nasıl miras aldığını ve çalışan sınıfının yapıcısının, geliştirici sınıfının belirli özelliklerini başlatmak için nasıl kullanılabileceğini açıklıyor. Eğitmen daha sonra özelliklerin doğru ayarlanıp ayarlanmadığını test etmek için geliştirici sınıfında bir yöntemin nasıl oluşturulabileceğini gösterir. Son olarak, geliştirici sınıfının nasıl kapatılacağını gösterir.
- 01:05:00 Bu videoda, eğitmen nesne yönelimli programlama (OOP) kalıtım ve polimorfizm kavramlarını tartışıyor. Bir kod örneği ile bir sorunu çözmek için bu kavramların nasıl kullanılacağını gösteriyor. Son olarak eğitmen, başka bir sınıftan miras alan bir sınıfın nasıl oluşturulacağını gösterir.
- 01:10:00 Bu video, C++'da nesne yönelimli programlamaya (OOP) kısa bir genel bakış sağlar. Video, bir çalışan sınıfından miras alınan ve bir ders hazırlama işlevi uygulayan bir öğretmen sınıfının nasıl oluşturulacağını açıklar. Video ayrıca, OOP sınıflarını oluştururken ve kullanırken ortaya çıkabilecek bazı sorunları ve bunların nasıl çözüleceğini tartışır.
- 01:15:00 Bu videoda, eğitmen C++'da nesne yönelimli programlama (OOP) kavramını açıklıyor. Polimorfizm, bir nesnenin veya bir yöntemin birçok biçime sahip olma yeteneğini ifade eder. Programlamada polimorfizmin yaygın bir kullanımı, bir alt sınıfın nesnesine atıfta bulunmak için bir üst sınıf referansının kullanılmasıdır. Bu örnek, her ikisi de çalışan sınıfından miras alan geliştirici ve öğretmen sınıflarında ana işleve geri dönerek ve yeni çalışma yöntemini çağırarak polimorfizmin nasıl çalıştığını gösterir.
- 01:20:00 Bu video, C++'da nesne yönelimli programlamanın temellerini kapsar. Videonun ilk bölümü, nesne yönelimli programlamanın tarihçesini ve diğer programlama paradigmalarından nasıl farklı olduğunu anlatıyor. Videonun ikinci kısmı, bir temel sınıfa işaretçinin nasıl oluşturulacağını ve bir çalışan sınıfında bir çalışma yönteminin nasıl sanal hale getirileceğini açıklar. Son olarak video, işaretçinin nasıl çalıştığını ve bunun sonucunda programın nasıl çalıştığını gösterir.
- 01:25:00 Bu videoda, eğitmen C++'da sanal fonksiyonlar ve polimorfizm kavramlarını tartışıyor. Bir sanal işlev çağrıldığında, işlevin en türetilmiş sürümünün yürütüldüğünü açıklıyor. Bu, bir sınıfın türetilmiş sınıflarında bir işlev uygulanmazsa, bunun yerine sınıfın geliştirici sınıfının çağrılacağı anlamına gelir. Ayrıca, çok biçimlilik ile, farklı çalışan türlerinin tek bir büyük nesne gibi ele alınabileceğini ve onlara bir temel sınıf işaretçisi ile başvurulmasına izin verildiğini belirtiyor.
- 01:30:00 Bu video, C++'da Nesne Yönelimli Programlamayı (OOP) tanıtmaktadır. OOP'nin programlamayı nasıl daha düzenli ve anlaşılması kolay hale getirdiğini tartışır. Sunucu ayrıca izleyicilere kanalını takip etmelerini, güzellik kodunu yazmalarını ve oradan abone olmalarını önerir. Son olarak sunucu, izleyicileri videoları hakkında geri bildirimde bulunmaya teşvik ediyor.
- 2021.02.02
- www.youtube.com
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Teknolojik olarak gelişmiş dünyamızda programlama ve bilgisayar bilimi, inovasyonu yönlendiren ve toplumu şekillendiren dönüştürücü disiplinler haline geldi.
Bir sanat formu olarak programlama, zarif ve verimli çözümler yaratmak için yaratıcılığı, mantığı ve problem çözmeyi birleştirir.
Bilgisayar bilimi, bilgisayar programlarının geliştirilmesi ve uygulanması için teorileri, algoritmaları ve metodolojileri kapsayan programlama için bilimsel temel olarak hizmet eder. Ancak, programlamanın kendisi hayal gücü ve ustalık gerektirir. Boş bir tuval sanatçısı gibi, bir programcı da kod satırlarını karmaşık algoritmalara dönüştürerek endüstrilerde devrim yaratan, görevleri basitleştiren ve kullanıcı deneyimini geliştiren dijital şaheserler yaratır. Nesne yönelimli programlama (OOP), bilgisayar biliminde, programcıların kodu yeniden kullanılabilir ve modüler nesneler halinde düzenleyerek karmaşıklığı yönetmesine olanak tanıyan önemli bir paradigmadır. Programcılar, verileri ve davranışları nesnelerde kapsayarak, anlaşılması, bakımı ve genişletilmesi daha kolay olan yaratıcı çözümler tasarlayabilir.
Programlama, problem çözmenin ötesine geçer ve kullanıcı dostu arayüzler tasarlamayı ve ilgi çekici kullanıcı deneyimleri içerir. Bu yön, sanatsal duyarlılığı teknik bilgi ile birleştirir. Programcılar, kullanıcıları memnun eden ve büyüleyen yazılımlar oluşturmak için estetik, sezgisel gezinme ve göz alıcı görseller kullanarak kullanıcı arabirimi (UI) ve kullanıcı deneyimi (UX) tasarlar. Sanat, karmaşık özellikleri sezgisel ve görsel olarak hoş tasarımlara çevirerek, işlevselliği estetik çekicilikle kusursuz bir şekilde harmanlamakta yatar. OOP ile programcılar görevleri ayırabilir ve yazılımın farklı yönlerinden sorumlu olan ayrı nesneler oluşturabilir. Bu modüler yaklaşım, programcıların bireysel nesnelere, bunların etkileşimlerine ve sistemin genel davranışına odaklanmasına izin vererek tasarımda yaratıcılığı teşvik eder. Kalıtım ve polimorfizm gibi OOP ilkelerini kullanan programcılar, sezgisel bir arabirime, kullanıcı dostu arabirime ve görsel olarak çekici estetiğe sahip yazılımlar geliştirebilirler.
Bir bilgisayar bilimi disiplini olan yazılım mühendisliği, programlamanın sanatsal yönünü vurgular. Gereksinim toplamadan devreye alma ve bakıma kadar tüm yazılım geliştirme yaşam döngüsünü kapsar. Yazılım mühendisleri, güvenilir, ölçeklenebilir ve bakımı yapılabilir sistemler ve platformlar tasarlayarak programlamaya mimarlar gibi yaklaşır. İşlevsellik ve zarafeti birleştiren yazılım çözümleri oluşturmak için kod modülerliği, yeniden kullanılabilirlik ve mimari modeller gibi faktörleri göz önünde bulundururlar. Yazılım geliştirme sanatı, hem işlevsel hem de estetik açıdan hoşa giden yazılımlar yaratmak için teknik kısıtlamaları, kullanıcı ihtiyaçlarını ve tasarım hedeflerini dengelemektir. OOP, karmaşıklığı yönetmek için yapılandırılmış bir yaklaşım sağlayarak yazılım geliştirmede önemli bir rol oynar. Kodun sınıflara ve nesnelere ayrılması, yazılım geliştiricilerin modüler, yeniden kullanılabilir ve bakımı yapılabilir sistemler tasarlamasına olanak tanır. Doğru soyutlama ve kapsülleme ile yazılım geliştiriciler, hem işlevsel hem de zarif yazılımla sonuçlanan bir denge kurabilirler.
Programlama ve bilgisayar bilimi sanatı, teknoloji sektörünün ötesine geçerek endüstrileri ve bir bütün olarak toplumu etkiler. Sağlık hizmetlerinden finansa, eğitimden eğlenceye, programlama ve bilgisayar bilimi çalışma, iletişim kurma ve yaşama biçimimizde devrim yaratıyor. Yapay zeka, sanal gerçeklik ve blockchain teknolojisi gibi yenilikler endüstrileri değiştiriyor ve yeni ufuklar açıyor. Programcılar ve bilgisayar bilimcileri, mümkün olanın sınırlarını zorlayarak ve fikirleri gerçeğe dönüştürerek bu dönüştürücü ilerlemelerde kilit bir rol oynuyor. OOP, programcıların çeşitli alanlarda devrim yaratan yenilikçi çözümler oluşturmasına olanak tanır. Programcılar, OOP'nin modüler ve genişletilebilir doğasıyla karmaşıklığı yöneterek yapay zeka algoritmaları, sürükleyici sanal gerçeklik deneyimleri ve güvenli blok zinciri uygulamaları gibi karmaşık sistemler geliştirebilir. Bu ilerlemeler endüstrileri değiştiriyor, üretkenliği artırıyor ve dünyanın dört bir yanındaki insanlar için yaşam kalitesini yükseltiyor.
Karmaşıklık yönetimi, yazılım geliştirmenin önemli bir yönüdür. Sistemler daha karmaşık hale geldikçe, karmaşıklığı yönetmek ve bakım ve ölçeklenebilirliği sağlamak için etkili yaklaşımlar kullanmak gerekli hale gelir.
Nesne yönelimli paradigma, karmaşıklığı yönetmede önemli avantajlar sunan güçlü bir yaklaşımdır. Nesne yönelimli paradigma, verileri ve davranışları nesnelerde kapsülleyerek ve kapsülleme, kalıtım ve polimorfizm gibi kavramları kullanarak karmaşıklığı yönetmek için sağlam bir temel sağlar.
Kapsülleme, nesneler içindeki veri ve yöntemlerin ilişkilendirilmesini destekleyen nesne yönelimli paradigmanın temel bir ilkesidir. Bu kapsülleme, bir nesnenin iç karmaşıklıklarını gizler ve yalnızca onunla etkileşime geçmek için gerekli arabirimleri ortaya çıkarır. Kapsülleme, uygulama ayrıntılarını gizleyerek sistemin diğer bölümlerinin karmaşıklığını azaltır ve geliştiricilerin daha üst düzey soyutlamalara odaklanmasına olanak tanır. Bu, modülerliği teşvik eder ve kod okunabilirliğini geliştirerek karmaşık sistemlerin anlaşılmasını ve bakımını kolaylaştırır.
Soyutlama, karmaşıklığı yönetmeye yardımcı olan nesne yönelimli paradigmada başka bir anahtar kavramdır. Bu, geliştiricilerin karmaşık gerçek dünya nesnelerini gereksiz ayrıntıları soyutlayarak sınıflar olarak temsil etmelerine olanak tanır. Geliştiriciler, soyut sınıflar ve arabirimler oluşturarak, birden çok alt sınıf tarafından miras alınabilen ve uygulanabilen ortak davranışları ve öznitelikleri tanımlayabilir. Sınıfların bu hiyerarşik organizasyonu, geliştiricilerin karmaşık sistemleri daha küçük, daha yönetilebilir bileşenlere ayırarak karmaşıklığı yönetmesine olanak tanır. Her sınıf kendi özel sorumluluklarına odaklanarak daha modüler ve anlaşılır bir kod tabanı sağlar.
Kalıtım, kodun yeniden kullanımını destekleyen ve fazlalığı azaltan nesne yönelimli paradigma tarafından sağlanan güçlü bir mekanizmadır. Bu, yeni sınıfların, aralarında bir "is" ilişkisi kurarak mevcut sınıflardan özellikleri ve davranışları devralmasına olanak tanır. Kalıtım, geliştiricilerin ortak özniteliklere ve davranışlara sahip bir temel sınıf tanımlamasına ve ardından ondan türetilen özel sınıflar oluşturmasına izin vererek karmaşıklığın yönetilmesine yardımcı olur. Sınıfların bu hiyerarşik organizasyonu, kod tekrarını ortadan kaldırır, karmaşıklığı azaltır ve sürdürülebilirliği artırır.
Polimorfizm, farklı türdeki nesnelerin ortak arayüzlerine göre birbirlerinin yerine geçecek şekilde ele alınmasına izin veren nesne yönelimli paradigmanın temel bir özelliğidir. Polimorfizm, geliştiricilerin her nesnenin belirli uygulama ayrıntılarıyla uğraşmak zorunda kalmadan daha yüksek düzeyli bir soyutlamayla çalışan kod yazmasına izin vererek karmaşıklık yönetimini basitleştirir. Geliştiriciler polimorfizmi kullanarak daha esnek ve genişletilebilir sistemler oluşturabilirler çünkü mevcut kodu etkilemeden yeni sınıflar eklenebilmektedir. Bu, uzun vadede karmaşıklığı azaltarak modüler ve ölçeklenebilir geliştirmeyi destekler.
Karmaşıklık yönetimi, yazılım geliştirmenin kritik bir yönüdür ve nesne yönelimli paradigma, bu görev için güçlü bir çerçeve sağlar.
Kapsülleme, soyutlama, kalıtım ve polimorfizm gibi ilkeler aracılığıyla nesne yönelimli paradigma, geliştiricilerin karmaşıklığı etkin bir şekilde yönetmesine ve sürdürülebilir, ölçeklenebilir ve modüler sistemler oluşturmasına olanak tanır. Nesne yönelimli paradigma, verileri ve davranışları nesneler içinde kapsülleyerek, gereksiz ayrıntıları soyutlayarak, kalıtım yoluyla kodu yeniden kullanarak ve polimorfizmi kullanarak, karmaşıklığı yönetmek için kapsamlı bir yaklaşım sunar. Nesne yönelimli paradigmanın kullanılması, yazılım geliştirme sürecini büyük ölçüde geliştirir ve güvenilir ve yönetilebilir yazılım sistemlerinin oluşturulmasına katkıda bulunur.
Programlama sanatı, bilimsel ilkeleri yaratıcılık, problem çözme ve yenilikçilikle birleştirir. Hem teknik beceri hem de sanatsal vizyon gerektiren bir disiplindir. Karmaşıklığı nesne yönelimli bir yaklaşımla yönetmek, programcıların zarif ve verimli çözümler geliştirmesine ve kullanıcı deneyimini iyileştirmesine izin vererek, programlamada çok önemlidir.
Teknoloji ilerledikçe, yazılımlar dijital dünyamızı şekillendirmeye ve gelecekteki yenilikleri yönlendirmeye devam edecek.