Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Richiesta consiglio su linguaggi da studiare

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[11] Re: Richiesta consiglio su linguaggi da studiare

Messaggioda Foto Utentealien75 » 12 set 2011, 9:22

Daniele78, non so' progettare un impianto elettrico e non me ne intendo molto di PLC.
Avevo fatto l' AVL dei PLC Siemens a suo tempo a scuola ma per lavoro ho sempre fatto l'operaio generico in fabbrica, quindi l' unica esperienza che ho accumulato a livello hobbistico
riguarda i microcontrollori PIC programmati in c, poi mi diletto pure di programmazione c sia sotto
win che linux. Dici che la programmazione nel mondo dei PC per un elettronico sia un argomento
fuori del suo campo?
Volevo chiederti un' ultima cosa: alla mia eta' e' ancora possibile essere assunti in una ditta
come principiante o attraverso stage per imparare un mestiere nel mondo dell' elettronica, oppure
sono ormai vecchio per iniziare e quindi e' meglio che continui a fare i cosidetti "lavori umili" ma
non qualificati e che non ti insegnano niente?
P.S. Lavorando in fabbrica mi sono fatto l' idea di perdere il mio tempo.
Avatar utente
Foto Utentealien75
1 1 4 8
Sostenitore
Sostenitore
 
Messaggi: 588
Iscritto il: 31 lug 2011, 14:08

0
voti

[12] Re: Richiesta consiglio su linguaggi da studiare

Messaggioda Foto Utentesimo85 » 12 set 2011, 10:22

alien75 ha scritto:Dici che la programmazione nel mondo dei PC per un elettronico sia un argomento
fuori del suo campo?

Per niente! Qualsiasi cosa che tu impari ti può servire in molti campi. Il fatto di programmare con esempi di applicazioni GUI per l'uso "home" non vuol dire affatto che quello che tu stia facendo si limita a quello scopo. Quando studi C etc. e fai pratica su quel linguaggio (anche se poi si tratta di programmazione di sistema), l'importante è prenderne dimestichezza e familiarizzare con gli algoritmi. Nessuno ti chiede di essere un Donald Knuth, ma solo di provarci :-) . Al momento interfacciare un terminale seriale con il dispositivo, te ne rendi conto.
Tieni anche a mente che la memoria che hai a disposizione su un micro non è la stessa del tuo HD, quindi devi mettere in pratica quello che avrai imparato sul libro, per farla breve, usare molto i puntatori e la loro aritmetica, e questo si impara su qualsiasi libro di C.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[13] Re: Richiesta consiglio su linguaggi da studiare

Messaggioda Foto Utentealien75 » 12 set 2011, 12:00

