Сэтгэх чадварын олимпиад 2013-хавар

Манай хамт олон

*** IDaalt club| Хамтдаа хүчтэй ***

Сэтгэх чадварын олимпиад 2013-хавар

ШУТИС-н бүх салбар сургуулиудын дунд сэтгэх чадварын олимпиад зохион байгуулсан билээ.

*** IDaalt club| Хамтдаа хүчтэй ***

Wednesday, October 30, 2013

Android development Хичээл #3

Энэ удаагийн андройдийн хичээл бид нар ORMLite Database болон Custom Adapterийн анх жишээг үзсэн билээ.
Жишээгээр Оюутны нэр код харуулдаг app хийсэн билээ.


1.Анх Project-ээ үүсгэсний дараа ORMLite-ийн  2 library-ийг /libs гэсэн folder рүү хуулна.

















2.Өөрийнхөө package дээрээ DatabaseHelper болон Student гэсэн модел классаа үүсгэнэ.
Student.class

package mn.csms.databasetest;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

@DatabaseTable
public class Student {
@DatabaseField(generatedId=true)
public int id;
@DatabaseField(unique=true,canBeNull=false)
public String code;
@DatabaseField
public String name;
}
DatabaseHelper.class
package mn.csms.databasetest;

import java.sql.SQLException;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;

public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
 public static String databaseName = "student.db";
 public static int databaseVersion = 1;
 Dao<Student, Integer> studentDao = null;

 public DatabaseHelper(Context context) {
  super(context, databaseName, null, databaseVersion);
  // TODO Auto-generated constructor stub
 }

 @Override
 public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
  // TODO Auto-generated method stub
  try {
   TableUtils.createTableIfNotExists(connectionSource, Student.class);
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 @Override
 public void onUpgrade(SQLiteDatabase database, ConnectionSource arg1,
   int arg2, int arg3) {
  // TODO Auto-generated method stub
  try {
   TableUtils.createTable(connectionSource, Student.class);
//   onCreate(database);
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 public Dao<Student, Integer> getStudentDao() throws SQLException {
  if (studentDao == null){
   studentDao = getDao(Student.class);}
  return studentDao;
 }

 @Override
 public void close() {
  // TODO Auto-generated method stub
  super.close();
  studentDao = null;
 }

}
Дараа нь activity_main.xml class дээрээ ListView view нэмнэ энгэснээр listview дээ бид нар custom adapter тавина.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <ListView
        android:id="@+id/studentList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
</RelativeLayout>

Тэгээд adapter дээрээ ашиглах шинэ student_list_item.xml гэсэн xml layout үүсгэнэ.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="5dp" >
    <TextView
        android:id="@+id/studentName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="@android:color/black"
        android:textAppearance="?android:attr/textAppearanceSmall" />
    <TextView
        android:id="@+id/studentCode"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textAppearance="?android:attr/textAppearanceSmall" />
    <Button
        android:id="@+id/delete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:layout_weight="1"
        android:text="Delete" />
</LinearLayout>



Үүний дараа MainActivity.class

package mn.csms.databasetest;

import java.sql.SQLException;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
 private DatabaseHelper helper;
 private String[] studentName = { "Jargal", "Uguumur", "Alge", "Tseegii" };
 private String[] studentCode = { "D.SW10D00" };
 private List<Student> students;
 private ListView lv;
 private StudentAdapter adapter;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  lv = (ListView) findViewById(R.id.studentList);
  helper = new DatabaseHelper(this);
  try {
   students = helper.getStudentDao().queryForAll();
  } catch (SQLException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
  //herev database hooson bol shine ugugluudee nemne
  if (students.size()==0) {
   for (int i = 0; i < studentName.length; i++) {
    Student student = new Student();
    student.name = studentName[i];
    student.code = studentCode[0] + i;
    Log.i("student", student.code);
    try {
     //helper class iig ashiglaj nemj bna 
     helper.getStudentDao().create(student);
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }
  try {
   //Database iin buh ugudliig List<Student> turultei avch bna 
   students = helper.getStudentDao().queryForAll();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  Log.i("size", students.size()+"");
  //custom adapter buyu student-d zoriulsan adapter classiig duudaj bna 
  adapter=new StudentAdapter(getApplicationContext(),0, 0, students);
  lv.setAdapter(adapter);
 }
//Custom adapter class
 private class StudentAdapter extends ArrayAdapter<Student> {

  public StudentAdapter(Context context, int resource,int text,
    List<Student> objects) {
   super(context, resource, text,objects);
  }

  @Override
  public View getView(int position, View view, ViewGroup parent) {
   // TODO Auto-generated method stub
   Holder holder = null;
   final Student student = getItem(position);
   if (view == null) {
    //R.layout.student_list_item layoutiig inflate hiij oruulj irj bna 
    LayoutInflater inflater = getLayoutInflater();
    view = inflater.inflate(R.layout.student_list_item, null);
    holder = new Holder();
    holder.name = (TextView) view.findViewById(R.id.studentName);
    holder.code = (TextView) view.findViewById(R.id.studentCode);
    holder.delete = (Button) view.findViewById(R.id.delete);
    view.setTag(holder);
   } else {
    holder = (Holder) view.getTag();
   }
   holder.name.setText(student.name);
   holder.code.setText(student.code);
   holder.delete.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
     // TODO Auto-generated method stub
     //delete buttong darahad 
     
      adapter.remove(student);
      Toast.makeText(getApplicationContext(), student.name+" ugugdul amjilttai ustlaa", Toast.LENGTH_SHORT);

    
     
    }
   });
   return view;
  }
 }
 //studented zoriulsan viewiig class turultei zarlaj uguh heregtei
 class Holder {
  TextView name;
  TextView code;
  Button delete;
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

}


Screenshot:

Заз тэгээд миний хичээл дууслаа source кодийг нь энэ линкээр татаж аваарай :)

Saturday, October 26, 2013

iOS хөгжүүлэлтийн хичээл #3

Өнөөдөрийн сэдвийн дагуу хэрэглэгчийг шийдвэр гаргахад туслах хуудас, сануулгийг хэрхэн ашиглах талаар үзэх байсан ч 202-н проектер эвдэрсэн, самбар дээр бичээд цаг авсан зэргээс болоод actionsheet, alertView үзэх байсан ч alertView ээ үзээд завсарлачлаа. :/

Заза энэ ч яахав гол хичээл дээрээ орье

1. UIAlertView 


setAlertView функц нь alertView (буюу анхааруулагийн хуудас) дуудаж харуулах хуудас, энэ удаагийнх дээр анхааруулах хуудас хэрэглэгчийн нэр, нууц үг оруулдагаар хийсэн болхоор өмнө үзсэн UITextField ашиглав.
[alertView show]; нь анхааруулагийн хуудсаа харуулах функц юм.


Харагдац нь иймэрхүү


2. UIActionSheet

Эхлээд код бичиж байгаа класс-н .h (header file.д ) <UIActionSheetDelegate>
гэж оруулж өгнө.
Дараа нь .m буюу implement class даа дараах кодыг бичиж өгнө


UIActionsheet -н хувьд бол [actionSheet showInView:(UIView)];
гэж орно. self гэдэг нь өөрийн класс-г view гэдэг нь энэ өөрөө viewcontroller учир өөрийн view тэй тэр үндсэн view дээ харуулна.

Харагдац нь иймэрхүү



"Дараагийн хичээлд ирэхдээ энийг болон өмнөх хичээлүүдээ сайн хийгээд яваарай"

За бүүр болохгүй бол энд код татахаар тавьлаа. Бэлэн код тавьсан ч гэсэн битгий залхуураарай залуусаа ;)
FACEBOOK GROUP дээ идэвхитэй байгаарай

