String dalam bahasa C.
June 1, 2008
================================================================*
#include<stdio.h>
#include<string.h>
main(){
char nama[20];
nama[0]=’B';
nama[1]=’u';
nama[2]=’d';
nama[3]=’i';
nama[4]=’m'; //jika di ganti menjadi nama[4]=’//isinya backslash 0 atau ‘ output-nya jadi Budi
//karena elemen empat menjadi null
nama[5]=’a';
nama[6]=’n';
nama[7]=”; //isinya backslash 0 atau
printf(“%s\n”,nama); //output Budiman
}
================================================================*
#include<string.h>
#include<stdio.h>
char a[5]=”Budi”;
char b[5]=”Adi”;
main(){
printf(“%s\n”,a);
strncpy(a,”Aa”,2);
printf(“%s\n”,a); //output Aadi karena tidak menyertakan null karakter
strncpy(a,”Adi”,4);
/*Dalam pascal a:=’Adi’*/
printf(“%s\n”,a); //output Adi -> menyertakan null karakter
strncpy(a,”Budiman”,8);
printf(“%s\n”,a);
strncpy(b,”Adi”,4); //terjadi Memory Corruption atau Array overrun/overflow
printf(“%s\n”,a);
}
================================================================*
#include<string.h>
#include<stdio.h>
void main() {
char nama[11];
printf(“Silahkan ketikan nama anda : “);
fgets(nama,11, stdin); //bisa di tampilkan dengan menyertakan spasi
/* Kelemahan fgets, jika karakter yang di input kurang dari batas yang
ditentukan, maka string akan diakhiri dengan NEWLINE-CHARACTER dan
NULL-CHARACTER (“\n”)
*/
fflush(stdin); //utk mengecek maximum 11 klo, lebih di abaikan
printf(“Selamat Sore, %s.\n”,nama);
printf(“%s mempunyai 2 email pagi ini.”,nama);
}
================================================================*
#include<stdio.h>
#include<string.h>
void main(){
char namaLengkap[256]=”";
char *namaDepan=”Kyai”;
char *namaTengah=”Ahmad”;
char *namaBelakang=”Dahlan”;
strcat(namaLengkap,namaDepan);
printf(“%s\n”,namaLengkap);
/*output: Kyai*/
strcat(namaLengkap,” “);
strcat(namaLengkap,namaTengah);
printf(“%s\n”,namaLengkap);
/*output: Kyai Ahmad*/
strcat(namaLengkap,” “);
printf(“%s\n”, strcat(namaLengkap,namaBelakang));
/*output: Kyai Ahmad Dahlan*/
}
================================================================*
/* Contoh mencari string di dalam string dengan STRSTR */
#include<stdio.h>
#include<string.h>
void main(){
char namaLengkap[]=”KyaiAhmadDahlan”;
char namaDicari[]=”";
if (strstr(namaLengkap,namaDicari)){
printf(“%s terdapat dalam %s”,namaDicari,namaLengkap);
} else {
printf(“%s tidak terdapat dalam %s”, namaDicari, namaLengkap);
}
}
================================================================*
Pointer dalam bahasa C.
May 11, 2008
===============================================================
*Dalam bahasa C, Pointer bisa berfungsi sebagai variabel array
misal pa = &c[0]
berarti pointer pa menunjuk elemen array ke-0 dalam variabel C
Kalau mendeklarasikan pointer kedalam array, tidak boleh menggunakan tanda bintang
jadi : pa = &c[1];
TUJUAN PENGGUNAAN POINTER DALAM BAHASA C :
1. Mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya nilai
variabel bisa diubah di dalam fungsi
int nama fungsi (int *b) {
*b = *b + 1;
}
main () {
int x=1;
nama_fungsi (&x);
printf (“%d”, x); // output :2, karena x diubah di dalam fungsi menjadi x=x+1;
}
DALAM BAHASA PASCAL :
Procedure nama_proc (var b:integer);
begin
B=b+1;
end;
var x;
begin
x=1;
nama_proc (x);
writeln (x); // output : 2
end.
2. Untuk membuat variabel DINAMIS (Bukan variabel Statis)
Contoh variabel STATIS dalam bahasa C :
#include <stdio.h>
main () {
int a[2], i;
for (1=0; i<2; i++) {
scanf (“%d”, &a[i]);
}
printf (“Anda mengetikkan :”);
for )i=0; i<2; i++) {
printf (“\n%d”, a[i]);
}
}
Contoh variabel DINAMIN dalam bahasa C :
Program dibuat lebih fleksibel, artinya… apabila kita belum mengetahui berapa banyak jumlah data yg akan diinput oleh operator, maka kita akan membuat program sedemikian rupa sehingga program menjadi fleksibel terhadap data yg akan diinput oleh operator.
Pointer Sebagai Variable dinamis.
May 11, 2008
1.============================================================*
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <alloc.h> /* dibutuhkan untuk fungsi alokasi memori */
void main(){
int num, index, *p;
randomize();
do {
printf(“Berapakah jumlah data yang akan dimasukkan ? “);
scanf(“%d”,&num);
if (num==0) break;
/*****
Mengalokasikan array secara dinamis
sebanyak #num# elemen
*****/
p = (int *) malloc (sizeof(int) * num);
for (index=0; index<num; index++){
/*****
Mengisi alamat memori yang ditunjuk ptemp
dengan bilangan acak
*****/
p[index] = random(1000)+1;
}
for (index=0; index<num; index++){
printf(“Nilai ke-%d: %d\n”, index+1, p[index]);
}
//printf(“Sisa memori heap sesudah alokasi array: %u”,
//coreleft());
/*****
Membebaskan kembali memori yang
sudah dialokasikan
*****/
free(p);
printf(“\n”);
} while (num>0);
}
2.============================================================*
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <alloc.h> /* dibutuhkan untuk fungsi alokasi memori */
void main(){
int *p;
float *q;
p = (int *) malloc (sizeof(int) *2); //array dinamis 2 elemen
p[0]= 200;
p[1]=500;
printf(“%d %d”, p[0], p[1]);
free(p);
p = (int *) malloc (sizeof(int) *20);
p[19]= 10000;
printf(“\n%d”, p[19]);
free(p);
q = (float *) malloc (sizeof(float) *2);
q[0]= 100.25;
q[0]= 200.75;
printf(“\n%.2f %.2f”, q[0], q[1]);
free(q);
}
==============================================================*
Kegunaan Pointer
May 11, 2008
#include <stdio.h>
main() {
int a, b;
int *pa, *pb;
pa= &a; // pa diisi dengan alamat variabel a
pb= &b; // pa diisi dengn alamat variabel b
a= 10;
//b= 2000;
printf(“%d\n”, *pa); //menampilkan isi dari alamt yg ditunjuk oleh pa
printf(“%d\n”, *pb); //menampilkan isi dari alamt yg ditunjuk oleh pb
pa= pb;
printf(“%d\n”, *pa); // output: 2000
*pa = 500; // mengisi alamat yg ditunjuk pb dengan 500
// dengan kata lin, mengisi b dengan 500
// karena pb menunjuk alamat dari b
printf(“%d\n”, a); //output: 10
printf(“%d\n”, b); // output: 1, karena pa juga menunjuk alamat dari b
b= 250;
printf(“%d\n”, *pa); //output: 250
pb= &a;
printf(“%d\n”, *pb); //output: 10
printf(“\n\n\n”);
int c[4]= {10,20,30,40};
printf(“%d\n”, c[1]);
pa = &c[0];
printf(“%d\n”, *pa);
printf(“%d\n”, pa[1]);
pa= &c[2];
printf(“%d\n”, pa[1]);
pa= &c[1];
printf(“%d\n”, pa[1]);
pb =c; // c adalah pointer yng menunjuk &c[0]
printf(“%d\n”, *pb);
printf(“%d\n”, pb[1]);
// variabel array yg dideklarasikan berfungsi sama
// persis dengan pointer, bedanya c tidak bis diisi dengan alamat yang lain
// c= &ca ->> error
printf(“\n\n\n”);
printf(“%d\n”, *(c+1));
printf(“%d\n”, *(pb+2)); //output: pb[2] -> 30
pa = &c[2];
printf(“%d\n”, *(pa-2)); //output: 10
printf(“%d\n”, *(–pa)); //output: 20
printf(“%d\n”, *(–pa)); //output: 30
/************************************************************************************************
=>Tujuan penggunaan pointer dalam Bahasa C:
1. Mengirimkan “parameter yang berupa variabel” ke dalam fungsi, artinya nilai variabel
bisa diubah di dalam fungsi
int nama_fungsi (int *b){
*b = *b + 1;
}
main() {
int x=1;
nama_fungsi(&x);
printf(“%d”, x); //output: 2, karena x di ubah di dalam fungsi menjadi x= x+1
2. Untuk membuat variabel DINAMIS (Bukan variabel Statis)
***********************************************************************************************/
}
Operasi File Teks
May 5, 2008
Algoritma Pemrograman II
====================================================*
Langkah membuat file baru dan merekam data dalam file:
1.) Assign >> pada saat assign file nilai.dat belum di tulis di dalam disk
2.) Rewrite (buat file baru)
3.) Write >> merekam data
4.) Close
Lankah membaca file yang yang telah di rekam di dalam disk:
1.) Assign
2.) Reset
3.) Read
4.) Write
5.) Close
reset >> buka file baru yang sudah pernah di buat.
pindah ke record tertentu >> seek (g, nomor record)
Operasi file Teks
Sequential Acces File:
Begitu dibuk dengan “reset” maka tidak bisa di tulis
Sequential Acces File:
Merekam teks baru (file baru)
*Rewrite
Menambah teks
*Append
Membaca teks
*Reset
Penanganan kesalahan (error handling):
{$i-}
Program reminder:
1. Merekam tugas/appoinment
- tanggal, bulan, tahun
-
2. Memeriksa tanggal untuk dibandingkan dengan semua tugas/appoinment
3.
Record / Struct
POINTER
Pointer -> sebuah tipe variabel yang berisi alamat memori komputer yang menyimpan nilai bertipe tertentu
Pointer bertipe integer -> pointer yang menunjuk alamat memori yang berisi nilai bertipe integer
Pointer bertipe float -> pointer yang menunjuk alamat memori yang berisi nilai bertipe float
Variabel bukan pointer:
int a= 100;
float b= 10.5;
Variabel pointer
int *pointer_a; /* pointer_a adalah variabel pointer yang menunjuk alamat nilai bertipe integer */
float *x; /* x adalah variabel pointer yang menunjuk alamat nilai bertipe float */
x = &b; /* mengisi x dengan alamat dari variabel b */
pointer_a = &a; /* mengisi pointer_a dengan
1. Variabel Statis
Tidak perlu pointer -> int a, float b, char x, int a[10], char m[12]
2. Variabel Dinamis
Perlu Pointer
=============================================================*
#include<stdio.h>
main() {
int a;
float b;
int *pointer_a;
float *x;
a=10; b=20.5;
pointer_a= &a;
x = &b;
printf(“%d\n”, *pointer_a); /* output 10, nilai yg terdapat di dalam memori
yg di tunjuk oleh pointer_a */
printf(“%f\n”, *x); /* output 20.5, nilai yg terdapat di dalam memori
yang di tunjuk oleh pointer_x */
printf(“%f\n”, *pointer_a + *x); /* output 30.5 */
printf(“%f\n”, a+b); /* output 30.5 */
}
=============================================================*
uses wincrt;
type TMhs=record
NIM:string;
nama:string;
IPK:real;
end;
var
f:file of TMhs;
mahasiswa:TMhs;
begin
assign(f, ‘mhs.dat’);rewrite(f);
mahasiswa.NIM:=’123′; mahasiswa.nama:=’Adi’; mahasiswa.IPK:=3.5;
write(f,mahasiswa);
mahasiswa.NIM:=’234′; mahasiswa.nama:=’Budi’; mahasiswa.IPK:=2.75;
write(f,mahasiswa);
close (f);
reset(f);
seek(f,1);
read(f,mahasiswa);
writeln(mahasiswa.NIM);
writeln(mahasiswa.nama);
writeln(mahasiswa.IPK:4:2);
close(f);
end.
==================================================================*