Conosco il c in ambiente microc per i PIC ed uso c pure per scrivere programmi con le interfacce
grafiche mi diletto pure con le socket, anche se, per il momento con le socket, ho solo fatto un semplice port scanner, al momento sto facendo una rubrica telefonica con interfaccia testuale sotto win, ed in futuro una volta risolti i bug ti tale rubrica usero' quanto imparato per fare un
client IRC ed uno FTP.
Vorrei come ultima analisi un parere per quanto riguarda il prolog: nessuno mi puo' dire se serve
sapere pure questo ad un elettreonico (nessuno mi sa dire qualche cosa su questo misterioso ed affascinante linguaggio)?
Per il momento vorrei inviarvi in allegato il sorgente della rubrica.
Tutta la parte che permette l' esecuzione dei comandi ed il salvataggio delle voci in un array
di strutture interne funziona tranne il comando nuova "iniziale_voce" per via del suo if() che non
viene eseguito a causa di un puntatore alla prima lettera del buffer dell' iniziale inserito da riga.
La parte piu' rognosa che mi sta dando filo da torcere e' tutta la parte che fa uso di fseek() per
spostare il segnaposto nel file di salvataggio voci (e' la prima volta che uso fseek(), open(), close() write() read() su file etc quindi non ho molta esperienza e mi baso solo sulla teoria del libro).
Nessuno puo' dare un' occhiata alla funzione nuova() e carica() nella quale risiedono i problemi
menzionati?
Avatar utente
Foto Utentealien75
1 1 4 8
Sostenitore
Sostenitore
 
Messaggi: 588
Iscritto il: 31 lug 2011, 14:08

0
voti

[14] Re: Richiesta consiglio su linguaggi da studiare

Messaggioda Foto Utentesimo85 » 12 set 2011, 12:26

Per il Prolog non ti so dire, non l'ho mai usato :(
Per l'errore di programmazione, dirti "postalo" per poi non essere sicuro di aiutarti perché il tempo (almeno da parte mia) è quello che è, ti direi di usare il debugger, stabilire i breakpoint ed analizzare registri e valori. Solo così puoi capire.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[15] Re: Richiesta consiglio su linguaggi da studiare

Messaggioda Foto Utentealien75 » 12 set 2011, 18:40

Ecco il sorgente della mia rubrica:

Codice: Seleziona tutto
#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<ctype.h>

#include<errno.h>

#include <windows.h>*/

/*numero massmo di voci inseribili nella rubrica*/

#define MAXVOCI 4000

#define INIZIALI 4

/*numero massimo caratteri dei comandi*/

#define MAX 200

/*numero di iniziali di ricerca del comando 'lista '*/

#define N_INIZIALI 4

/*procedure di implementazione comandi*/

int modifica(char *posizione);

int cancella(char *posizione);

void nuovo(void);

void help(void);

void visualizza(void);

void vis_tutta_rubrica(void);

int ordina(void);

void stampa(int max_voci, struct rubrica *indirizzo);

void print(struct rubrica *indirizzo);

/*procedure di caricamento e salvataggio voci in file su disco*/

void carica(void);

void nuova_voce(void);

int salva_nuova(int voci, long voce);

void salva_cancella(struct rubrica *indirizzo, long posizione);

void salva_modifica(struct rubrica *indirizzo, long posizione);

int inserisci(void);

/*variabili globali*/

char temp2[23]="\\Rubrica.txt";

char temp3[400];

char nome_file[500];

char modoa[3]="a+";

char modow[3]="w+";

char modor[2]="r";

char ch, buffer[MAX+1], buffer1[201], Nome[200];

/*buffer per testare il tipo di lettera delle iniziali*/

char *lettera="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

int x, stampa1=0, ord;

long offset=0, n_voce=0;

FILE *fp;

/*definizione struttura di memorizzazione nomi e numeri della rubrica*/

struct rubrica

   {

      char nome[200];

      char telefono[40];

   };

/*dichiarazione numero massimo voci della rubrica*/

struct rubrica vocerub[MAXVOCI];

/*dichiarazione numero massimo di voci su rubrica_stampa*/

struct rubrica vocestampa[MAXVOCI];

/*dichiarazione numero massimo di voci su rubrica_stampa*/

struct rubrica vocestampa1[MAXVOCI];

/*dichiarazione buffer per salvataggio momentaneo nome[]*/

struct rubrica vocex;

int main()

{

/*presentazione rubrica*/

    printf("\n============================RUBRICA TELEFONICA=================================");

    printf("\n\nDigitare 'help' per avere la lista dei comandi\n\n");

    GetCurrentDirectory(200, temp3);

    strcat(nome_file,temp3);

    strcat(nome_file,temp2);

    carica();

    printf("\nn_voce=%ld",n_voce);

    while(1)

    {

/*inserimento buffer del comando*/

        x=0;

        printf("\n\n\n>");

        while((ch=getchar())!='\n' && x<MAX) {buffer[x++]=ch;}

        buffer[x]='\n';

/*copia buffer[] in buffer1[] per poi testare buffer1[] in modo da non alterare il contenuto di buffer[]*/

        strcpy(buffer1,buffer);

/*scorri lungo il comando contenuto in buffer1[] finche trovi lo spazio*/

        x=0;

        do

        {

            x++;

        }while(isgraph(buffer1[x])!=0);

        buffer1[x+1]='\0';  /*aggiungi all'elemento sucessivo allo spazio il terminatore \0*/

/*testa il tipo di comando inserito*/

        if(strcmp(buffer1,"lista ")==0)    //confronta il comando contenuto in buffer1 (il comando dato da tastiera)

        {                                  //con "lista "

            if(isgraph(*buffer+(x+1)))      visualizza();  //e se corrispondono e se dopo lo spazio c'e' uan lettera

                                                           //vai a visualizza() che consente di stampare le voci

                                                           //con le iniziali indicate dalla lettera dopo il comando

            if(buffer[x+1]==0)         printf("\nComando errato\n");

            continue;

        }

        if(strcmp(buffer1,"lista\n")==0)

        {

            x=0;

            do

            {

                x++;

            }while(buffer1[x]!=0);

            vis_tutta_rubrica();

            continue;

        }

        if(strcmp(buffer1,"modifica ")==0)

        {

            switch(modifica(buffer+(x+1)))

         {

         case 1:

            printf("\nVoce inesistente\n");

            break;

         case 2:

            printf("\nVoce modificata\n");

            break;

         case 0:

            printf("\nVoce inalterata\n");

            break;

         }

            if(buffer[x+1]==0)         printf("\nComando errato\n");

            continue;

        }

        if(strcmp(buffer1,"cancella ")==0)

        {

            switch(cancella(buffer+(x+1)))

            {

         case 0:

            printf("\nVoci cancellate\n");

            break;

         case 1:

            printf("\nVoce inesistente\n");

            break;

         case 2:

            printf("\nVoce cancellata\n");

            break;

            }

            if(buffer[x+1]=='\0')         printf("\nComando errato\n");

            continue;

        }

        if(strcmp(buffer1,"nuova\n")==0)

        {

            nuovo();

            continue;

        }

        if(strcmp(buffer1,"help\n")==0)

        {

            help();

            continue;

        }

        if(strcmp(buffer1,"esci\n")==0)     break;

        if(strcmp(buffer1,"\0")==0)        continue;

        printf("\nComando errato\n");

    }

    return 0;

}





/*procedura per modificare i nomi ed i numeri della rubrica*/

int modifica(char *posizione)

{

    int ritorno=0;

    char p_nome[200];

    char p_telefono[40];

    long voce;

    for(voce=1;voce<n_voce+1;voce++)

    {

        if(!(strcmp(posizione,vocerub[voce].nome)))

        {

            printf("\n\nInserire nuovo nome e cognome:");

            gets(p_nome);

            strcpy(vocex.nome,vocerub[voce].nome);

            strcpy(vocex.telefono,vocerub[voce].telefono);

            if(isgraph(p_nome[0]))

            {

                strcpy(vocerub[voce].nome,p_nome);

                ritorno=2;

            }

            printf("Inserire nuovo numero di telefono:");

            gets(p_telefono);

            if(isgraph(p_telefono[0]))

            {

                strcpy(vocerub[voce].telefono,p_telefono);

                ritorno=2;

            }

          printf("\n");

            salva_modifica(&vocex,voce);

            return ritorno;

        }

    }

    return 1;

}





/*procedura per cancellare un numero dalla rubrica*/

int cancella(char *posizione)

{

    char stringa[80]="rubrica";

    //cancella la voce indicata dal puntatore a vocerub[] 'posizione'

   if(!(strcmp(posizione,stringa)))

    {

        for(long voce=0;voce<n_voce+1;voce++)

        {

            //cancella le prime 4 lettere del nome contenuto in vocerub[]

            for(int pos=0;pos<4;pos++)

                        vocerub[voce].nome[pos]='0';

            salva_cancella(vocerub+voce,voce);

        }

      n_voce=0;

      return 0;

    }

   else

    {

        for(long voce=0;voce<n_voce+1;voce++)

        {

            if(vocerub[voce].nome[0]==0)      continue;

            strncpy(vocex.nome,vocerub[voce].nome,200);

            if(!(strncmp(posizione,vocerub[voce].nome,200)))

            {

                for(int pos=0;pos<4;pos++)

                        vocerub[voce].nome[pos]='0';

                salva_cancella(&vocex,voce);

                return 2;

            }

        }

    }

    return 1;

}





//procedura per inserire un nuovo numero

void nuovo(void)

{

    int x=0, y, risultato;

    long voce=0;

    do{

        y=0;

        while(voce<n_voce)

        {

            //se trovi un buco vuoto nella struttura dati inserisci una nuova voce

            if(vocerub[voce].nome[0]==0)

            {

                if(n_voce==0)      n_voce++;

             nuova_voce();

            fp=fopen(nome_file,"a+");  //usare modalita 'a+' per salvataggio voci nuove

            if(fp==NULL)

                {

                    printf("\nErrore nell' apertura del file salvataggio rubrica\n");

                    fclose(fp);

                    return;

                }

            risultato=salva_nuova(0,voce);

            if(risultato==2)

            {

                    printf("\nErrore nell'apertura del file di salvataggio della rubrica: voce non salvata\n");

                    return;

            }

                else break;

                y=1;

            }

            voce++;     //aggiorna numero di voci scansionate

        }

        //se non c'e' nessuna voce cancellata nella struttura

        //metti la voce alla  fine di vocerub[]

        //if(y==0){          //inserisci una nuova voce in questo punto solo se prima non

            nuova_voce();  //e' mai stato trovato un buco vuoto nel file e nella strutttura

            salva_nuova(n_voce,0);

            n_voce++;

        //}

         if(n_voce>=MAXVOCI)

        {

            printf("\nImpossibile inserire una nuova voce: rubrica piena\n");

            return;

        }

        fp=fopen(nome_file,"a+");      //usare modalita 'a+' per salvataggio voci nuove

        if(fp==NULL)

        {

            printf("\nErrore nell' apertura del file salvataggio rubrica\n");

            return;

        }

        if(salva_nuova(n_voce,0)==2)

        {

            printf("\nErrore nell'apertura del file di salvataggio della rubrica\n");

            return;

        }

        x=inserisci();    //se e' stato inserito 1 allora ripeti ciclo inserimento senno esci

    }while(x==1);

}





//procedura per visualizzare i comandi

void help(void)

{

    printf("\n\n'lista'   comando per dare la lista completa della rubrica");

    printf("\n\n'lista abc..etc'      aggiungendo la prima, la seconda o la terza ini");

    printf("\n            ziale si puo' specificare quale parte della rub ");

    printf("            rica si vuole visualizzare");

    printf("\n\n'modifica nome da modificare'   comando per modificare il nome");

    printf("                     o il numero di una voce della rubrica.");

    printf("\n\n'cancella nome da cancellare'   comando per cancellare una voce");

    printf("\n\n'nuova'            comando per inserire una nuova voce");

    printf("\n\n'esci'            comando per uscire dal programma\n\n");

}



//procedura per la visualizzazione dell'elenco in base alle iniziali dei nomi cercati

void visualizza(void)

{

    if(ordina()==0)   //chiama procedura di ordinamento in ordine

    {                 //dalla prima alla quarta voce

        printf("\nNessuna voce trovata con questa iniziale\n");

        return;

    }

    stampa(-1,vocestampa1);   //se il primo parametro e' uguale a -1 stampa solo le voci con le iniziali indicate dopo il comando 'lista'

    return;

}





//procedura per salvare le voci cercate nell' ordine di ricerca richiesto, dentro il buffer di stampa

int ordina(void)

{

//cicli di trasferimento da struttura vocerub[] a struttura di vocestampa[]

    int posto=-1, voce=0, x=1, y, z, pos=0, stp=0 ;

    while(x!=5)

    {

        switch(x){

        case 1:

        {

            for(y=0;y<27;y++)        //cambia prima iniziale da testare

            {

                while(voce!=n_voce)   //gira finche la lista di vocerub finisce

                {

                    if(vocerub[voce].nome[0]==lettera[y] || vocerub[voce].nome[0]==lettera[y+26])   //copia solo le voci con la prima iniziale indicata

                    {

                        strcpy(vocestampa[stp].nome,vocerub[voce].nome);

                        strcpy(vocestampa[stp].telefono,vocerub[voce].telefono);

                        stp++;

                    }

                    voce++;

                }

                voce=0;

            }

            stp=0;

            break;

        }

        case 2:

        {

            for(y=0;y<27;y++)      //cambia prima iniziale da testare

            {

                for(z=0;z<27;z++)       //cambia seconda iniziale da testare

                {

                    while(voce!=n_voce)   //gira finche la lista di vocerub finisce

                    {

                        if(vocestampa[voce].nome[0]==lettera[y] || vocestampa[voce].nome[0]==lettera[y+26])  //copia solo le voci con la prima iniziale indicata

                        {

                            if(vocestampa[voce].nome[1]==lettera[z] || vocestampa[stp].nome[1]==lettera[z+26]) //copia solo le voci con la seconda iniziale

                            {                                                                               //maiuscola e minuscola indicata

                                strcpy(vocestampa1[stp].nome,vocestampa[voce].nome);

                                strcpy(vocestampa1[stp].telefono,vocestampa[voce].telefono);

                                stp++;

                            }

                        }

                    voce++;

                    }

                voce=0;

                }

            voce=0;

            }

            stp=0;

            break;

        }

        case 3:

        {

            for(y=0;y<27;y++)        //cambia prima iniziale da testare

            {

                for(z=0;z<27;z++)       //cambia terza iniziale da testare

                {

                    while(voce!=n_voce)   //gira finche la lista di vocerub finisce

                    {

                        if(vocestampa1[voce].nome[0]==lettera[y] || vocestampa1[voce].nome[0]==lettera[y+26])  //copia solo le voci con la prima iniziale indicata

                        {

                            if(vocestampa1[voce].nome[2]==lettera[z] || vocestampa1[voce].nome[2]==lettera[z+26])         //copia solo le voci con la terza iniziale

                            {                                                                                          //maiuscola e minuscola indicata

                                strcpy(vocestampa[stp].nome,vocestampa1[voce].nome);

                                strcpy(vocestampa[stp].telefono,vocestampa1[voce].telefono);

                                stp++;

                            }

                        }

                        voce++;

                    }

                    voce=0;

                }

            voce=0;

            }

            stp=0;

            break;

        }

        case 4:

        {

            for(y=0;y<27;y++)        //cambia prima iniziale da testare

            {

                for(z=0;z<27;z++)       //cambia quarta iniziale da testare

                {

                    while(voce!=n_voce)   //gira finche la lista di vocerub finisce

                    {

                        if(vocestampa[voce].nome[0]==lettera[y] || vocestampa[voce].nome[0]==lettera[y+26])    //copia solo le voci con la prima iniziale indicata

                        {

                            if(vocestampa[voce].nome[3]==lettera[z] || vocestampa[voce].nome[3]==lettera[z+26])     //copia solo le voci con la quarta iniziale indicata

                            {                                                                            //maiuscola e minuscola indicata

                                strcpy(vocestampa1[stp].nome,vocestampa[voce].nome);

                                strcpy(vocestampa1[stp].telefono,vocestampa[voce].telefono);

                                stp++;

                            }

                        }

                        voce++;

                    }

                    voce=0;

                }

                voce=0;

            }

            stp=0;

            break;

        }

        }

        x++;

    }

    return n_voce;

}





//procedura per stampare le voci precedentemente salvate dentro al buffer di stampa

void stampa(int max_voci, struct rubrica *indirizzo)

{

    int riga=0, y;

    if(max_voci==n_voce)

    {

        while(riga<max_voci)

        {

            if((indirizzo+riga)->nome[0]!='0')

            {

                printf("\n\nNome:%s",(indirizzo+riga)->nome);

                printf("\nTelefono:%s",(indirizzo+(riga))->telefono);

                riga++;

            }

        }

    printf("\n");

    stampa1=0;

    }

    else if(max_voci==-1)

    {

       while(riga!=n_voce+1)

       {

        if((indirizzo+riga)->nome[0]==buffer[x+1])      //testa se c'e' la prima iniziale

        {

            if(*((buffer+(x+1))+1)=='\0'){      //se si, testa se ce ne sono altre

                print((indirizzo+riga));

                riga++;

                continue;

            }

                if((indirizzo+riga)->nome[1]==*((buffer+(x+1))+1))    //testa se c'e' una seconda iniziale

                {

                    if(*((buffer+(x+1))+2)=='\0'){      //se si, testa se ce ne sono altre

                        print((indirizzo+riga));

                        riga++;

                        continue;

                    }

                    if((indirizzo+riga)->nome[2]==*((buffer+(x+1))+2))   //testa se c'e' una terza iniziale

                    {

                        if(*((buffer+(x+1))+3)=='\0'){      //se si, testa se ce ne sono altre

                            print((indirizzo+riga));

                            riga++;

                            continue;

                        }

                        if((indirizzo+riga)->nome[3]==*((buffer+(x+1))+3))   //testa se c'e' una quarta iniziale

                        {

                            if(*((buffer+(x+1))+4)=='\0'){      //se dopo la quarta iniziale non ce ne sono altre stampa la voce

                                print((indirizzo+riga));

                                riga++;

                                continue;

                            }

                        }

                    }

                }

        }

        riga++;

       }

    }

}





//procedura di visualizzazine della rubrica intera

void vis_tutta_rubrica(void)

{

    if(!(ordina()))     //chiama funzione per l' ordinammento alfabetico delle voci

    {                   //dalla prima alla 4^ iniziale

        printf("\nNessuna voce esistente nella rubrica\n");

        return;

    }

    stampa(n_voce,vocestampa1);   //stampa il risultato dell' ordinamento

                                  //il risultato viene messo in vocestampa1[]

}





//procedura di caricamento file nella struttura dati della rubrica

void carica(void)

{

    char nome1[200];

    char telefono1[40];

    char nome;

    long voce=0;

    long val;

    fp=fopen(nome_file,"r");

    if(fp==NULL) {printf("\nFile delle voci inesistente"); return;}

    do{



        fgets(nome1,200,fp);

        fgets(telefono1,40,fp);

        //se il nome della voce caricata in nome1[] non e' una voce cancellata caricalo nella

        //struttura assieme al n. di telefono

        if(nome1[0]!='0')

        {

            strcpy(vocerub[voce].nome,nome1);

            strcpy(vocerub[voce].telefono,telefono1);

            ++voce;

        }

    }while(!feof(fp));   //cicla finche finisce il file e quindi sono state caricate dal file alla struttura tutte le voci esistenti

    //aggiorna la variabile di conteggio delle voci i nrubrica togliendo una voce

    n_voce=--voce;        //ho inserito questa riga perche notavo che la funzione carica() mi inseriva una voce in piu' in realta inesistente

    fclose(fp);

}





//procedura di salvataggio file

int salva_nuova(int voci, long voce)

{

    char type[2];

    long one=0;

    //se non c'e' nessuna voce nella struttura vocerub[] allora posiziona fseek() all'inizio del file

    switch(voci)

    {

    case 0:

        {

            fseek(fp,(voce*sizeof(struct rubrica)),SEEK_SET);

            fputs(vocerub[voce].nome,fp);

            fputs("\n",fp);

            fputs(vocerub[voce].telefono,fp);

            fputs("\n",fp);

            fclose(fp);

            return 0;

        }

    }

    //se ci sono gia' voci in vocerub[]

    if(voci==n_voce)

    {

        long one=n_voce-1;

        //posiziona il segnaposto alla fine del file

        fseek(fp,(one*sizeof(struct rubrica)),SEEK_SET);

        //e scrivi il nome ed il telefono della voce

        fputs(vocerub[n_voce].nome,fp);

        fputs("\n",fp);     //vai a capo

        fputs(vocerub[n_voce].telefono,fp);

        fputs("\n",fp);     //vai a capo

        fclose(fp);

    }

    return 0;

}





//procedura per l'inserimento di nuove voci

void nuova_voce(void)

{

    char digit1[50];

    char digit2[49];

    printf("\n\nInserire nome e cognome:");

    scanf("%s%s", digit1, digit2);

    strncpy(vocerub[n_voce].nome,digit1,50);

    strncat(vocerub[n_voce].nome," ",1);

    strncat(vocerub[n_voce].nome,digit2,49);

    printf("Inserire numero telefonico:");

    scanf("%s",vocerub[n_voce].telefono);

}





//procedura per la cancellazione di una voce dal file Rubrica.txt

void salva_cancella(struct rubrica *indirizzo, long posizione)

{

    int x;

    fp=fopen(nome_file,"a");   //apri il file in scrittura

    //posizionati nel punto del file in cui c'e' la voce da cancellare

    fseek(fp,(posizione*sizeof(struct rubrica)),SEEK_SET);

    fgets(Nome,200,fp);   //carica il nome nella var. Nome

    if(!(strcmp(indirizzo->nome,Nome)))    //copia Nome dentro a all' indirizzo corrispondente

    {                                      //nella struttura vocerub[]

        //cancella le prime 4 iniziali della voce nel file con uno '0'

        for(x=0;x<4;x++)

        {

            indirizzo->nome[x]='0';

            fputs(indirizzo->nome+x,fp);

        }

        fflush(fp);

        fclose(fp);

        return;

    }

    fclose(fp);

}





//procedura di richiesta inserimento nuova voce

int inserisci(void)

{

    int x;

    do{

       printf("\n\nVuoi inserire un' altra voce? (1=si  0=no)");

      scanf("%d",&x);

   }while(x>1 || x<0);

    return x;

}











//procedura per il savataggio modifica nome e telefono

void salva_modifica(struct rubrica *indirizzo, long posizione)

{

    fp=fopen(nome_file,"a");

    fseek(fp,(posizione*sizeof(struct rubrica)),SEEK_SET);

    fgets(Nome,200,fp);

    if(!(strcmp(indirizzo->nome,Nome)))   //se il contenuto del buffer puntato da indirizzo e' uguale a Nome

   {                                     //allora salva la modifica effettuata nella struttura sul disco

      fputs(vocerub[posizione].nome,fp);

      fputs("0\n",fp);

      fputs(vocerub[posizione].telefono,fp);

      fputs("0\n",fp);

       fflush(fp);

       fclose(fp);

       return;

   }

}



//procedura per stampare le voci selezionate

void print(struct rubrica *indirizzo)

{

    printf("\n\nNome:%s",indirizzo->nome);

    printf("Telefono:%s",(indirizzo+1)->telefono);

}



Dimmi che te ne pare.
Poi volevo chiederti com'e' possibile farsi assumere (anche solo in prova) da una ditta nel campo della costruzione macchine industriali per poter imparare a fare i bordi macchina i cablaggi etc...? So' di gente che e' riuscita a trovare lavoro in questi tipi di ditte senza nemmeno avere il diploma di perito elettronico.
Mi puoi dare una panoramica su questo per favore?
Dici che il mercato sia saturo in tale campo oppure no?
Avatar utente
Foto Utentealien75
1 1 4 8
Sostenitore
Sostenitore
 
Messaggi: 588
Iscritto il: 31 lug 2011, 14:08

0
voti

[16] Re: Richiesta consiglio su linguaggi da studiare

Messaggioda Foto UtenteDaniele78 » 18 set 2011, 0:11

alien75 ha scritto:Daniele78, non so' progettare un impianto elettrico e non me ne intendo molto di PLC.
Avevo fatto l' AVL dei PLC Siemens a suo tempo a scuola ma per lavoro ho sempre fatto l'operaio generico in fabbrica, quindi l' unica esperienza che ho accumulato a livello hobbistico
riguarda i microcontrollori PIC programmati in c, poi mi diletto pure di programmazione c sia sotto
win che linux. Dici che la programmazione nel mondo dei PC per un elettronico sia un argomento
fuori del suo campo?
Volevo chiederti un' ultima cosa: alla mia eta' e' ancora possibile essere assunti in una ditta
come principiante o attraverso stage per imparare un mestiere nel mondo dell' elettronica, oppure
sono ormai vecchio per iniziare e quindi e' meglio che continui a fare i cosidetti "lavori umili" ma
non qualificati e che non ti insegnano niente?
P.S. Lavorando in fabbrica mi sono fatto l' idea di perdere il mio tempo.


La programmazione nel mondo del PC per un elettronico non è per niente fuori luogo. Anzi molte aziende oggi sviluppano software. Fare uno stage in azienda è certamente un' esperienza utile. Lo stage ti mette di fronte a dei lavori che non hai mai fatto e quindi sei costretto ad imparare. Inoltre a datore di lavoro potrebbe piacere come lavori ed assumerti.
Lavorare in fabbrica secondo me se si guadagna non è perdere il proprio tempo. Forse non da le giuste soddisfazioni. A me piace parecchio realizzare siti web. Il problema è che c'è tanto lavoro dietro e la gente vuole spendere pochissimo!
Avatar utente
Foto UtenteDaniele78
290 2 9
Expert
Expert
 
Messaggi: 288
Iscritto il: 9 set 2008, 23:07

Precedente

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 116 ospiti