Thursday, October 24, 2013

CS204 - hashtable ( week9 )

Лаборатори жишээ

Зөвхөн хичээлд суусан хүүхдүүд нээх нууц үгийг мэдэж байгаа. Хичээлд суугаагүй бол үзэх боломжгүй.

Хичээл бэлдсэн: О.Өгөөмөр

Үзэх линк

Wednesday, October 23, 2013

iOS суралцагчидад macintosh суулгах

Та бүхэндээ iDaalt клубээс явуулж байгаа iOS iphone хөгжүүлэлтийн сургалтанд шаардагдах macintosh үйлдлийн системийг virtual -р /буюу өөрийн үйлдлийн системд давхар ажилуулах горим/ суулгах талаар tutorial оруулав.
  • Эхлээд virtual box буюу өөрийн үйлдлийн системд тодорхой санах ой зай эзлэн суух өөр үйлдлийн систем давхар ажилуулахад зориулсан програм   энд дарж татаж авна уу
  • Бид xCode програм дээр ажиллах учир хамгийн сүүлийн үеийн xcode програм нь xcode 5 macintosh 10.8.5 д сууна. Тийм болхоор update хийх хэрэгтэй. Update.г энд дарж torrent ашиглан татна уу
  • За ингээд суулгасан бол хамгийн хүнд үеээ давсан гэж үзээд appstore ашиглан xcode үнэгүй татаж аваад суулгаарай apple id нэхэх байх шүү
Би энэ удаад virtual аар суулгахыг орууллаа. hard аа хуваагаад windows шиг давхар үйлдлийн систем суулгахыг сайн мэдэхгүй учир юмыг яаж мэдхэв гээд youtube видео орууллаа. 



Нэмж хэлхэд бид програмчлалын ангийн оюутанууд байнга хувьсан өөрчлөгддөг зүйл. Ялангуяа mobile application development -ийн хувьд. Тэгхээр нэг бичигдсэн номноос бүх юмаа сураад дуусчихгүй, манай сургалт хязгаартай тул байнга заах боломжгүй өөрсдөө сайн google дэж сурах хэрэгтэй шүү ;) 
за залуусаа АМЖИЛТ!!! 

Tuesday, October 22, 2013

Магадлалын онол статистик

Магадлал статистик
Магадлал статистик
Бие даалт 3 -н түүвэр тоолох программ

Энэхүү програм нь магадлалын бие даалт 3-г бодоход маш их хэрэг болно. Гурван түүврийг тоолоод шинэ хүснэгтийг байгуулж өгч байгаа.

