Mudanças entre as edições de "PRG29002 - Programação I - Eng.Telecom 2017-1"
Linha 541: | Linha 541: | ||
Uma alternativa a terminação do programa chegando ao fim da função main é a função exit da biblioteca <stdlib.h>. Para esta função deve-se passar um argumento inteiro que tem o mesmo significado do código de retorno da função main, portanto exit(0) representa uma terminação normal, alternativamente exit(EXIT_SUCCESS). Para representar uma terminação anormal pode-se utilizar exit(EXIT_FAILURE) ou exit(1). | Uma alternativa a terminação do programa chegando ao fim da função main é a função exit da biblioteca <stdlib.h>. Para esta função deve-se passar um argumento inteiro que tem o mesmo significado do código de retorno da função main, portanto exit(0) representa uma terminação normal, alternativamente exit(EXIT_SUCCESS). Para representar uma terminação anormal pode-se utilizar exit(EXIT_FAILURE) ou exit(1). | ||
Há outros códigos de erro (ver [http://tldp.org/LDP/abs/html/exitcodes.html aqui) porém são pouco usuais, no geral o que se pretende é saber apenas se a operação do programa terminou de forma bem sucedida ou não. | Há outros códigos de erro (ver [http://tldp.org/LDP/abs/html/exitcodes.html aqui) porém são pouco usuais, no geral o que se pretende é saber apenas se a operação do programa terminou de forma bem sucedida ou não. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | |||
+ | === Vetores e matrizes em C === | ||
+ | {{collapse top|Vetores e matrizes em C}} | ||
+ | *Matrizes de qualquer dimensão são caracterizadas por terem todos os elementos pertencentes ao mesmo tipo de dado; | ||
+ | *Vetores são matrizes unidimensionais; | ||
+ | *O indexador começa sempre em zero; | ||
+ | *É importante observar que o C não controla se o programador está ou não acessando uma posição de memória válida da estrutura, cabe ao programador criar proteções; | ||
+ | *Declaração: <syntaxhighlight lang=c> | ||
+ | tipo_da_variável nome_do_vetor [tamanho]; | ||
+ | tipo_da_variável nome_da_matriz [linhas][colunas]; </syntaxhighlight> | ||
+ | *Strings são vetores de chars; | ||
+ | *Têm o seu último elemento como um '\0' | ||
+ | Declaração: <syntaxhighlight lang=c> | ||
+ | char nome_da_string [tamanho]; </syntaxhighlight> | ||
+ | *Inicialização: <syntaxhighlight lang=c> | ||
+ | float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 }; | ||
+ | int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; | ||
+ | char str [10] = { 'J', 'o', 'a', 'o', '\0' }; | ||
+ | char str [10] = "Joao"; | ||
+ | char str_vect [3][10] = { "Joao", "Maria", "Jose" }; | ||
+ | </syntaxhighlight> | ||
+ | *Inicialização sem especificação de tamanho <syntaxhighlight lang=c> | ||
+ | char mess [] = "Linguagem C: flexibilidade e poder."; | ||
+ | int matrx [][2] = { 1,2,2,4,3,6,4,8,5,10 };</syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Execícios de vetores em C}} | ||
+ | *Exercícios | ||
+ | *#Implementar um programa em C para ler 10 números reais (float) para um vetor. Usar o comando ''while''. | ||
+ | *#Modificar o exercício para computar a média dos 10 números que estão no vetor. | ||
+ | *#Modificar o exercício anterior para computar a quantidade de números do vetor que estão acima da média. | ||
+ | *#Refazer os exercícios anteriores usando o comando for; | ||
+ | *#Teste o exemplo dado na apostila da UFMG página 46 e execute a AUTO AVALIAÇÂO sugerida na página seguinte. | ||
+ | *#Considere um vetor global de ''floats'' chamado ''vetRnd'' de tamanho 100. Construa uma função que inicia este vetor com 100 números randômicos entre 1 e 6. Imprima em tela os valores. | ||
+ | *#Implementar uma função que recebe dois vetores de inteiros como parâmetro e o tamanho dos mesmos (suponha vetores de mesmo tamanho). A função deve retornar o número de elementos iguais comparados posição por posição. O esqueleto da função deve ser como: <syntaxhighlight lang=c> | ||
+ | int compara_vetores(int ve1[],int vet2[], int tamanho) | ||
+ | { | ||
+ | int num_elementos; | ||
+ | |||
+ | return num_elementos; | ||
+ | } | ||
+ | </syntaxhighlight>Exemplo: Para os vetores x[]={1,1,3,4,5} e y[]={1,2,3,3,5} temos três elementos iguais (nas posições 0, 2 e 4). | ||
+ | *#Implemente um algoritmo em C que conta a ocorrência de cada letra (incluindo números de 0 a 9) dada uma frase. Deve ignorar se a letra foi digitada em maiúscula ou minúscula (portando somar junto). Limite 100 caracteres. | ||
+ | *#Implemente um algoritmo em C que calcula a média de notas de alunos. Para isso deve solicitar a quantidade de alunos, em seguida obter o nome de cada aluno e depois recebe 5 notas por aluno (num único scanf). Usar uma matriz de float de duas dimensões global. Deve então calcular as médias e apresentar: Nomes dos alunos que ficaram em recuperação (média <6), Nome do aluno que tirou a maior média, Obs.: Criar a função calculaMedia(). | ||
+ | *#Utilize a função rand() e gerador de semente srand() para gerar 6 números aleatórios distintos que variam de 1 a 60 e imprima esta sequencia em tela | ||
+ | |||
+ | *Exercícios de strings | ||
+ | *#Implemente um programa em C que solicita ao usuário digitar duas palavras, o programa analisa estas palavras e diz se são ou não anagramas (palavra formada pela alteração da ordem ou transposição de letras) ex.: “America” e “Iracema”, “Roma” e “Amor”, “Semolina” e “Is no meal” são anagramas) | ||
+ | *#Implemente um algoritmo que dada uma frase, apresente 3 opções: tornar todas as letras em maiúsculas, tornar todas em minúsculas ou a primeira letra de cada palavra em maiúscula e demais minúsculas (limite 100 caracteres). Faça estas operações através de cálculos utilizando como base a tabela ASCII, utilize funções distintas (tudoMaiusculo(), tudoMinusculo(), primeiraMaiuscula()), utilizando o vetor de caracteres como uma variável global. | ||
+ | {{collapse bottom}} | ||
+ | {{collapse top | Gerando números pseudo-aleatórios}} | ||
+ | *Pergunta: é possivel que um computador binario utilizando apenas recursos computacionais seja puramente aleatorio? | ||
+ | |||
+ | *Existem artifícios de se criar números que variam conforme determinadas condições como sequencias variáveis associadas a data e hora atual por exemplo, a isso chamamos de números pseudo aleatórios. Para conseguir este recurso em C podemos utilizar a função rand() da stblib associada a função srand que configura uma semente de aleatoriedade a função rand, o resultado pode ser conferido no código a seguir: <syntaxhighlight lang=c> | ||
+ | #include <stdlib.h> | ||
+ | #include <time.h> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int main(void) { | ||
+ | |||
+ | srand( (unsigned)time(NULL) ); | ||
+ | printf("Numero gerado: %d\n", rand() % 10); //Gera números que variam de 0 a 9 | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | {{collapse top | Tabela ASCII}} | ||
+ | *Os computadores armazenam todos os tipos de dados na forma numérica, incluindo letras. Para apresentar textos em tela neste caso o programa em C precisa conhecer o tipo de dado que está escrito em memória, sendo um dado do tipo caractere (ou string) ele será então tratado como uma letra. O conjunto de letras, números e símbolos imprimíveis está sintetizado na tabela ASCII. | ||
+ | **Para ver a tabela, acesse o link [http://www.ascii-code.com/ Tabela ASCII] | ||
+ | **Observe que as letras maiúsculas variam de 65 ('A') até 90 ('Z') | ||
+ | **Observe também que as letras minúsculas estão em outra faixa, variam de 97 ('a') até 122 ('z') | ||
+ | **Os números imprimíveis também tem seus representantes, variam de 48 ('0') a 57 ('9') | ||
+ | **Caracteres especiais como '$', '%', '*', '+' também estão relacionados na tabela | ||
+ | **A tabela também apresenta códigos de caracteres não imprimíveis como o 9 (TAB), 13 ('\r' presente no ENTER) | ||
+ | **Para representações de outros caracteres pode ser necessário acessar a extensão da tabela ASCII, podendo-se obter 'Ç' e caracteres acentuados | ||
+ | **A tabela que está sendo apresentada esta em acordo com o padrão ISO 8859-1 e Microsoft® Windows Latin-1, outros caracteres podem ainda ser obtidos se alterado o padrão de codificação | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | Vetor de tamanho variável}} | ||
+ | O vetor de tamanho variável (variable lenght array) é um recurso do C que permite que o tamanho do vetor seja definido em tempo de execução. Na prática o C irá alocar uma quantidade de memória que não precisa estar definida antes da execução. | ||
+ | [https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Variable-Length.html variable-lenght] | ||
{{collapse bottom}} | {{collapse bottom}} | ||
Edição das 17h07min de 6 de abril de 2017
Dados importantes
- Professor da Disciplina: Cleber Jorge Amaral
- Email: cleber.amaral@ifsc.edu.br
- Atendimento paralelo: terças e quintas das 12:00 as 13:00 na Sala Multimeios de Tele (ao lado da reprografia)
- Agenda do professor: Ver página
Dados da Disciplina
- Ementa da disciplina na wiki: Engenharia de Telecomunicações 2ª Fase
- Página no moodle: moodle
- Monitoria: Programa_de_monitoria_dos_cursos_superiores_de_Telecomunicações
Diário de aula
Introdução aos algoritmos utilizando fluxograma
Introdução aos algoritmos utilizando fluxograma |
---|
|
Desenvolvendo algoritmos na forma de fluxogramas
Desenvolvendo algoritmos na forma de fluxogramas |
---|
Exercícios para resolver em sala de aula:
|
Pseudo-código
Pseudo-código utilizando Portugol - Introdução e condicionais
- Slides sobre pseudocódigo disponibilizados no moodle.
Ver exemplos de códigos Portugol dentro do software portugol (menu Arquivo->Abrir exemplo)
Pseudo-código utilizando Portugol - repetições
Exercícios - Pseudocodigo (série 1) |
---|
Exercícios - Pseudocodigo (série 1):
|
Exercícios - Pseudocodigo (série 2) |
---|
Exercícios - Pseudocpodigo (série 2):
Exercícios complementares:
|
Pseudo-código utilizando Portugol - sub-rotinas e registros
Exercícios - Pseudocodigo (série 3) |
---|
Exercícios - Pseudocodigo (série 3):
Parte da implementação do problema das funções trigonométricas
|
Introdução ao C
Introdução ao C e funções de saída e entrada de dados |
---|
|
Controle de fluxo em C
Condicionais em C |
---|
|
Exercícios - C (série 0) |
---|
|
Estruturas de repetição em C |
---|
|
Exercícios - C (série 1) |
---|
|
Funções
Funções |
---|
|
A função main |
---|
O programa inicia pela primeira instrução contida na função main() e também se encerra na última instrução. O retorno padrão da função main é um int que representa um código de erros reconhecidos por muitos sistemas operacionais. Se o programa terminou sua execução corretamente o retorno deverá ser 0 (zero). int main(void)
{
//Programa
return 0;
}
|
A função exit |
---|
Uma alternativa a terminação do programa chegando ao fim da função main é a função exit da biblioteca <stdlib.h>. Para esta função deve-se passar um argumento inteiro que tem o mesmo significado do código de retorno da função main, portanto exit(0) representa uma terminação normal, alternativamente exit(EXIT_SUCCESS). Para representar uma terminação anormal pode-se utilizar exit(EXIT_FAILURE) ou exit(1). Há outros códigos de erro (ver [http://tldp.org/LDP/abs/html/exitcodes.html aqui) porém são pouco usuais, no geral o que se pretende é saber apenas se a operação do programa terminou de forma bem sucedida ou não. |
Vetores e matrizes em C
Vetores e matrizes em C |
---|
char nome_da_string [tamanho];
|
Execícios de vetores em C |
---|
|
Gerando números pseudo-aleatórios |
---|
|
Tabela ASCII |
---|
|
Vetor de tamanho variável |
---|
O vetor de tamanho variável (variable lenght array) é um recurso do C que permite que o tamanho do vetor seja definido em tempo de execução. Na prática o C irá alocar uma quantidade de memória que não precisa estar definida antes da execução. variable-lenght |
Referências
Referências bibliográficas |
---|
|
Plano de aula
Cronograma | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Conceitos
Ver moodle da disciplina.