Та бүхэн Register-г татсанаар B,C түүврийг тоолох боломжтой. Учир нь өмнөх жилүүдэд энэхүү програм нь зарагдаж байсан. харин энэ жил үнэгүй тавихаар шийдлээ.

татах линк

Програм-г: Татах

Register-г Татах

Sunday, October 20, 2013

iOS хөгжүүлэглтийн хичээл #2

За энэ 7 хоногийн хичээлээр бид товчлууртай ажиллаж ямар нэгэн үйлдэл хийдэг аппликэшн хийхээр төлөвлөсөн билээ. Эхний хичээл дээр бид шинэ төсөл үүсгэж helloworld хийсэн .
   Хичээлийн кодыг тайлбарын хамт орууллаа.

зураг 1 Шинэ төсөл үүсгэх. xCode - File - New - New project (Shift + command + N)



Төслөө үүсгээд нэрээ өгцөн болхоор одоо эхлээх харагдах хуудсаа оруулье.
зураг 2т байгаачлан mouse2 дараад New file - Cacoa Touch - Objective C class сонгонo.


эхэлж харагдах view ээ оруулж өгсөнийхөө дараа Appdelegate.m -д зураг 3т байгаачлан кодыг бичнэ. Эхэлж харагдах хуудсаа HomeViewController гэж нэрлэсэн.


HomeViewController.h дээр дараах кодыг бичсэн.



HomeViewController.m дээр дараах кодуудыг бичсэн.



Шилжих хуудсаа DetailViewController гэж нэрлээд зураг 2д байгаа шиг оруулж өгсөн. 


Дээр байгаа зурагт DetailViewController.m -д буцах товчлуур болон функцыг бичив.
- HAPPY CODING GUYS -

Аппликэшн маань иймэрхүү харагдана.

ЭХНИЙ ХУУДАС


ДАРААГИЙН ХУУДАС






Saturday, October 12, 2013

iOS хөгжүүлэлтийн хичээл #1



Өнөөдөрийн хичээлээр бид ухаалаг гар утасны хөгжил, Монгол дахь хэрэглээ зах зээлийн судалгааний талаар товчхон танилцуулсан. iOS хөгжүүлэлтийн орчин үүсгэх xCode дээр ажиллах, жижигхэн жишээ хийж үзсэн билээ. Өнөөдөрийн лекцийг эндээс татаж авна уу? Хичээлийн төлөвлөгөө дараах сэдвээр орно

  • Хэрэглэгчийн дарсан товчинд тулгуурлаж текст, зурагийг сольдог програм байгуулах
  • Хэрэглэгчийн хэд хэдэн стандарт интерфэйс хяналтын талаар танилцуулна. Мөн хэрэглэгчийг шийдвэр гаргахад туслах хуудас, сануулгийг хэрхэн ашиглах зэргийг үзнэ.
  • Аппликэшний orientation -ий талаар, хуудасыг хэрхэн зохион байгуулах талаар үзнэ.Олон харагдацтай аппликэшн хийх талаар үзнэ
  • Хүснэгтийг зохион байгуулах, тухайн өгөгдлөөс хайлт хийх талаар үзнэ. Xүснэгтэнд байгаа мэдээллийг илүү нарийвчилж хархад туслах шаталсан жагсаалт буюу динамик хуудасны зохион байгуулалт
  • Аппликэшний хэрэглэгч удирдаж болхоор тохиргоо хийх. Аппликэшний өгөгдлийн сангийн зохион байгуулалт, нэмэх, хасах, засах, устгах гэх мэт.
  • Зураг зурах хадгалах үйл явц, ухаалаг гар утасны янз бүрийн мэдрэгчүүдийг ашиглах.
  • Core location ашиглаж газрын зураг дээр ажиллах, байршил тогтоох аргачлалыг үзнэ.
  • Камер, зурагийн сантай ажиллах.

   Энэ хичээлд сууж амжаагүй оюутанууд macbook байхгүй бол хялбараар нь virtual machine програм ашиглаад macintosh суулгасан байх шаардлагатай. Мөн iBoot ашиглан hackintosh суулгаж болох боловч миний зүгээс ингэж суулгаад зарим driverуудаа танихгүй байх хүндрэлүүд гарч байсан болхоор эхний сонголтыг санал болгож байна :D.
//Энэ талаар энэ амралтын өдөртөө багтаад хичээл оруулах болхоор манай facebook page болон манай блогоор байнга орж байгаарай ;)

Хэрвээ macintosh суулгасан тохиолдолд xcode програм суулгахад тийм ч хүндрэлтэй биш бөгөөд apple id нээгээд appstore.с татаж аваад суулгахад болно. Манай хичээлийг үзэж байгаа оюутанууддаа амжилт хүсье! ;)

Wednesday, October 9, 2013

Android & iOS хичээлийн тухай

Та бүхэн манай шинээр нэмэгдэж байгаа ухаалаг гар утас хөгжүүлэгчийн сургалтын талаар санал сэтгэгдэлээ энд бичээрэй ;)